Repository: Andy10101/ApkDetecter Branch: master Commit: 70db31d5ccf6 Files: 258 Total size: 8.6 MB Directory structure: gitextract_u287gwvh/ ├── .gitignore ├── AnalysisCSN/ │ ├── CSN.py │ └── __init__.py ├── AnalysisDEX/ │ ├── InitDEX.py │ └── __init__.py ├── AnalysisXML/ │ ├── AXML.py │ └── __init__.py ├── ApkDetecter.py ├── ApkDetecter.pyw ├── ApkDetecter.spec ├── CheckProtect.py ├── GUI/ │ ├── AppInfoWidget.py │ ├── MainForm.py │ ├── StyleSheet.py │ ├── __init__.py │ ├── apkdetecter_ui.ui │ ├── apkinfo_ui.ui │ └── dexinfor_ui.ui ├── LICENSE.txt ├── README.md ├── Resources/ │ ├── AppIcon.icns │ └── signatures.json ├── __init__.py ├── build_mac.sh ├── build_windows.bat ├── core/ │ ├── ApkAnalyzer.py │ ├── DeepScanner.py │ ├── IpaAnalyzer.py │ └── __init__.py ├── libs/ │ ├── androguard/ │ │ ├── __init__.py │ │ ├── cli/ │ │ │ ├── __init__.py │ │ │ ├── cli.py │ │ │ └── main.py │ │ ├── core/ │ │ │ ├── __init__.py │ │ │ ├── analysis/ │ │ │ │ ├── __init__.py │ │ │ │ └── analysis.py │ │ │ ├── androconf.py │ │ │ ├── api_specific_resources/ │ │ │ │ ├── __init__.py │ │ │ │ ├── aosp_permissions/ │ │ │ │ │ ├── permissions_10.json │ │ │ │ │ ├── permissions_13.json │ │ │ │ │ ├── permissions_14.json │ │ │ │ │ ├── permissions_15.json │ │ │ │ │ ├── permissions_16.json │ │ │ │ │ ├── permissions_17.json │ │ │ │ │ ├── permissions_18.json │ │ │ │ │ ├── permissions_19.json │ │ │ │ │ ├── permissions_21.json │ │ │ │ │ ├── permissions_22.json │ │ │ │ │ ├── permissions_23.json │ │ │ │ │ ├── permissions_24.json │ │ │ │ │ ├── permissions_25.json │ │ │ │ │ ├── permissions_26.json │ │ │ │ │ ├── permissions_27.json │ │ │ │ │ ├── permissions_28.json │ │ │ │ │ ├── permissions_29.json │ │ │ │ │ ├── permissions_30.json │ │ │ │ │ ├── permissions_31.json │ │ │ │ │ ├── permissions_32.json │ │ │ │ │ ├── permissions_33.json │ │ │ │ │ ├── permissions_34.json │ │ │ │ │ ├── permissions_4.json │ │ │ │ │ ├── permissions_5.json │ │ │ │ │ ├── permissions_6.json │ │ │ │ │ ├── permissions_7.json │ │ │ │ │ ├── permissions_8.json │ │ │ │ │ └── permissions_9.json │ │ │ │ └── api_permission_mappings/ │ │ │ │ ├── permissions_16.json │ │ │ │ ├── permissions_17.json │ │ │ │ ├── permissions_18.json │ │ │ │ ├── permissions_19.json │ │ │ │ ├── permissions_21.json │ │ │ │ ├── permissions_22.json │ │ │ │ ├── permissions_23.json │ │ │ │ ├── permissions_24.json │ │ │ │ └── permissions_25.json │ │ │ ├── apk/ │ │ │ │ └── __init__.py │ │ │ ├── axml/ │ │ │ │ ├── __init__.py │ │ │ │ └── types.py │ │ │ ├── bytecode.py │ │ │ ├── dex/ │ │ │ │ ├── __init__.py │ │ │ │ └── dex_types.py │ │ │ ├── mutf8/ │ │ │ │ └── __init__.py │ │ │ └── resources/ │ │ │ ├── __init__.py │ │ │ ├── public.json │ │ │ ├── public.py │ │ │ └── public.xml │ │ ├── decompiler/ │ │ │ ├── __init__.py │ │ │ ├── basic_blocks.py │ │ │ ├── control_flow.py │ │ │ ├── dast.py │ │ │ ├── dataflow.py │ │ │ ├── decompile.py │ │ │ ├── decompiler.py │ │ │ ├── graph.py │ │ │ ├── instruction.py │ │ │ ├── node.py │ │ │ ├── opcode_ins.py │ │ │ ├── util.py │ │ │ └── writer.py │ │ ├── misc.py │ │ ├── pentest/ │ │ │ ├── __init__.py │ │ │ ├── adb.py │ │ │ ├── internal/ │ │ │ │ └── utils.js │ │ │ └── modules/ │ │ │ ├── binder/ │ │ │ │ └── intercept_binder.js │ │ │ ├── code_loading/ │ │ │ │ ├── dex.js │ │ │ │ ├── dyndex.js │ │ │ │ ├── load_class.js │ │ │ │ └── native.js │ │ │ ├── compression/ │ │ │ │ └── gzip.js │ │ │ ├── encoding/ │ │ │ │ └── base64.js │ │ │ ├── encryption/ │ │ │ │ ├── cipher.js │ │ │ │ └── keystore.js │ │ │ ├── file_system/ │ │ │ │ └── shared_preferences.js │ │ │ ├── framework/ │ │ │ │ ├── cordova.js │ │ │ │ └── flutter/ │ │ │ │ ├── disable_cert_chain_bypass_v7a.js │ │ │ │ ├── disable_cert_chain_bypass_v8a.js │ │ │ │ └── disable_cert_chain_bypass_x86_64.js │ │ │ ├── helpers/ │ │ │ │ ├── antidebug/ │ │ │ │ │ ├── binaries.js │ │ │ │ │ ├── debug.js │ │ │ │ │ ├── environment.js │ │ │ │ │ ├── package.js │ │ │ │ │ └── process.js │ │ │ │ ├── dump/ │ │ │ │ │ └── dexdump.js │ │ │ │ └── pinning/ │ │ │ │ └── ssl.js │ │ │ ├── http_communications/ │ │ │ │ └── uri.js │ │ │ ├── intents/ │ │ │ │ ├── intents.js │ │ │ │ ├── intents_creation.js │ │ │ │ └── pending_intents.js │ │ │ ├── ipc/ │ │ │ │ └── ipc.js │ │ │ ├── preferences/ │ │ │ │ └── preferences.js │ │ │ ├── sockets/ │ │ │ │ └── sockets.js │ │ │ └── webviews/ │ │ │ └── webviews.js │ │ ├── session.py │ │ ├── ui/ │ │ │ ├── __init__.py │ │ │ ├── data_types.py │ │ │ ├── filter.py │ │ │ ├── selection.py │ │ │ ├── table.py │ │ │ ├── util.py │ │ │ └── widget/ │ │ │ ├── __init__.py │ │ │ ├── details.py │ │ │ ├── filters.py │ │ │ ├── frame.py │ │ │ ├── help.py │ │ │ ├── toolbar.py │ │ │ └── transactions.py │ │ └── util.py │ ├── apkInspector/ │ │ ├── __init__.py │ │ ├── axml.py │ │ ├── extract.py │ │ ├── headers.py │ │ ├── helpers.py │ │ └── indicators.py │ ├── apkInspectorCLI/ │ │ ├── __init__.py │ │ └── main.py │ ├── apkinspector-1.3.6.dist-info/ │ │ ├── METADATA │ │ ├── RECORD │ │ ├── WHEEL │ │ ├── entry_points.txt │ │ └── licenses/ │ │ └── LICENSE │ ├── asn1crypto/ │ │ ├── __init__.py │ │ ├── _errors.py │ │ ├── _inet.py │ │ ├── _int.py │ │ ├── _iri.py │ │ ├── _ordereddict.py │ │ ├── _teletex_codec.py │ │ ├── _types.py │ │ ├── algos.py │ │ ├── cms.py │ │ ├── core.py │ │ ├── crl.py │ │ ├── csr.py │ │ ├── keys.py │ │ ├── ocsp.py │ │ ├── parser.py │ │ ├── pdf.py │ │ ├── pem.py │ │ ├── pkcs12.py │ │ ├── tsp.py │ │ ├── util.py │ │ ├── version.py │ │ └── x509.py │ ├── asn1crypto-1.5.1.dist-info/ │ │ ├── LICENSE │ │ ├── METADATA │ │ ├── RECORD │ │ ├── WHEEL │ │ └── top_level.txt │ ├── click/ │ │ ├── __init__.py │ │ ├── _compat.py │ │ ├── _termui_impl.py │ │ ├── _textwrap.py │ │ ├── _winconsole.py │ │ ├── core.py │ │ ├── decorators.py │ │ ├── exceptions.py │ │ ├── formatting.py │ │ ├── globals.py │ │ ├── parser.py │ │ ├── py.typed │ │ ├── shell_completion.py │ │ ├── termui.py │ │ ├── testing.py │ │ ├── types.py │ │ └── utils.py │ ├── click-8.1.8.dist-info/ │ │ ├── LICENSE.txt │ │ ├── METADATA │ │ ├── RECORD │ │ └── WHEEL │ ├── colorama/ │ │ ├── __init__.py │ │ ├── ansi.py │ │ ├── ansitowin32.py │ │ ├── initialise.py │ │ ├── tests/ │ │ │ ├── __init__.py │ │ │ ├── ansi_test.py │ │ │ ├── ansitowin32_test.py │ │ │ ├── initialise_test.py │ │ │ ├── isatty_test.py │ │ │ ├── utils.py │ │ │ └── winterm_test.py │ │ ├── win32.py │ │ └── winterm.py │ ├── colorama-0.4.6.dist-info/ │ │ ├── METADATA │ │ ├── RECORD │ │ ├── WHEEL │ │ └── licenses/ │ │ └── LICENSE.txt │ ├── loguru/ │ │ ├── __init__.py │ │ ├── __init__.pyi │ │ ├── _asyncio_loop.py │ │ ├── _better_exceptions.py │ │ ├── _colorama.py │ │ ├── _colorizer.py │ │ ├── _contextvars.py │ │ ├── _ctime_functions.py │ │ ├── _datetime.py │ │ ├── _defaults.py │ │ ├── _error_interceptor.py │ │ ├── _file_sink.py │ │ ├── _filters.py │ │ ├── _get_frame.py │ │ ├── _handler.py │ │ ├── _locks_machinery.py │ │ ├── _logger.py │ │ ├── _recattrs.py │ │ ├── _simple_sinks.py │ │ ├── _string_parsers.py │ │ └── py.typed │ ├── loguru-0.7.3.dist-info/ │ │ ├── METADATA │ │ ├── RECORD │ │ └── WHEEL │ ├── mutf8/ │ │ ├── __init__.py │ │ └── mutf8.py │ └── mutf8-1.0.6.dist-info/ │ ├── LICENCE │ ├── METADATA │ ├── RECORD │ ├── WHEEL │ └── top_level.txt └── requirements.txt ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Python __pycache__/ *.py[cod] *$py.class # Distribution / Packaging build/ dist/ *.egg-info/ .eggs/ # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ # macOS .DS_Store # IDEs .idea/ .vscode/ *.swp ================================================ FILE: AnalysisCSN/CSN.py ================================================ # -*- coding: utf-8 -*- __author__ = 'Andy' class CSN: def __init__(self, apk_obj): self.apk = apk_obj self.certs = [] try: # androguard 3.3.5+ returns x509 objects self.certs = list(self.apk.get_certificates()) except Exception as e: print(f"Error getting certificates: {e}") self.cert = self.certs[0] if self.certs else None def get_size(self): try: for f in self.apk.get_files(): if f.endswith('.RSA') or f.endswith('.DSA') or f.endswith('.EC'): # get_file returns bytes return str(len(self.apk.get_file(f))) except: pass return "0" def getCertificateSN(self): if not self.cert: return "" try: return format(self.cert.serial_number, 'x').lower() except: return "" def getCertificateIDN(self): if not self.cert: return "" try: # Use rfc4514_string for standard string representation # It returns comma separated values like CN=Name,C=US return self.cert.issuer.rfc4514_string() except: return str(self.cert.issuer) def getCertificateSDN(self): if not self.cert: return "" try: return self.cert.subject.rfc4514_string() except: return str(self.cert.subject) ================================================ FILE: AnalysisCSN/__init__.py ================================================ __author__ = 'Andy' ================================================ FILE: AnalysisDEX/InitDEX.py ================================================ # -*- coding: utf-8 -*- __author__ = 'Andy' from androguard.core.dex import DEX class InitDEX: def __init__(self, apk_obj): self.apk = apk_obj self.dexheader = {} def getDexInfo(self): self.dexheader = {} try: # Get the first dex file # androguard returns bytes, so we need to wrap it in DEX object dex_files = list(self.apk.get_all_dex()) if not dex_files: return {} d = DEX(dex_files[0]) # Helper to format values def fmt(val): if val is None: return "" if isinstance(val, int): return "%X" % val if isinstance(val, bytes): return val.hex().upper() return str(val) h = d.header # Use getattr to be safe with different androguard versions, or assume standard fields self.dexheader["header_magic"] = fmt(getattr(h, "magic", b"")) self.dexheader["header_checksum"] = fmt(getattr(h, "checksum", 0)) self.dexheader["header_signature"] = fmt(getattr(h, "signature", b"")) self.dexheader["header_fileSize"] = fmt(getattr(h, "file_size", 0)) self.dexheader["header_headerSize"] = fmt(getattr(h, "header_size", 0)) self.dexheader["header_endianTag"] = fmt(getattr(h, "endian_tag", 0)) self.dexheader["header_linkSize"] = fmt(getattr(h, "link_size", 0)) self.dexheader["header_linkOff"] = fmt(getattr(h, "link_off", 0)) self.dexheader["header_mapOff"] = fmt(getattr(h, "map_off", 0)) self.dexheader["header_stringIdsSize"] = fmt(getattr(h, "string_ids_size", 0)) self.dexheader["header_stringIdsOff"] = fmt(getattr(h, "string_ids_off", 0)) self.dexheader["header_typeIdsSize"] = fmt(getattr(h, "type_ids_size", 0)) self.dexheader["header_typeIdsOff"] = fmt(getattr(h, "type_ids_off", 0)) self.dexheader["header_protoIdsSize"] = fmt(getattr(h, "proto_ids_size", 0)) self.dexheader["header_protoIdsOff"] = fmt(getattr(h, "proto_ids_off", 0)) self.dexheader["header_fieldIdsSize"] = fmt(getattr(h, "field_ids_size", 0)) self.dexheader["header_fieldIdsOff"] = fmt(getattr(h, "field_ids_off", 0)) self.dexheader["header_methodIdsSize"] = fmt(getattr(h, "method_ids_size", 0)) self.dexheader["header_methodIdsOff"] = fmt(getattr(h, "method_ids_off", 0)) self.dexheader["header_classDefsSize"] = fmt(getattr(h, "class_defs_size", 0)) self.dexheader["header_classDefsOff"] = fmt(getattr(h, "class_defs_off", 0)) self.dexheader["header_dataSize"] = fmt(getattr(h, "data_size", 0)) self.dexheader["header_dataOff"] = fmt(getattr(h, "data_off", 0)) except Exception as e: print(f"Error getting DEX info: {e}") import traceback traceback.print_exc() return self.dexheader ================================================ FILE: AnalysisDEX/__init__.py ================================================ __author__ = 'Andy' ================================================ FILE: AnalysisXML/AXML.py ================================================ # -*- coding: utf-8 -*- __author__ = 'Andy' MIN_SDK_VERSION = { "1": "Android 1.0", "2": "Android 1.1", "3": "Android 1.5", "4": "Android 1.6", "5": "Android 2.0", "6": "Android 2.0.1", "7": "Android 2.1-update1", "8": "Android 2.2", "9": "Android 2.3 - 2.3.2", "10": "Android 2.3.3 - 2.3.4", "11": "Android 3.0", "12": "Android 3.1", "13": "Android 3.2", "14": "Android 4.0.0 - 4.0.2", "15": "Android 4.0.3 - 4.0.4", "16": "Android 4.1 - 4.1.1", "17": "Android 4.2 - 4.2.2", "18": "Android 4.3", "19": "Android 4.4", "20": "Android 4.4W", "21": "Android 5.0", "22": "Android 5.1", "23": "Android 6.0", "24": "Android 7.0", "25": "Android 7.1", "26": "Android 8.0", "27": "Android 8.1", "28": "Android 9", "29": "Android 10", "30": "Android 11", "31": "Android 12", "32": "Android 12L", "33": "Android 13", "34": "Android 14", } RISK_PERMISSION = { "android.permission.SEND_SMS": "可无提示直接发送短信", "android.permission.RECEIVE_SMS": "可监控短信接收", "android.permission.CALL_PRIVILEGED": "可无提示直接拨打电话", "android.permission.INTERNET": "具有完全的互联网访问权限", "android.permission.READ_CONTACTS": "可读取联系人信息", "android.permission.WRITE_CONTACTS": "可修改联系人信息", "android.permission.CHANGE_WIFI_STATE": "可修改手机当前WIFI设置", "android.permission.WRITE_EXTERNAL_STORAGE": "可对存储卡进行读写操作", "com.android.launcher.permission.INSTALL_SHORTCUT": "可创建程序快捷方式", "android.permission.READ_PHONE_STATE": "可读取手机状态和身份", "android.permission.INSTALL_PACKAGES": "可安装其它程序", "android.permission.READ_SMS": "读取短信或彩信", "android.permission.WRITE_SMS": "编辑短信或彩信", "android.permission.RESTART_PACKAGES": "重启应用程序", "android.permission.CALL_PHONE": "直接拨打电话", "android.permission.ACCESS_COARSE_LOCATION": "可获取当前粗略位置信息", "android.permission.ACCESS_FINE_LOCATION": "可获取当前精确位置信息", } class AXML: def __init__(self, apk_obj): self.apk = apk_obj def get_package(self): return self.apk.get_package() def get_androidversion_name(self): return self.apk.get_androidversion_name() def get_androidversion_code(self): return self.apk.get_androidversion_code() def getMinSdkVersion(self): min_sdk = self.apk.get_min_sdk_version() if min_sdk: return MIN_SDK_VERSION.get(str(min_sdk), str(min_sdk)) return "None" def getRiskPermission(self): permissions = self.apk.get_permissions() risk_perms = [] if not permissions: return ["该程序未发现含有权限"] for p in permissions: if p in RISK_PERMISSION: desc = RISK_PERMISSION[p] if desc not in risk_perms: risk_perms.append(desc) if risk_perms: return risk_perms else: return ["该程序未发现含有风险权限"] ================================================ FILE: AnalysisXML/__init__.py ================================================ __author__ = 'Andy' ================================================ FILE: ApkDetecter.py ================================================ # -*- coding: utf-8 -*- __author__ = 'Andy' import sys import os import platform import ctypes # === FIX FOR PYINSTALLER NOCONSOLE === # Some libraries (like androguard) try to write to stdout/stderr even if it's None. # We redirect them to a dummy writer if they are None. class NullWriter: def write(self, text): pass def flush(self): pass def isatty(self): return False if sys.stdout is None: sys.stdout = NullWriter() if sys.stderr is None: sys.stderr = NullWriter() # ===================================== # Add libs to path sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'libs')) from PyQt5 import QtWidgets, QtGui, QtCore # from GUI import StyleSheet <-- REMOVED from GUI.MainForm import MainForm # === INLINED STYLESHEET TO AVOID IMPORT ERRORS === QSS_COMMON = """ /* General Window */ QMainWindow, QDialog, QWidget { background-color: #2b2b2b; color: #e0e0e0; font-family: "Segoe UI", "Arial", sans-serif; } /* GroupBox */ QGroupBox { border: 1px solid #3d3d3d; border-radius: 6px; margin-top: 24px; font-weight: bold; color: #e0e0e0; } QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top left; left: 10px; padding: 0 5px; color: #4da6ff; /* Blue accent */ } /* Labels */ QLabel { color: #cccccc; } /* TextBrowser / TextEdit / LineEdit */ QTextBrowser, QTextEdit, QLineEdit { background-color: #363636; border: 1px solid #3d3d3d; border-radius: 4px; color: #ffffff; selection-background-color: #4da6ff; } QTextBrowser:disabled, QTextEdit:disabled { background-color: #2f2f2f; color: #909090; border: 1px solid #333333; } /* Push Buttons */ QPushButton { background-color: #3a3a3a; border: 1px solid #4a4a4a; border-radius: 4px; color: #e0e0e0; padding: 4px 12px; min-height: 20px; } QPushButton:hover { background-color: #4a4a4a; border: 1px solid #5a5a5a; } QPushButton:pressed { background-color: #2a2a2a; } QPushButton#file_open { background-color: #007acc; color: white; border: 1px solid #005c99; } QPushButton#file_open:hover { background-color: #008ae6; } QPushButton#file_open:pressed { background-color: #005c99; } /* Progress Bar */ QProgressBar { border: 1px solid #3d3d3d; border-radius: 4px; background-color: #363636; text-align: center; color: #e0e0e0; } QProgressBar::chunk { background-color: #007acc; border-radius: 3px; } /* ScrollBars */ QScrollBar:vertical { border: none; background: #2b2b2b; width: 10px; margin: 0px 0px 0px 0px; } QScrollBar::handle:vertical { background: #505050; min-height: 20px; border-radius: 5px; } QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0px; } QScrollBar:horizontal { border: none; background: #2b2b2b; height: 10px; margin: 0px 0px 0px 0px; } QScrollBar::handle:horizontal { background: #505050; min-width: 20px; border-radius: 5px; } QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { width: 0px; } """ QSS_WIN_OVERRIDES = """ /* Windows Specific Overrides for High DPI / Readability */ QMainWindow, QDialog, QWidget { font-size: 24px; } QGroupBox { font-size: 26px; margin-top: 36px; } QGroupBox::title { top: -24px; left: 10px; } QLabel { font-size: 24px; } QTextBrowser, QTextEdit, QLineEdit { font-size: 24px; padding: 10px; } QPushButton { padding: 8px 20px; min-height: 32px; } QScrollBar:vertical { width: 20px; } QScrollBar:horizontal { height: 20px; } """ QSS_MAC_OVERRIDES = """ /* macOS Specific Overrides */ QLabel { font-size: 12px; } /* Other defaults are usually fine on Mac */ """ if platform.system() == "Windows": GLOBAL_QSS = QSS_COMMON + QSS_WIN_OVERRIDES else: # Default to Mac/Linux style GLOBAL_QSS = QSS_COMMON + QSS_MAC_OVERRIDES # =============================================== def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path) if __name__ == "__main__": # Fix for Windows Taskbar Icon if platform.system() == 'Windows': try: # Set AppUserModelID to ensure the taskbar icon is displayed correctly myappid = 'mycompany.myproduct.subproduct.version' # Arbitrary string ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) except Exception as e: pass app = QtWidgets.QApplication(sys.argv) # Set Style app.setStyle("Fusion") app.setStyleSheet(GLOBAL_QSS) # Set Application Icon (Global) logo_path = resource_path(os.path.join('Resources', 'logo.png')) if os.path.exists(logo_path): # Windows: Load icon directly (Best for Taskbar/Titlebar) if platform.system() == 'Windows': # Windows: Load the large icon directly. # We avoid adding small sizes manually to prevent Windows from picking a low-res version. app.setWindowIcon(QtGui.QIcon(logo_path)) else: # macOS/Linux: Use padding/scaling logic (Original logic) original_pixmap = QtGui.QPixmap(logo_path) if not original_pixmap.isNull(): # Create a square canvas (transparent) size = 1024 padded_pixmap = QtGui.QPixmap(size, size) padded_pixmap.fill(QtCore.Qt.transparent) # Calculate padding (scale to 80% of the canvas) scale_factor = 0.8 new_w = int(size * scale_factor) new_h = int(size * scale_factor) x = (size - new_w) // 2 y = (size - new_h) // 2 painter = QtGui.QPainter(padded_pixmap) painter.setRenderHint(QtGui.QPainter.SmoothPixmapTransform) painter.setRenderHint(QtGui.QPainter.Antialiasing) painter.drawPixmap(x, y, new_w, new_h, original_pixmap) painter.end() app.setWindowIcon(QtGui.QIcon(padded_pixmap)) # For macOS Dock icon (sometimes requires this specific call or packaging) try: # This is a workaround for Python not being a bundled app on macOS pass except: pass # Main Window myapp = MainForm() myapp.show() sys.exit(app.exec_()) ================================================ FILE: ApkDetecter.pyw ================================================ # -*- coding: utf-8 -*- __author__ = 'Andy' import sys import os # Add libs to path sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'libs')) from PyQt5 import QtWidgets import StyleSheet from GUI.MainForm import MainForm if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) # Set Style app.setStyle("Fusion") app.setStyleSheet(StyleSheet.QSS) # Main Window myapp = MainForm() myapp.show() sys.exit(app.exec_()) ================================================ FILE: ApkDetecter.spec ================================================ # -*- mode: python ; coding: utf-8 -*- block_cipher = None import os import sys # Ensure libs path is included sys.path.insert(0, os.path.abspath('libs')) a = Analysis( ['ApkDetecter.py'], pathex=['.'], binaries=[], datas=[ ('Resources', 'Resources'), ('libs', 'libs'), ('Core', 'Core'), ('GUI', 'GUI'), ('AnalysisCSN', 'AnalysisCSN'), ('AnalysisDEX', 'AnalysisDEX'), ('AnalysisXML', 'AnalysisXML'), ], hiddenimports=[ 'PyQt5', 'cryptography', 'asn1crypto', 'androguard', 'click', 'colorama', 'loguru', 'xml.etree.ElementTree', 'zipfile' ], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], cipher=block_cipher, noarchive=False, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE( pyz, a.scripts, [], exclude_binaries=True, name='ApkDetecter', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, console=False, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon='Resources/logo.png' ) coll = COLLECT( exe, a.binaries, a.zipfiles, a.datas, strip=False, upx=True, upx_exclude=[], name='ApkDetecter', ) app = BUNDLE( coll, name='ApkDetecter.app', icon='Resources/AppIcon.icns', bundle_identifier='com.apkdetecter.app', info_plist={ 'NSHighResolutionCapable': 'True', 'CFBundleShortVersionString': '1.0.0', 'CFBundleVersion': '1.0.0', }, ) ================================================ FILE: CheckProtect.py ================================================ # -*- coding: utf-8 -*- __author__ = 'Andy' import json import os from androguard.core.apk import APK class CheckProtect: def __init__(self, apk_obj): """ :param apk_obj: androguard.core.apk.APK object """ self.apk = apk_obj self.signatures = [] self._load_signatures() def _load_signatures(self): """ Load signatures from Resources/signatures.json """ try: base_dir = os.path.dirname(os.path.abspath(__file__)) json_path = os.path.join(base_dir, 'Resources', 'signatures.json') if os.path.exists(json_path): with open(json_path, 'r', encoding='utf-8') as f: data = json.load(f) self.signatures = data.get('signatures', []) else: # Fallback if file not found (though it should be there) print(f"Warning: Signature file not found at {json_path}") except Exception as e: print(f"Error loading signatures: {e}") def check_protectflag(self): detected_protectors = set() files = self.apk.get_files() # Pre-process files for faster matching # file_set: just filenames (e.g., "libjiagu.so") file_set = set() # path_set: full paths (e.g., "assets/libjiagu.so") path_set = set(files) for f in files: # Extract basename if '/' in f: basename = f.split('/')[-1] else: basename = f file_set.add(basename) for signature in self.signatures: name = signature['name'] rules = signature.get('rules', []) match_found = False for rule in rules: rule_type = rule.get('type', 'file') if rule_type == 'combined': # All conditions must be met conditions = rule.get('conditions', []) all_conditions_met = True for cond in conditions: if not self._check_rule(cond, file_set, path_set): all_conditions_met = False break if all_conditions_met: match_found = True break else: # Single rule if self._check_rule(rule, file_set, path_set): match_found = True break if match_found: detected_protectors.add(name) if detected_protectors: # Format: "该APK已加固=>360加固 腾讯加固" return "该APK已加固=>" + " ".join(sorted(detected_protectors)) return "该APK未加密" def _check_rule(self, rule, file_set, path_set): rule_type = rule.get('type', 'file') pattern = rule.get('pattern', '') match_mode = rule.get('match', 'exact') # exact, startswith, endswith, contains target_set = file_set if rule_type == 'file' else path_set # Optimization for exact match on file set if rule_type == 'file' and match_mode == 'exact': return pattern in target_set # For other cases, iterate for item in target_set: if match_mode == 'exact': if item == pattern: return True elif match_mode == 'startswith': if item.startswith(pattern): return True elif match_mode == 'endswith': if item.endswith(pattern): return True elif match_mode == 'contains': if pattern in item: return True return False ================================================ FILE: GUI/AppInfoWidget.py ================================================ from PyQt5 import QtWidgets, QtCore, QtGui import os import platform class AppInfoWidget(QtWidgets.QWidget): def __init__(self, parent=None): super(AppInfoWidget, self).__init__(parent) self.init_ui() def init_ui(self): self.layout = QtWidgets.QVBoxLayout(self) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(10) # Header Section self.header_frame = QtWidgets.QFrame() self.header_frame.setObjectName("HeaderFrame") self.header_layout = QtWidgets.QHBoxLayout(self.header_frame) self.header_layout.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) # Align Top self.header_layout.setSpacing(20) # Icon self.icon_label = QtWidgets.QLabel() self.icon_label.setFixedSize(125, 125) self.icon_label.setAlignment(QtCore.Qt.AlignCenter) self.icon_label.setStyleSheet("background-color: #333; border-radius: 10px;") # Info Block self.title_info_layout = QtWidgets.QVBoxLayout() self.title_info_layout.setAlignment(QtCore.Qt.AlignTop) # Also Align Top self.title_info_layout.setSpacing(5) self.title_info_layout.setContentsMargins(0, 5, 0, 0) # Platform specific font sizes if platform.system() == 'Windows': name_size = "30px" pkg_size = "29px" else: name_size = "18px" pkg_size = "14px" self.app_name_label = QtWidgets.QLabel("App Name") self.app_name_label.setStyleSheet(f"font-size: {name_size}; font-weight: bold; color: #fff;") self.package_label = QtWidgets.QLabel("com.example.app") self.package_label.setStyleSheet(f"color: #aaa; font-size: {pkg_size};") self.version_label = QtWidgets.QLabel("v1.0.0") self.version_label.setStyleSheet("color: #4da6ff; font-weight: bold;") self.title_info_layout.addWidget(self.app_name_label) self.title_info_layout.addWidget(self.package_label) self.title_info_layout.addWidget(self.version_label) self.header_layout.addWidget(self.icon_label) self.header_layout.addLayout(self.title_info_layout) self.header_layout.addStretch() self.layout.addWidget(self.header_frame) # Tabs self.tabs = QtWidgets.QTabWidget() self.layout.addWidget(self.tabs) # Tab 1: Basic Info self.tab_basic = QtWidgets.QWidget() self.tabs.addTab(self.tab_basic, "Basic Info") self.init_basic_tab() # Tab 2: Permissions (Was Advanced Info) self.tab_perms = QtWidgets.QWidget() self.tabs.addTab(self.tab_perms, "Permissions & Entitlements") self.init_perms_tab() # Tab 3: Components (Dynamic) self.tab_components = QtWidgets.QTextEdit() self.tab_components.setReadOnly(True) self.tabs.addTab(self.tab_components, "Components") def init_basic_tab(self): # Using a ScrollArea because Cert info can be long self.basic_scroll = QtWidgets.QScrollArea(self.tab_basic) self.basic_scroll.setWidgetResizable(True) self.basic_scroll.setFrameShape(QtWidgets.QFrame.NoFrame) # Main Layout for Tab (holds ScrollArea) tab_layout = QtWidgets.QVBoxLayout(self.tab_basic) tab_layout.setContentsMargins(0,0,0,0) tab_layout.addWidget(self.basic_scroll) # Content Widget inside ScrollArea self.basic_content = QtWidgets.QWidget() self.basic_scroll.setWidget(self.basic_content) layout = QtWidgets.QVBoxLayout(self.basic_content) layout.setAlignment(QtCore.Qt.AlignTop) layout.setSpacing(15) # --- Grid for key-value pairs --- self.grid_widget = QtWidgets.QWidget() grid_layout = QtWidgets.QGridLayout(self.grid_widget) grid_layout.setContentsMargins(0,0,0,0) self.basic_labels = {} keys = [ ("Size", "size"), ("MD5", "md5"), ("Min SDK / OS", "min_sdk"), ("Target SDK", "target_sdk"), ("Protection", "protect") ] row = 0 for label_text, key in keys: lbl = QtWidgets.QLabel(label_text + ":") lbl.setStyleSheet("color: #ccc; font-weight: bold;") val = QtWidgets.QLineEdit() val.setReadOnly(True) val.setObjectName(f"val_{key}") grid_layout.addWidget(lbl, row, 0) grid_layout.addWidget(val, row, 1) self.basic_labels[key] = val row += 1 layout.addWidget(self.grid_widget) # --- Certificate / Provisioning Info Section --- self.cert_label = QtWidgets.QLabel("Certificate / Signature Info") if platform.system() == 'Windows': cert_size = "26px" else: cert_size = "16px" self.cert_label.setStyleSheet(f"font-size: {cert_size}; font-weight: bold; color: #4da6ff; margin-top: 20px; margin-bottom: 5px;") layout.addWidget(self.cert_label) self.cert_text = QtWidgets.QTextEdit() self.cert_text.setReadOnly(True) # Allow it to expand self.cert_text.setMinimumHeight(200) layout.addWidget(self.cert_text) def init_perms_tab(self): layout = QtWidgets.QVBoxLayout(self.tab_perms) self.perms_text = QtWidgets.QTextEdit() self.perms_text.setReadOnly(True) layout.addWidget(self.perms_text) def update_data(self, analyzer_type, analyzer): # Update Header info = analyzer.get_basic_info() self.app_name_label.setText(str(info.get('name', 'Unknown'))) self.package_label.setText(str(info.get('package', 'Unknown'))) self.version_label.setText(str(info.get('version', 'Unknown'))) # Update Icon if analyzer.icon_data: pixmap = QtGui.QPixmap() if not pixmap.loadFromData(analyzer.icon_data): self.icon_label.setText("Bad Icon") else: self.icon_label.setPixmap(pixmap.scaled(100, 100, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)) else: self.icon_label.setText("No Icon") # Update Basic Info (Grid) for key, widget in self.basic_labels.items(): val = info.get(key, 'N/A') widget.setText(str(val)) # Update Cert/Prov Info & Permissions based on type if analyzer_type == 'apk': self._update_apk_details(analyzer) else: self._update_ipa_details(analyzer) def _update_apk_details(self, analyzer): # 1. Certificate Info (Now in Basic Tab) content = "" cert = analyzer.cert_info if cert: content += f"Issuer: {cert.get('issuer')}
" content += f"Subject: {cert.get('subject')}
" content += f"Serial: {cert.get('serial')}
" content += f"SHA1: {cert.get('sha1')}
" content += f"SHA256: {cert.get('sha256')}
" else: content += "No certificate info found.
" self.cert_text.setHtml(content) # 2. Permissions (Now in Permissions Tab) perm_content = "

Permissions

" perms = analyzer.info.get('permissions', []) if perms: perm_content += "" else: perm_content += "

No permissions requested.

" self.perms_text.setHtml(perm_content) # 3. Components comp_text = "Activities:\n" + "\n".join(analyzer.info.get('activities', [])) comp_text += "\n\nServices:\n" + "\n".join(analyzer.info.get('services', [])) comp_text += "\n\nReceivers:\n" + "\n".join(analyzer.info.get('receivers', [])) comp_text += "\n\nProviders:\n" + "\n".join(analyzer.info.get('providers', [])) self.tab_components.setText(comp_text) def _update_ipa_details(self, analyzer): details = analyzer.get_details() prov = details.get('provision', {}) # 1. Provisioning Info (Now in Basic Tab) content = "" if prov: content += f"App ID Name: {prov.get('app_id_name')}
" content += f"Team Name: {prov.get('team_name')} ({prov.get('team_id')})
" content += f"UUID: {prov.get('uuid')}
" content += f"Created: {prov.get('creation_date')}
" content += f"Expires: {prov.get('expiration_date')}
" content += "

Provisioned Devices

" else: content += "

No embedded.mobileprovision found.

" self.cert_text.setHtml(content) # 2. Entitlements (Now in Permissions Tab) perm_content = "

Entitlements

" if prov: perm_content += "" else: perm_content += "

No entitlements found.

" self.perms_text.setHtml(perm_content) # 3. Components comp_text = "URL Schemes:\n" for scheme in details.get('url_schemes', []): comp_text += f"- {scheme}\n" comp_text += f"\nSupported Platforms: {details.get('supported_platforms')}" comp_text += f"\nDTPlatformName: {details.get('platform')}" self.tab_components.setText(comp_text) ================================================ FILE: GUI/MainForm.py ================================================ from PyQt5 import QtWidgets, QtCore, QtGui import sys import os import platform from GUI.AppInfoWidget import AppInfoWidget from Core.ApkAnalyzer import ApkAnalyzer from Core.IpaAnalyzer import IpaAnalyzer from Core.DeepScanner import DeepScanner class DeepScanThread(QtCore.QThread): progress_signal = QtCore.pyqtSignal(int, str) finished_signal = QtCore.pyqtSignal(object) def __init__(self, apk_obj=None, ipa_path=None, analyzer=None): super(DeepScanThread, self).__init__() self.apk = apk_obj self.ipa_path = ipa_path self.analyzer = analyzer def run(self): binary_path_in_zip = None if self.analyzer and hasattr(self.analyzer, 'binary_path'): binary_path_in_zip = self.analyzer.binary_path scanner = DeepScanner(self.apk, self.ipa_path, binary_path_in_zip) results = scanner.scan(self.emit_progress) self.finished_signal.emit(results) def emit_progress(self, value, message): self.progress_signal.emit(value, message) class AnalysisThread(QtCore.QThread): progress_signal = QtCore.pyqtSignal(int, str) finished_signal = QtCore.pyqtSignal(bool, object, str) def __init__(self, file_path): super(AnalysisThread, self).__init__() self.file_path = file_path self.analyzer = None self.analyzer_type = None def run(self): try: if self.file_path.lower().endswith('.apk'): self.analyzer = ApkAnalyzer(self.file_path) self.analyzer_type = 'apk' elif self.file_path.lower().endswith('.ipa'): self.analyzer = IpaAnalyzer(self.file_path) self.analyzer_type = 'ipa' else: self.finished_signal.emit(False, None, "Unsupported file type") return self.analyzer.set_progress_callback(self.emit_progress) success = self.analyzer.analyze() if success: self.finished_signal.emit(True, self.analyzer, self.analyzer_type) else: self.finished_signal.emit(False, None, self.analyzer.error) except Exception as e: self.finished_signal.emit(False, None, str(e)) import traceback traceback.print_exc() def emit_progress(self, value, message): self.progress_signal.emit(value, message) class OverlayWidget(QtWidgets.QWidget): def __init__(self, parent=None): super(OverlayWidget, self).__init__(parent) self.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents, False) self.setAttribute(QtCore.Qt.WA_NoSystemBackground, False) # Auto-progress timer to prevent "stuck" feeling self.creep_timer = QtCore.QTimer(self) self.creep_timer.timeout.connect(self._on_creep_timer) self.creep_mode = False # Layer 1: Log (Bottom) self.log_widget = QtWidgets.QTextEdit(self) self.log_widget.setReadOnly(True) if platform.system() == 'Windows': log_font_size = "20px" card_width = 800 loading_font = "36px" action_font = "20px" else: log_font_size = "13px" card_width = 500 loading_font = "24px" action_font = "14px" self.log_widget.setStyleSheet(f""" QTextEdit {{ background-color: #1a1a1a; color: #00ff00; border: none; font-family: "Courier New", monospace; font-size: {log_font_size}; padding: 10px; }} """) # Layer 2: Dim/Blur (Middle) self.dim_widget = QtWidgets.QWidget(self) self.dim_widget.setStyleSheet("background-color: rgba(0, 0, 0, 150);") self.dim_widget.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents) # Layer 3: Progress (Top) self.progress_container = QtWidgets.QWidget(self) self.progress_container.setAttribute(QtCore.Qt.WA_TranslucentBackground) # Setup Progress Layout self.progress_layout = QtWidgets.QVBoxLayout(self.progress_container) self.progress_layout.setAlignment(QtCore.Qt.AlignCenter) self.progress_card = QtWidgets.QWidget() self.progress_card.setFixedWidth(card_width) self.progress_card.setStyleSheet(""" QWidget { background-color: rgba(40, 40, 40, 240); border: 1px solid #555; border-radius: 10px; } QLabel { background-color: transparent; color: white; border: none; } """) card_layout = QtWidgets.QVBoxLayout(self.progress_card) card_layout.setContentsMargins(30, 30, 30, 30) self.loading_label = QtWidgets.QLabel("Analyzing...") self.loading_label.setStyleSheet(f"font-size: {loading_font}; font-weight: bold; margin-bottom: 10px;") self.loading_label.setAlignment(QtCore.Qt.AlignCenter) self.progress_bar = QtWidgets.QProgressBar() if platform.system() == 'Windows': self.progress_bar.setFixedHeight(30) pb_font_size = "18px" else: self.progress_bar.setFixedHeight(8) pb_font_size = "10px" self.progress_bar.setStyleSheet(f""" QProgressBar {{ border: none; background-color: #444; border-radius: 4px; text-align: center; color: white; font-weight: bold; font-size: {pb_font_size}; }} QProgressBar::chunk {{ background-color: #007acc; border-radius: 4px; }} """) self.current_action_label = QtWidgets.QLabel("Initializing...") self.current_action_label.setStyleSheet(f"font-size: {action_font}; color: #aaa; margin-top: 5px;") self.current_action_label.setAlignment(QtCore.Qt.AlignCenter) card_layout.addWidget(self.loading_label) card_layout.addWidget(self.progress_bar) card_layout.addWidget(self.current_action_label) self.progress_layout.addWidget(self.progress_card) def resizeEvent(self, event): s = event.size() # Ensure full coverage self.log_widget.setGeometry(0, 0, s.width(), s.height()) self.dim_widget.setGeometry(0, 0, s.width(), s.height()) self.progress_container.setGeometry(0, 0, s.width(), s.height()) # Ensure Z-Order (Lower is bottom) self.log_widget.lower() self.dim_widget.stackUnder(self.progress_container) self.progress_container.raise_() super(OverlayWidget, self).resizeEvent(event) def set_progress(self, value, message): # Always update message self.current_action_label.setText(message) self.log_text_append(f"> {message}") # Logic for progress bar current_val = self.progress_bar.value() # Reset if value is 0 (new analysis) if value == 0: self.progress_bar.setValue(0) self.creep_timer.stop() # Stop previous timer if any return # If new value is higher, jump to it if value > current_val: self.progress_bar.setValue(value) # If value is 100, stop creep if value >= 100: self.creep_timer.stop() self.progress_bar.setValue(100) elif value > 0 and not self.creep_timer.isActive(): # Start creeping if not started self._start_creep() def _start_creep(self): # Start a slow timer to increment progress artificially # This prevents the "stuck" feeling self.creep_timer.start(500) # Check every 500ms def _on_creep_timer(self): val = self.progress_bar.value() if val < 95: # Slow down as we get higher # 0-50: fast # 50-80: medium # 80-95: slow should_increment = False import random if val < 50: should_increment = True # Always increment elif val < 80: should_increment = (random.random() > 0.3) # 70% chance else: should_increment = (random.random() > 0.7) # 30% chance if should_increment: self.progress_bar.setValue(val + 1) def log_text_append(self, text): self.log_widget.append(text) cursor = self.log_widget.textCursor() cursor.movePosition(QtGui.QTextCursor.End) self.log_widget.setTextCursor(cursor) def clear_log(self): self.log_widget.clear() class MainForm(QtWidgets.QMainWindow): def __init__(self): super(MainForm, self).__init__() self.setWindowTitle("AppDetecter - Modern APK/IPA Analyzer") if platform.system() == 'Windows': self.resize(1600, 1100) # Windows specific large size else: self.resize(900, 600) # Mac default self.setAcceptDrops(True) self.init_ui() def load_icon(self, name): """Helper to load icons from Resources/icons/""" if getattr(sys, 'frozen', False): base_dir = sys._MEIPASS else: base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) icon_path = os.path.join(base_dir, 'Resources', 'icons', f'{name}.svg') if os.path.exists(icon_path): return QtGui.QIcon(icon_path) return QtGui.QIcon() # Return empty icon if not found def init_ui(self): # Central Widget self.central_widget = QtWidgets.QWidget() self.setCentralWidget(self.central_widget) self.main_layout = QtWidgets.QVBoxLayout(self.central_widget) self.main_layout.setContentsMargins(0, 0, 0, 0) # Full bleed # Stacked Layout to hold Drop Area and App Info self.stacked_widget = QtWidgets.QStackedWidget() self.main_layout.addWidget(self.stacked_widget) # 1. Drop Area Page self.drop_page = QtWidgets.QWidget() drop_layout = QtWidgets.QVBoxLayout(self.drop_page) drop_layout.setAlignment(QtCore.Qt.AlignCenter) self.drop_label = QtWidgets.QLabel("Drop APK / IPA File Here") self.drop_label.setAlignment(QtCore.Qt.AlignCenter) self.drop_label.setStyleSheet(""" QLabel { font-size: 36px; color: #888; font-weight: bold; } """) self.sub_drop_label = QtWidgets.QLabel("or select File > Open from menu") self.sub_drop_label.setAlignment(QtCore.Qt.AlignCenter) self.sub_drop_label.setStyleSheet("font-size: 18px; color: #666;") # Try to load logo # For Window Icon: Handled in ApkDetecter.py globally # logo_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'Resources', 'logo.png') # if os.path.exists(logo_path): # self.setWindowIcon(QtGui.QIcon(logo_path)) drop_layout.addStretch() # Removed icon_graphic from display drop_layout.addWidget(self.drop_label) drop_layout.addWidget(self.sub_drop_label) drop_layout.addStretch() self.stacked_widget.addWidget(self.drop_page) # 2. App Info Page self.app_info_widget = AppInfoWidget() self.stacked_widget.addWidget(self.app_info_widget) # Overlay for Loading (Hidden by default) # Note: Parent is central_widget to cover everything inside it self.overlay = OverlayWidget(self.central_widget) self.overlay.hide() # Menu Bar # On macOS, we want the native global menu bar. # On Windows, user requested to remove it to match Mac's "clean window" look (since Mac has it in system bar). if platform.system() == 'Darwin': menubar = self.menuBar() file_menu = menubar.addMenu("File") open_action = QtWidgets.QAction("Open", self) open_action.setShortcut("Ctrl+O") open_action.setIcon(self.load_icon('open')) open_action.triggered.connect(self.open_file_dialog) file_menu.addAction(open_action) exit_action = QtWidgets.QAction("Exit", self) exit_action.setShortcut("Ctrl+Q") exit_action.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_DialogCloseButton)) exit_action.triggered.connect(self.close) file_menu.addAction(exit_action) help_menu = menubar.addMenu("Help") about_action = QtWidgets.QAction("About", self) about_action.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_MessageBoxInformation)) about_action.triggered.connect(self.show_about) help_menu.addAction(about_action) else: # For Windows (and others), we define actions but don't add them to a MenuBar # ensuring they can still be triggered via shortcuts or Toolbar if needed. open_action = QtWidgets.QAction("Open", self) open_action.setShortcut("Ctrl+O") open_action.setIcon(self.load_icon('open')) open_action.triggered.connect(self.open_file_dialog) exit_action = QtWidgets.QAction("Exit", self) exit_action.setShortcut("Ctrl+Q") exit_action.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_DialogCloseButton)) exit_action.triggered.connect(self.close) about_action = QtWidgets.QAction("About", self) about_action.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_MessageBoxInformation)) about_action.triggered.connect(self.show_about) # Toolbar toolbar = QtWidgets.QToolBar("Main Toolbar") toolbar.setMovable(False) toolbar.setFloatable(False) if platform.system() == 'Windows': toolbar.setIconSize(QtCore.QSize(48, 48)) else: toolbar.setIconSize(QtCore.QSize(32, 32)) # Default mac size self.addToolBar(toolbar) toolbar.addAction(open_action) # Clear Action clear_action = QtWidgets.QAction("Clear", self) clear_action.setIcon(self.load_icon('clear')) clear_action.setToolTip("Clear current analysis") clear_action.triggered.connect(self.clear_analysis) toolbar.addAction(clear_action) toolbar.addSeparator() # Export Action export_action = QtWidgets.QAction("Export", self) export_action.setIcon(self.load_icon('export')) export_action.setToolTip("Export analysis report") export_action.triggered.connect(self.export_report) toolbar.addAction(export_action) # Deep Scan Action deep_scan_action = QtWidgets.QAction("Deep Scan", self) deep_scan_action.setIcon(self.load_icon('scan')) deep_scan_action.setToolTip("Run deep scan (Slow)") deep_scan_action.triggered.connect(self.run_deep_scan) toolbar.addAction(deep_scan_action) # Add a spacer to push other items (if any) # empty_widget = QtWidgets.QWidget() # empty_widget.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Preferred) # toolbar.addWidget(empty_widget) # Status Bar self.status_bar = self.statusBar() self.status_bar.showMessage("Ready") def resizeEvent(self, event): # Resize overlay to cover entire window content area self.overlay.resize(self.central_widget.size()) super(MainForm, self).resizeEvent(event) def dragEnterEvent(self, event): if event.mimeData().hasUrls(): event.accept() self.drop_page.setStyleSheet("background-color: #2a2a2a;") # Highlight else: event.ignore() def dragLeaveEvent(self, event): self.drop_page.setStyleSheet("") # Reset def dropEvent(self, event): self.drop_page.setStyleSheet("") files = [u.toLocalFile() for u in event.mimeData().urls()] for f in files: if f.lower().endswith('.apk') or f.lower().endswith('.ipa'): self.load_file(f) break def open_file_dialog(self): options = QtWidgets.QFileDialog.Options() fname, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Open App File", "", "App Files (*.apk *.ipa);;APK Files (*.apk);;IPA Files (*.ipa);;All Files (*)", options=options) if fname: self.load_file(fname) def load_file(self, file_path): self.overlay.clear_log() # Clear previous logs self.overlay.show() self.overlay.raise_() self.overlay.set_progress(0, f"Initializing analysis for {os.path.basename(file_path)}...") self.status_bar.showMessage(f"Analyzing {file_path}...") # Start Thread self.thread = AnalysisThread(file_path) self.thread.progress_signal.connect(self.update_progress) self.thread.finished_signal.connect(self.analysis_finished) self.thread.start() def update_progress(self, value, message): self.overlay.set_progress(value, message) self.status_bar.showMessage(message) def analysis_finished(self, success, analyzer, analyzer_type): self.overlay.hide() if success: self.stacked_widget.setCurrentWidget(self.app_info_widget) self.app_info_widget.update_data(analyzer_type, analyzer) self.status_bar.showMessage(f"Loaded: {os.path.basename(self.thread.file_path)}") # Store data for export self.current_analyzer_info = analyzer.get_basic_info() # Add more details if needed self.current_analyzer_info['full_details'] = analyzer.info else: self.stacked_widget.setCurrentWidget(self.drop_page) error_msg = analyzer_type if analyzer_type else "Error" QtWidgets.QMessageBox.critical(self, "Analysis Error", str(error_msg)) self.status_bar.showMessage("Analysis failed.") def show_about(self): QtWidgets.QMessageBox.about(self, "About", "

AppDetecter

" "

A modern tool for analyzing Android (APK) and iOS (IPA) applications.

" "

Refactored by AYL.

" ) def clear_analysis(self): self.stacked_widget.setCurrentWidget(self.drop_page) self.status_bar.showMessage("Ready") self.setWindowTitle("AppDetecter - Modern APK/IPA Analyzer") def export_report(self): if self.stacked_widget.currentWidget() != self.app_info_widget: QtWidgets.QMessageBox.warning(self, "Export", "No analysis data to export. Please load an app first.") return options = QtWidgets.QFileDialog.Options() file_path, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Export Report", "report.json", "JSON Files (*.json);;Text Files (*.txt)", options=options) if file_path: try: if hasattr(self, 'current_analyzer_info'): import json with open(file_path, 'w', encoding='utf-8') as f: json.dump(self.current_analyzer_info, f, indent=4, ensure_ascii=False) self.status_bar.showMessage(f"Report exported to {file_path}") else: QtWidgets.QMessageBox.warning(self, "Export", "Data not available for export.") except Exception as e: QtWidgets.QMessageBox.critical(self, "Export Error", str(e)) def run_deep_scan(self): if self.stacked_widget.currentWidget() != self.app_info_widget: QtWidgets.QMessageBox.warning(self, "Deep Scan", "Please load an app first.") return # Check if we have an analyzer instance if hasattr(self, 'thread') and self.thread.analyzer: analyzer = self.thread.analyzer # Determine type apk_obj = None ipa_path = None if hasattr(analyzer, 'apk'): apk_obj = analyzer.apk elif hasattr(analyzer, 'file_path') and analyzer.file_path.lower().endswith('.ipa'): ipa_path = analyzer.file_path # Pass the found binary path if available if hasattr(analyzer, 'binary_path'): # We can't pass it directly to DeepScanner constructor as currently defined, # but we can improve DeepScanner or DeepScanThread. # Let's pass the analyzer itself to DeepScanThread instead? pass if apk_obj or ipa_path: self.overlay.show() self.overlay.raise_() self.overlay.set_progress(0, "Starting Deep Scan...") # Run in a new thread to avoid blocking UI self.scan_thread = DeepScanThread(apk_obj, ipa_path, analyzer) self.scan_thread.progress_signal.connect(self.update_progress) self.scan_thread.finished_signal.connect(self.deep_scan_finished) self.scan_thread.start() else: QtWidgets.QMessageBox.warning(self, "Deep Scan", "Could not determine scan target (APK/IPA).") else: QtWidgets.QMessageBox.warning(self, "Deep Scan", "Analysis session expired. Please reload the app.") def deep_scan_finished(self, results): self.overlay.hide() self.status_bar.showMessage("Deep Scan Completed") # Show results in a new dialog or tab # For now, let's use a simple dialog with tabs dlg = QtWidgets.QDialog(self) dlg.setWindowTitle("Deep Scan Results") # Remove the context help button (?) dlg.setWindowFlags(dlg.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint) if platform.system() == 'Windows': dlg.resize(1200, 1000) else: dlg.resize(600, 500) layout = QtWidgets.QVBoxLayout(dlg) tabs = QtWidgets.QTabWidget() # Helper to add tab def add_result_tab(name, data_list): widget = QtWidgets.QWidget() vbox = QtWidgets.QVBoxLayout(widget) text_edit = QtWidgets.QTextEdit() text_edit.setReadOnly(True) if data_list: text_edit.setText("\n".join(data_list)) else: text_edit.setText("No entries found.") vbox.addWidget(text_edit) tabs.addTab(widget, f"{name} ({len(data_list)})") add_result_tab("URLs", results.get("urls", [])) add_result_tab("IPs", results.get("ips", [])) add_result_tab("Strings", results.get("sensitive_strings", [])) add_result_tab("Anti-Debug", results.get("anti_debug", [])) add_result_tab("Crypto", results.get("crypto", [])) layout.addWidget(tabs) # Button Box btn_layout = QtWidgets.QHBoxLayout() export_btn = QtWidgets.QPushButton("Export Results") export_btn.setIcon(self.style().standardIcon(QtWidgets.QStyle.SP_DialogSaveButton)) export_btn.clicked.connect(lambda: self.export_deep_scan_results(results, dlg)) btn_layout.addWidget(export_btn) btn_layout.addStretch() close_btn = QtWidgets.QPushButton("Close") close_btn.clicked.connect(dlg.accept) btn_layout.addWidget(close_btn) layout.addLayout(btn_layout) dlg.exec_() def export_deep_scan_results(self, results, parent_dlg): options = QtWidgets.QFileDialog.Options() file_path, _ = QtWidgets.QFileDialog.getSaveFileName(parent_dlg, "Export Deep Scan Results", "deep_scan_results.zip", "ZIP Files (*.zip)", options=options) if file_path: try: import zipfile with zipfile.ZipFile(file_path, 'w', zipfile.ZIP_DEFLATED) as zf: # Helper to write list to file in zip def write_list_to_zip(name, data_list): content = "" if data_list: content = "\n".join(data_list) else: content = "No entries found." zf.writestr(f"{name}.txt", content) write_list_to_zip("URLs", results.get("urls", [])) write_list_to_zip("IPs", results.get("ips", [])) write_list_to_zip("Strings", results.get("sensitive_strings", [])) write_list_to_zip("Anti-Debug", results.get("anti_debug", [])) write_list_to_zip("Crypto", results.get("crypto", [])) QtWidgets.QMessageBox.information(parent_dlg, "Export", f"Results exported to {file_path}") except Exception as e: QtWidgets.QMessageBox.critical(parent_dlg, "Export Error", str(e)) ================================================ FILE: GUI/StyleSheet.py ================================================ # Modern Dark Theme for ApkDetecter import platform QSS_COMMON = """ /* General Window */ QMainWindow, QDialog, QWidget { background-color: #2b2b2b; color: #e0e0e0; font-family: "Segoe UI", "Arial", sans-serif; } /* GroupBox */ QGroupBox { border: 1px solid #3d3d3d; border-radius: 6px; margin-top: 24px; font-weight: bold; color: #e0e0e0; } QGroupBox::title { subcontrol-origin: margin; subcontrol-position: top left; left: 10px; padding: 0 5px; color: #4da6ff; /* Blue accent */ } /* Labels */ QLabel { color: #cccccc; } /* TextBrowser / TextEdit / LineEdit */ QTextBrowser, QTextEdit, QLineEdit { background-color: #363636; border: 1px solid #3d3d3d; border-radius: 4px; color: #ffffff; selection-background-color: #4da6ff; } QTextBrowser:disabled, QTextEdit:disabled { background-color: #2f2f2f; color: #909090; border: 1px solid #333333; } /* Push Buttons */ QPushButton { background-color: #3a3a3a; border: 1px solid #4a4a4a; border-radius: 4px; color: #e0e0e0; padding: 4px 12px; min-height: 20px; } QPushButton:hover { background-color: #4a4a4a; border: 1px solid #5a5a5a; } QPushButton:pressed { background-color: #2a2a2a; } QPushButton#file_open { background-color: #007acc; color: white; border: 1px solid #005c99; } QPushButton#file_open:hover { background-color: #008ae6; } QPushButton#file_open:pressed { background-color: #005c99; } /* Progress Bar */ QProgressBar { border: 1px solid #3d3d3d; border-radius: 4px; background-color: #363636; text-align: center; color: #e0e0e0; } QProgressBar::chunk { background-color: #007acc; border-radius: 3px; } /* ScrollBars */ QScrollBar:vertical { border: none; background: #2b2b2b; width: 10px; margin: 0px 0px 0px 0px; } QScrollBar::handle:vertical { background: #505050; min-height: 20px; border-radius: 5px; } QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { height: 0px; } QScrollBar:horizontal { border: none; background: #2b2b2b; height: 10px; margin: 0px 0px 0px 0px; } QScrollBar::handle:horizontal { background: #505050; min-width: 20px; border-radius: 5px; } QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { width: 0px; } """ QSS_WIN_OVERRIDES = """ /* Windows Specific Overrides for High DPI / Readability */ QMainWindow, QDialog, QWidget { font-size: 24px; } QGroupBox { font-size: 26px; margin-top: 36px; } QGroupBox::title { top: -24px; left: 10px; } QLabel { font-size: 24px; } QTextBrowser, QTextEdit, QLineEdit { font-size: 24px; padding: 10px; } QPushButton { padding: 8px 20px; min-height: 32px; } QScrollBar:vertical { width: 20px; } QScrollBar:horizontal { height: 20px; } """ QSS_MAC_OVERRIDES = """ /* macOS Specific Overrides */ QLabel { font-size: 12px; } /* Other defaults are usually fine on Mac */ """ if platform.system() == "Windows": QSS = QSS_COMMON + QSS_WIN_OVERRIDES else: # Default to Mac/Linux style QSS = QSS_COMMON + QSS_MAC_OVERRIDES ================================================ FILE: GUI/__init__.py ================================================ __author__ = 'Andy' ================================================ FILE: GUI/apkdetecter_ui.ui ================================================ APKDetecter Qt::WindowModal true 0 0 432 237 432 237 432 237 APKDetecter C:/Users/Andy/Desktop/20150117051304968_easyicon_net_512.pngC:/Users/Andy/Desktop/20150117051304968_easyicon_net_512.png 10 10 41 16 Arial 10 75 true 文 件 50 5 291 24 350 5 71 23 Arial 10 75 true 打 开 10 30 411 181 Arabic Typesetting 8 50 true false DEX信息 210 70 71 16 Arial Narrow 10 75 false true 连接段大小 10 30 61 16 Arial Narrow 10 75 false true DEX 标 识 10 70 61 16 Arial Narrow 75 false true DEX头大小 false 80 104 111 27 Arial Narrow 10 75 false true QFrame::Panel 210 111 71 16 Arial Narrow 10 75 false true 连接段偏移 false 292 103 111 27 Arial Narrow 10 75 false true QFrame::Panel 212 32 54 12 Arial Narrow 10 75 false true 文件大小 false 292 63 111 27 Arial Narrow 10 75 false true QFrame::Panel false 80 63 111 27 Arial Narrow 10 75 false true QFrame::Panel false 292 22 111 27 Arial Narrow 10 75 false true QFrame::Panel 10 113 54 12 Arial Narrow 10 75 false true 字节序列 false 12 140 391 27 Arial Narrow 10 75 false true QFrame::Panel false 80 22 111 27 Arial Narrow 10 75 false true QFrame::Panel true 10 217 191 16 0 275 214 71 20 扩展信息 350 214 71 20 About 200 214 71 20 ApkInfo ================================================ FILE: GUI/apkinfo_ui.ui ================================================ ApkInfo Qt::WindowModal true 0 0 621 340 621 340 621 340 ApkInformation C:/Users/Andy/Desktop/20150117051304968_easyicon_net_512.pngC:/Users/Andy/Desktop/20150117051304968_easyicon_net_512.png 10 10 601 321 Aharoni 9 75 false true 文件信息 10 27 54 12 Arial 10 75 true 文件大小 10 63 54 12 Arial 10 75 true 文件包名 312 28 54 12 Arial 10 75 true 版 本 311 64 54 12 Arial 10 75 true 版本号 10 101 54 12 Arial 10 75 true 系统要求 312 100 54 12 Arial 10 75 true 序列号 10 228 54 12 Arial 10 75 true 发 行 者 10 280 54 12 Arial 10 75 true 签 发 人 11 143 54 12 Arial 9 75 true APKMD5 10 181 54 12 Arial 75 true DEXMD5 false 70 18 231 28 Arial Narrow 10 QFrame::Box false 70 54 231 28 Arial Narrow 10 QFrame::Panel false 70 91 231 28 Arial Narrow 10 QFrame::Panel false 360 19 231 28 Arial Narrow 10 QFrame::Box false 360 55 231 28 Arial Narrow 10 QFrame::Panel false 360 92 231 28 Arial Narrow 10 QFrame::Panel false 70 132 521 28 Arial Narrow 10 QFrame::Panel false 70 170 521 28 Arial Narrow 10 QFrame::Panel false 70 207 521 48 Arial Narrow 10 QFrame::Panel false 70 263 521 48 Arial Narrow 10 QFrame::Panel ================================================ FILE: GUI/dexinfor_ui.ui ================================================ DexInfo Qt::WindowModal true 0 0 581 422 581 422 581 422 DexInformation C:/Users/Andy/Desktop/201.pngC:/Users/Andy/Desktop/201.png 10 10 561 401 9 50 false false DexInfo 6 20 81 16 75 true Magic标识 6 50 81 16 75 true 校验码 6 82 81 16 75 true DEX文件大小 6 112 91 16 75 true 文件头长度 6 144 71 16 75 true 字节序标记 6 176 71 16 75 true 链接段大小 6 208 81 16 75 true 链接段基地址 6 238 91 16 75 true Map数据基地址 6 269 131 16 75 true 字符串列表的字符串数 6 301 121 16 75 true 字符串列表表基地址 287 114 111 16 75 true 字段列表里字段数 287 51 111 16 75 true 原型列表里原型数 287 177 111 16 75 true 方法列表里方法数 287 145 101 16 75 true 字段列表基地址 287 207 91 16 75 true 方法列表基地址 287 302 81 16 75 true 数据段的大小 287 83 101 16 75 true 原型列表基地址 287 20 91 16 75 true 类型列表基地址 287 238 121 16 75 true 类定义类表中类的数 287 271 91 16 75 true 类定义列表基地址 6 333 111 16 75 true 类型列表中类型数 287 334 81 16 75 true 数据段基地址 false 138 14 141 27 QFrame::Panel false 138 45 141 27 QFrame::Panel false 138 76 141 27 QFrame::Panel false 138 107 141 27 QFrame::Panel false 138 138 141 27 QFrame::Panel false 138 170 141 27 QFrame::Panel false 138 201 141 27 QFrame::Panel false 138 232 141 27 QFrame::Panel false 138 264 141 27 QFrame::Panel false 138 296 141 27 QFrame::Panel false 138 327 141 27 QFrame::Panel false 408 265 141 27 QFrame::Panel false 408 77 141 27 QFrame::Panel false 408 202 141 27 QFrame::Panel false 408 139 141 27 QFrame::Panel false 408 46 141 27 QFrame::Panel false 408 108 141 27 QFrame::Panel false 408 15 141 27 QFrame::Panel false 408 297 141 27 QFrame::Panel false 408 233 141 27 QFrame::Panel false 408 171 141 27 QFrame::Panel false 408 328 141 27 QFrame::Panel 10 366 71 16 75 true SHA-1签名 false 80 360 471 27 QFrame::Panel ================================================ FILE: LICENSE.txt ================================================ GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. (This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.) Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. aswan Copyright (C) 2019 sec This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. {signature of Ty Coon}, 1 April 1990 Ty Coon, President of Vice That's all there is to it! ================================================ FILE: README.md ================================================ # ApkDetecter - APK/IPA 查壳分析工具 ApkDetecter 是一款功能强大的跨平台工具,用于分析 Android (APK) 和 iOS (IPA) 应用程序。它提供了一个图形界面,用于查看应用信息、检查是否加壳,并对敏感数据进行深度扫描。 ## ✨ 主要功能 ### 📱 Android (APK) 分析 - **基本信息**:应用名称、包名、版本号/版本名、最小/目标 SDK 版本、是否加固。 - **组件列表**:列出 Activity、Service、Receiver 和 Provider。 - **权限分析**:详细列出应用申请的所有权限。 - **安全检查**:检测应用签名状态、是否可调试 (Debuggable) 等。 APK界面 ### 🍎 iOS (IPA) 分析 - **基本信息**:应用名称、Bundle ID、版本号、最低系统要求、支持的平台。 - **安全检查**: - **壳检测 (Cryptid)**:检测二进制文件是否经过加密(AppStore 正版)或已脱壳(破解版/调试版)。 - **描述文件 (Provisioning Profile)**:解析嵌入的 mobileprovision 文件(Team ID、UUID、过期时间、权限 entitlement 等)。 - **URL Schemes**:提取已注册的 URL Schemes。 IPA界面 ### 🔍 深度扫描 (Deep Scan) 对应用程序的二进制代码(Android 的 DEX,iOS 的 Mach-O)进行全面扫描,挖掘潜在风险: - **URL & IP**:提取硬编码的 URL 链接和 IP 地址。 - **敏感字符串**:检测密钥(AWS, Google 等)、密码以及可疑关键词(如 root, su, vpn 等)。 - **反调试检测**:识别反调试技术(例如 `ptrace`, `sysctl`, `isDebuggerConnected`)。 - **加密库使用**:检测加密库和 API 的调用情况(例如 `AES`, `RSA`, `CommonCrypto`)。 深度分析界面 ### 🛠 其他特性 - **现代化 GUI**:基于 PyQt5 构建的暗色主题界面,简洁美观。 - **拖拽支持**:只需将 APK 或 IPA 文件拖入窗口即可开始分析。 - **报告导出**:支持将基本分析数据导出为 JSON 格式。 - **深度扫描导出**:支持将深度扫描结果导出为包含分类文本报告的 ZIP 压缩包。 ## 🚀 安装指南 ### 环境要求 - Python 3.8 或更高版本 - pip (Python 包管理器) ### 安装步骤 1. 克隆项目仓库: ```bash git clone https://github.com/yourusername/ApkDetecter.git cd ApkDetecter ``` 2. 安装依赖库: ```bash pip install -r requirements.txt ``` *注意:核心功能依赖于 `androguard` 和 `asn1crypto` 等库。* ## 💻 使用说明 1. **启动程序**: ```bash python ApkDetecter.py ``` 2. **加载应用**: - **拖拽**:直接将 `.apk` 或 `.ipa` 文件拖放到主窗口中。 - **菜单**:点击菜单栏的 `File -> Open` 选择文件。 3. **查看基本信息**: - 加载完成后,主界面会立即显示应用图标、版本信息和安全状态概览。 4. **执行深度扫描**: - 点击工具栏上的 **Deep Scan** 按钮(芯片图标)。 - 等待扫描完成(界面会有进度条覆盖层提示)。 - 扫描结束后,会在弹出的对话框中分类展示结果(URLs, IPs, Strings, Anti-Debug, Crypto)。 5. **导出结果**: - **基本报告**:点击工具栏的 **Export** 按钮,将应用元数据保存为 JSON 文件。 - **深度扫描报告**:在 Deep Scan 结果对话框中,点击左下角的 **Export Results** 按钮,将所有扫描结果打包导出为 ZIP 文件。 ## 📦 构建指南 ### 前置要求 - 安装 Python 3.8+ - 安装 `pip` ### macOS 构建 1. 在项目目录中打开终端。 2. 安装依赖: ```bash pip install -r requirements.txt pip install pyinstaller ``` 3. 运行构建命令: ```bash build_mac.sh ``` 4. 应用程序 `ApkDetecter.app` 将位于 `dist` 文件夹中。 ### Windows 构建 1. 在项目目录中打开命令提示符 (Command Prompt) 或 PowerShell。 2. 安装依赖: ```bash pip install -r requirements.txt pip install pyinstaller ``` 3. 运行构建脚本: ```cmd build_windows.bat ``` 4. 可执行文件 `ApkDetecter.exe` 将位于 `dist\ApkDetecter` 文件夹中。 ## 📂 项目结构 - `Core/`: 核心分析逻辑 (`ApkAnalyzer.py`, `IpaAnalyzer.py`, `DeepScanner.py`)。 - `GUI/`: 用户界面组件 (`MainForm.py`, `AppInfoWidget.py`)。 - `Resources/`: 图标和资源文件。 - `libs/`: 包含的第三方依赖库(androguard)。 ================================================ FILE: Resources/signatures.json ================================================ { "signatures": [ { "name": "360加固 (Qihoo 360)", "rules": [ { "type": "file", "pattern": "libjiagu.so" }, { "type": "file", "pattern": "libprotectClass.so" }, { "type": "file", "pattern": ".appkey", "match": "endswith" } ] }, { "name": "腾讯御安全 (Tencent Legu)", "rules": [ { "type": "file", "pattern": "libshell.so" }, { "type": "file", "pattern": "libtup.so" }, { "type": "file", "pattern": "mix.dex" }, { "type": "file", "pattern": "libshella-", "match": "startswith" } ] }, { "name": "梆梆加固 (Bangcle)", "rules": [ { "type": "file", "pattern": "libsecexe.so" }, { "type": "file", "pattern": "libsecmain.so" }, { "type": "file", "pattern": "libSecShell.so" }, { "type": "file", "pattern": "libDexHelper.so" }, { "type": "file", "pattern": "libbangcle.so" } ] }, { "name": "爱加密 (Ijiami)", "rules": [ { "type": "file", "pattern": "libexec.so" }, { "type": "file", "pattern": "ijiami.dat" }, { "type": "file", "pattern": "libexecmain.so" }, { "type": "file", "pattern": "ijiami.ajm" } ] }, { "name": "阿里加固 (Alibaba)", "rules": [ { "type": "file", "pattern": "libmobisec.so" }, { "type": "file", "pattern": "libaliupdates.so" }, { "type": "file", "pattern": "aliprotect.dat" }, { "type": "file", "pattern": "libsgmain.so" }, { "type": "file", "pattern": "libsgsecuritybody.so" } ] }, { "name": "百度加固 (Baidu)", "rules": [ { "type": "file", "pattern": "libbaiduprotect.so" }, { "type": "file", "pattern": "baiduprotect.jar" } ] }, { "name": "娜迦加固 (Naga)", "rules": [ { "type": "file", "pattern": "libddog.so" }, { "type": "file", "pattern": "libchaosvmp.so" }, { "type": "file", "pattern": "libfdog.so" } ] }, { "name": "网秦加固 (NetQin)", "rules": [ { "type": "file", "pattern": "libnqshield.so" } ] }, { "name": "通付盾加固 (PayEgis)", "rules": [ { "type": "file", "pattern": "libNSaferOnly.so" }, { "type": "file", "pattern": "libegis.so" } ] }, { "name": "几维安全 (Kiwi)", "rules": [ { "type": "file", "pattern": "libkcodemon.so" }, { "type": "file", "pattern": "libkwscmm.so" }, { "type": "file", "pattern": "libkwscr.so" } ] }, { "name": "顶象加固 (DingXiang)", "rules": [ { "type": "file", "pattern": "libdx-risk.so" }, { "type": "file", "pattern": "libx3g.so" } ] }, { "name": "网易易盾 (NetEase)", "rules": [ { "type": "file", "pattern": "libnesec.so" } ] }, { "name": "APKProtect", "rules": [ { "type": "file", "pattern": "libAPKProtect.so" }, { "type": "combined", "conditions": [ { "type": "file", "pattern": "key.dat" }, { "type": "path", "pattern": "apkprotect.com", "match": "contains" } ] } ] }, { "name": "U8SDK", "rules": [ { "type": "file", "pattern": "libu8.so" } ] }, { "name": "Medusah (Pangu)", "rules": [ { "type": "file", "pattern": "libmd.so" } ] } ] } ================================================ FILE: __init__.py ================================================ __author__ = 'Andy' ================================================ FILE: build_mac.sh ================================================ #!/bin/bash echo "Detected macOS system build request." SPEC_FILE="ApkDetecter.spec" if [ ! -f "$SPEC_FILE" ]; then echo "Error: $SPEC_FILE not found." exit 1 fi echo "Starting build with $SPEC_FILE..." # Clean previous build/dist if [ -d "build" ]; then echo "Cleaning build directory..." rm -rf build fi if [ -d "dist" ]; then echo "Cleaning dist directory..." rm -rf dist fi # Run PyInstaller echo "Running PyInstaller..." pyinstaller "$SPEC_FILE" --clean --noconfirm if [ $? -eq 0 ]; then echo "" echo "Build successful!" echo "App bundle is in dist/ApkDetecter.app" else echo "" echo "Build failed." exit 1 fi ================================================ FILE: build_windows.bat ================================================ @echo off echo Building ApkDetecter for Windows... pip install -r requirements.txt pip install pyinstaller Pillow echo Cleaning up previous builds... if exist build rmdir /s /q build if exist dist rmdir /s /q dist echo Running PyInstaller... pyinstaller --noconsole --onefile --clean --name "ApkDetecter" --icon "Resources/logo.png" --add-data "Resources;Resources" --add-data "libs/androguard/core/resources/public.xml;androguard/core/resources" --add-data "libs/androguard/core/api_specific_resources;androguard/core/api_specific_resources" --paths "." --paths "libs" --hidden-import GUI --hidden-import GUI.MainForm --hidden-import GUI.AppInfoWidget --hidden-import Core --hidden-import Core.ApkAnalyzer --hidden-import Core.DeepScanner --hidden-import Core.IpaAnalyzer ApkDetecter.py echo Build complete! echo The executable is located in dist\ApkDetecter.exe pause ================================================ FILE: core/ApkAnalyzer.py ================================================ import os import hashlib import sys import zipfile import re import logging from datetime import datetime # Import existing helpers try: from CheckProtect import CheckProtect except ImportError: current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if current_dir not in sys.path: sys.path.insert(0, current_dir) from CheckProtect import CheckProtect from androguard.core.apk import APK # Try to import loguru to check if it's available in the environment try: from loguru import logger as loguru_logger HAS_LOGURU = True except ImportError: HAS_LOGURU = False class ApkAnalyzer: def __init__(self, file_path): self.file_path = file_path self.apk = None self.info = {} self.cert_info = {} self.protect_info = "" self.icon_data = None self.error = None self.progress_callback = None self.loguru_sink_id = None # Capture Androguard logs self.log_buffer = [] self._setup_logging() def _setup_logging(self): # 1. Setup Standard Logging Hook class CallbackHandler(logging.Handler): def __init__(self, callback): super().__init__() self.callback = callback self.setFormatter(logging.Formatter('%(asctime)s | %(levelname)-8s | %(name)s:%(funcName)s:%(lineno)s - %(message)s')) def emit(self, record): msg = self.format(record) if self.callback: self.callback(msg) self.log_handler = CallbackHandler(self._log_callback) # Hook into multiple potential loggers loggers_to_hook = ['androguard', 'androguard.core.axml', 'androguard.core.apk'] for name in loggers_to_hook: logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) logger.addHandler(self.log_handler) # 2. Setup Loguru Hook (if available) # Many newer Androguard versions use loguru exclusively if HAS_LOGURU: # We add a sink that calls our callback # format matches the user's example style self.loguru_sink_id = loguru_logger.add( self._loguru_callback, level="DEBUG", format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {level: <8} | {name}:{function}:{line} - {message}" ) def _log_callback(self, msg): # Heuristic: Increment progress for every log message during parsing phase if hasattr(self, '_parsing_progress_min') and hasattr(self, '_parsing_progress_max'): self._parsing_log_count += 1 # Logarithmic-ish scale to prevent hitting max too early # Assume ~50 log messages for a typical APK parse increment = min(self._parsing_log_count * 0.5, (self._parsing_progress_max - self._parsing_progress_min)) current = int(self._parsing_progress_min + increment) if current > self._parsing_progress_max: current = self._parsing_progress_max if self.progress_callback: self.progress_callback(current, msg) else: if self.progress_callback: self.progress_callback(-1, msg) def _loguru_callback(self, msg): # loguru 'msg' is a string already formatted if self.progress_callback: # Reuse logic self._log_callback(msg.strip()) def set_progress_callback(self, callback): self.progress_callback = callback def _update_progress(self, value, message=""): if self.progress_callback: self.progress_callback(value, message) def _calculate_md5_chunked(self, path): hash_md5 = hashlib.md5() file_size = os.path.getsize(path) read_size = 0 chunk_size = 8192 # 8KB chunks with open(path, "rb") as f: while True: chunk = f.read(chunk_size) if not chunk: break hash_md5.update(chunk) read_size += len(chunk) # Progress 0-10% percent = int((read_size / file_size) * 10) self._update_progress(percent, f"Calculating MD5... ({int((read_size/file_size)*100)}%)") return hash_md5.hexdigest().upper() def analyze(self): if not os.path.exists(self.file_path): self.error = "File not found" return False try: self._update_progress(0, "Calculating MD5...") # File Stats stat = os.stat(self.file_path) self.info['file_size'] = stat.st_size # Chunked MD5 self.info['md5'] = self._calculate_md5_chunked(self.file_path) self._update_progress(15, "Parsing APK Manifest (This may take a while)...") # Define a helper to simulate progress during the blocking APK() call via log hooks # We map log events to progress range 15% -> 40% self._parsing_progress_min = 15 self._parsing_progress_max = 40 self._parsing_log_count = 0 # Androguard Analysis (APK only, no DEX) self.apk = APK(self.file_path) # Basic Info self.info['package_name'] = self.apk.get_package() self.info['app_name'] = self.apk.get_app_name() self.info['version_name'] = self.apk.get_androidversion_name() self.info['version_code'] = self.apk.get_androidversion_code() self.info['min_sdk'] = self.apk.get_min_sdk_version() self.info['target_sdk'] = self.apk.get_target_sdk_version() self._update_progress(45, "Extracting Icon...") # Icon Extraction Strategy # 1. Try get_app_icon() # 2. If it returns None or XML, try to search for high-res PNGs in standard locations try: icon_path = self.apk.get_app_icon() logging.getLogger('androguard').info(f"Original icon path: {icon_path}") if HAS_LOGURU: loguru_logger.info(f"Original icon path: {icon_path}") # Check if icon is XML (Adaptive Icon) or None is_valid_icon = False if icon_path and not icon_path.endswith('.xml'): try: self.icon_data = self.apk.get_file(icon_path) is_valid_icon = True except: pass if not is_valid_icon: msg = "Attempting fallback icon search..." logging.getLogger('androguard').info(msg) if HAS_LOGURU: loguru_logger.info(msg) # Fallback Strategy: Search for PNG icons files = self.apk.get_files() # Priority list for densities densities = ['xxxhdpi', 'xxhdpi', 'xhdpi', 'hdpi', 'mdpi'] # Keywords to look for icon_keywords = ['ic_launcher', 'icon', 'ic_app', 'launcher'] if icon_path: # Try to use the basename of the reported icon path (even if xml) # e.g. res/mipmap-anydpi-v26/ic_launcher.xml -> ic_launcher basename = os.path.splitext(os.path.basename(icon_path))[0] icon_keywords.insert(0, basename) # Sometimes xml is ic_launcher_round, but png is ic_launcher if '_round' in basename: icon_keywords.insert(1, basename.replace('_round', '')) best_icon = None # Strategy A: Strict density + keyword match for density in densities: for keyword in icon_keywords: pattern = re.compile(f".*res/.*{density}.*/.*{keyword}.*\.png$", re.IGNORECASE) for f in files: if pattern.match(f): best_icon = f break if best_icon: break if best_icon: break # Strategy B: Loose match in res/ (any density, strict keyword) if not best_icon: for keyword in icon_keywords: for f in files: if f.endswith(f"/{keyword}.png"): best_icon = f break if best_icon: break # Strategy C: Desperation - ANY png with 'launcher' or 'icon' in name if not best_icon: for f in files: if f.endswith('.png') and ('launcher' in f or 'icon' in f) and 'notification' not in f: best_icon = f break # Strategy D: The "Big Gun" - Find the largest PNGs in the APK (heuristic) if not best_icon: msg = "Strategy D: Searching by file size..." logging.getLogger('androguard').info(msg) if HAS_LOGURU: loguru_logger.info(msg) png_files = [] with zipfile.ZipFile(self.file_path, 'r') as z: for info in z.infolist(): if info.filename.endswith('.png') and not info.filename.endswith('.9.png'): if 'assets/' not in info.filename: png_files.append(info) # Sort by size descending png_files.sort(key=lambda x: x.file_size, reverse=True) if png_files: best_icon = png_files[0].filename msg = f"Strategy D picked largest PNG: {best_icon} ({png_files[0].file_size} bytes)" logging.getLogger('androguard').info(msg) if HAS_LOGURU: loguru_logger.info(msg) if best_icon: msg = f"Fallback icon found: {best_icon}" logging.getLogger('androguard').info(msg) if HAS_LOGURU: loguru_logger.info(msg) self.icon_data = self.apk.get_file(best_icon) else: msg = "No fallback icon found." logging.getLogger('androguard').warning(msg) if HAS_LOGURU: loguru_logger.warning(msg) except Exception as e: msg = f"Error getting icon: {e}" logging.getLogger('androguard').error(msg) if HAS_LOGURU: loguru_logger.error(msg) self._update_progress(60, "Analyzing Certificate...") # Cert Info (Fast Way) try: certs = self.apk.get_certificates() if certs: cert = certs[0] self.cert_info = { 'serial': hex(cert.serial_number)[2:].upper(), 'issuer': cert.issuer.human_friendly, 'subject': cert.subject.human_friendly, 'sha1': cert.sha1_fingerprint.replace(" ", ":"), 'sha256': cert.sha256_fingerprint.replace(" ", ":") } except Exception as e: msg = f"Error getting cert info: {e}" logging.getLogger('androguard').error(msg) if HAS_LOGURU: loguru_logger.error(msg) self._update_progress(80, "Checking Protection...") # Protection try: cp = CheckProtect(self.apk) self.protect_info = cp.check_protectflag() except Exception as e: self.protect_info = f"Check failed: {e}" # Components self.info['activities'] = self.apk.get_activities() self.info['services'] = self.apk.get_services() self.info['receivers'] = self.apk.get_receivers() self.info['providers'] = self.apk.get_providers() self.info['permissions'] = self.apk.get_permissions() self._update_progress(100, "Done") except Exception as e: self.error = f"Analysis failed: {str(e)}" import traceback traceback.print_exc() return False finally: # Clean up standard logger loggers_to_hook = ['androguard', 'androguard.core.axml', 'androguard.core.apk'] for name in loggers_to_hook: if hasattr(self, 'log_handler'): logging.getLogger(name).removeHandler(self.log_handler) # Clean up loguru if HAS_LOGURU and self.loguru_sink_id is not None: try: loguru_logger.remove(self.loguru_sink_id) except: pass return True def get_basic_info(self): return { 'name': self.info.get('app_name'), 'package': self.info.get('package_name'), 'version': f"{self.info.get('version_name')} ({self.info.get('version_code')})", 'min_sdk': self.info.get('min_sdk'), 'target_sdk': self.info.get('target_sdk'), 'size': self._format_size(self.info.get('file_size', 0)), 'md5': self.info.get('md5'), 'protect': self.protect_info } def _format_size(self, size): for unit in ['B', 'KB', 'MB', 'GB']: if size < 1024: return f"{size:.2f} {unit}" size /= 1024 return f"{size:.2f} TB" ================================================ FILE: core/DeepScanner.py ================================================ # -*- coding: utf-8 -*- import re import logging import zipfile import string try: from androguard.core.dex import DEX except ImportError: DEX = None class DeepScanner: def __init__(self, apk_obj=None, ipa_path=None, binary_path_in_zip=None): self.apk = apk_obj self.ipa_path = ipa_path self.binary_path_in_zip = binary_path_in_zip self.is_ipa = (ipa_path is not None) self.results = { "urls": [], "ips": [], "sensitive_strings": [], "anti_debug": [], "crypto": [] } # Regex Patterns self.patterns = { "url": re.compile(r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'), "ip": re.compile(r'\b(?:\d{1,3}\.){3}\d{1,3}\b'), "ak_sk": re.compile(r'(?i)(access_key|secret_key|api_key|app_secret|app_id).*?["\']([a-zA-Z0-9]{16,})["\']'), } # Keywords for string search self.suspicious_keywords = [ "root", "su", "superuser", "magisk", "xposed", "frida", "substrate", "hook", "proxy", "vpn", "emulator", "jailbreak", "cydia" ] # Android Patterns self.android_anti_debug = [ "android/os/Debug;->isDebuggerConnected", "android/os/Debug;->waitForDebugger", "java/lang/System;->exit", "ptrace" ] self.android_crypto = [ "javax/crypto/Cipher", "javax/crypto/spec/SecretKeySpec", "java/security/MessageDigest" ] # iOS Patterns self.ios_anti_debug = [ "ptrace", "sysctl", "getppid", "isatty", "ioctl", "svc 0x80", # SVC call "task_for_pid" ] self.ios_crypto = [ "CCCrypt", "CCSha256", "CCSha1", "CCMd5", "SecItemAdd", "SecItemCopyMatching", "SecKeyEncrypt", "SecKeyDecrypt" ] def scan(self, progress_callback=None): if self.is_ipa: return self._scan_ipa(progress_callback) else: return self._scan_apk(progress_callback) def _scan_apk(self, progress_callback): if not self.apk: return self.results dex_files = [] try: # Get all DEX files for f in self.apk.get_files(): if f.endswith('.dex'): dex_files.append(f) except: pass total_dex = len(dex_files) if total_dex == 0: return self.results for idx, dex_path in enumerate(dex_files): if progress_callback: progress_callback(int((idx / total_dex) * 100), f"Scanning {dex_path}...") try: dex_data = self.apk.get_file(dex_path) if DEX: d = DEX(dex_data) # 1. String Analysis for s in d.get_strings(): self._analyze_string(s) # 2. Method/API Analysis all_strings = set(d.get_strings()) self._analyze_apis(all_strings) else: # Fallback if androguard dex not available strings = self._extract_strings(dex_data) for s in strings: self._analyze_string(s) except Exception as e: logging.error(f"Error scanning {dex_path}: {e}") self._deduplicate() return self.results def _scan_ipa(self, progress_callback): if not self.ipa_path: return self.results try: with zipfile.ZipFile(self.ipa_path, 'r') as z: # Use passed binary path if available # However, the binary_path might be in a different encoding than what zipfile expects # if the zip file has encoding issues (CP437 vs UTF-8). # We need to robustly find the file in the zip. target_binary_info = None # Helper to normalize names for comparison def normalize(name): return name.replace('\\', '/').rstrip('/') # 1. Try to find the passed binary path directly if self.binary_path_in_zip: try: target_binary_info = z.getinfo(self.binary_path_in_zip) except KeyError: # Failed direct lookup, might be encoding issue or slight path mismatch pass # 2. If not found, try to search for it using robust encoding check if not target_binary_info: logging.info(f"Direct lookup for {self.binary_path_in_zip} failed. Scanning all files in zip...") # Candidate files list for debugging/fallback candidates = [] # We look for Payload/*.app/BinaryName for info in z.infolist(): # Fix encoding for the name in the zip try: real_name = info.filename.encode('cp437').decode('utf-8') except: try: real_name = info.filename.encode('cp437').decode('gbk') except: real_name = info.filename # Store normalized name for logic norm_real = normalize(real_name) # Debug log for potentially matching files if '.app/' in norm_real and not norm_real.endswith('/'): candidates.append((norm_real, info)) # Check if this looks like our binary if self.binary_path_in_zip: # Compare normalized paths # Also try simple filename match if full path fails (sometimes parent dirs differ slightly) target_norm = normalize(self.binary_path_in_zip) target_basename = target_norm.split('/')[-1] real_basename = norm_real.split('/')[-1] if norm_real == target_norm: target_binary_info = info logging.info(f"Found binary via normalized path match: {real_name}") break elif real_basename == target_basename and '.app/' in norm_real: # Strong candidate if basename matches and it's inside an app bundle # But we should be careful not to pick a resource file with same name (unlikely for binary) # Let's store it as a fallback if exact match fails if not target_binary_info: target_binary_info = info logging.info(f"Found binary via basename match: {real_name}") else: # Fallback guessing logic # Look for file with same name as .app folder parts = norm_real.split('/') for i, part in enumerate(parts): if part.endswith('.app'): app_name = part.replace('.app', '') if i + 1 < len(parts) and parts[i+1] == app_name: target_binary_info = info break # If still not found, try the largest file in the .app folder if not target_binary_info and candidates: logging.info("Binary not found via name match. Trying largest file in .app bundle...") largest_file = None max_size = 0 for name, info in candidates: # Ignore obvious non-binary files if name.lower().endswith(('.png', '.plist', '.nib', '.storyboardc', '.car', '.mobileprovision', '.cer')): continue if info.file_size > max_size: max_size = info.file_size largest_file = info if largest_file: target_binary_info = largest_file logging.info(f"Selected largest file as binary candidate: {largest_file.filename}") if target_binary_info: if progress_callback: progress_callback(10, f"Scanning binary {target_binary_info.filename}...") with z.open(target_binary_info) as f: data = f.read() # Extract strings from binary strings_gen = self._extract_strings(data) # Convert generator to list to get length string_list = list(strings_gen) total = len(string_list) for i, s in enumerate(string_list): if i % 5000 == 0 and progress_callback and total > 0: progress_callback(int((i / total) * 90), "Analyzing strings...") self._analyze_string(s) # Simple API check via strings presence self._analyze_apis(set(string_list)) else: logging.error(f"Binary {self.binary_path_in_zip} not found in zip (Encoding issue?)") except Exception as e: logging.error(f"Error scanning IPA: {e}") self._deduplicate() return self.results def _extract_strings(self, data, min_length=4): """ Extract printable strings from binary data """ result = "" for b in data: c = chr(b) if c in string.printable: result += c else: if len(result) >= min_length: yield result result = "" if len(result) >= min_length: yield result def _analyze_string(self, s): # Check URL if self.patterns['url'].match(s): self.results['urls'].append(s) # Check IP elif self.patterns['ip'].match(s) and not s.startswith("0."): self.results['ips'].append(s) # Check Keywords s_lower = s.lower() for kw in self.suspicious_keywords: if kw in s_lower: # Store only the string content, not the keyword prefix # We can append the keyword as metadata if needed, but user requested clean string self.results['sensitive_strings'].append(s) break # Avoid adding same string multiple times if it matches multiple keywords def _analyze_apis(self, all_strings): if self.is_ipa: target_anti_debug = self.ios_anti_debug target_crypto = self.ios_crypto else: target_anti_debug = self.android_anti_debug target_crypto = self.android_crypto for api in target_anti_debug: # Loose check parts = api.split('->') term = parts[-1] if len(parts) > 1 else api if term in all_strings: self.results['anti_debug'].append(api) for api in target_crypto: parts = api.split('/') term = parts[-1] if term in all_strings: self.results['crypto'].append(api) def _deduplicate(self): for k in self.results: self.results[k] = list(set(self.results[k])) ================================================ FILE: core/IpaAnalyzer.py ================================================ import zipfile import plistlib import os import hashlib import sys import struct from datetime import datetime # Ensure libs are in path current_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) libs_dir = os.path.join(current_dir, 'libs') if libs_dir not in sys.path: sys.path.insert(0, libs_dir) from asn1crypto import cms class IpaAnalyzer: def __init__(self, file_path): self.file_path = file_path self.info = {} self.provision = {} self.icon_data = None self.error = None self.progress_callback = None self.is_encrypted = False self.binary_path = None # Store binary path for deep scan def set_progress_callback(self, callback): self.progress_callback = callback def _update_progress(self, value, message=""): if self.progress_callback: self.progress_callback(value, message) def _find_zip_entry(self, z, folder, name): """ Robustly find a file in the zip, handling encoding mismatches. folder: The folder path in the zip (likely mojibake/cp437) name: The target filename (could be UTF-8 from Info.plist) """ # 1. Try direct join (Success if name was also derived from zip listing) path = os.path.join(folder, name).replace('\\', '/') try: return z.getinfo(path) except KeyError: pass # 2. Iterative search in the specific folder # We know 'folder' exists in the zip (it was found via namelist) # We need to find 'name' inside 'folder', but 'name' might need encoding conversion # Normalize folder to ensure it ends with / if not folder.endswith('/'): folder += '/' # List all files in this folder candidates = [] for n in z.namelist(): if n.startswith(folder): # Get the filename part fname = n[len(folder):] # Skip subdirectories if '/' in fname.rstrip('/'): continue if not fname: continue candidates.append(n) # Try to match 'name' against candidates # Convert 'name' (UTF-8) to potential CP437 mojibake representation? # Or convert candidates (CP437) to UTF-8/GBK and compare with 'name'? for candidate in candidates: fname = candidate[len(folder):] # Try 1: Is it a direct match? (Already checked by getinfo, but logic here covers scanning) if fname == name: return z.getinfo(candidate) # Try 2: Decode candidate from cp437 -> gbk/utf-8 and compare with name try: decoded = fname.encode('cp437').decode('gbk') if decoded == name: return z.getinfo(candidate) except: pass try: decoded = fname.encode('cp437').decode('utf-8') if decoded == name: return z.getinfo(candidate) except: pass # 3. Last resort: Return the largest file in the folder (heuristics for main binary) best_candidate = None max_size = 0 for cand_path in candidates: # Skip known non-binary extensions lower_name = cand_path.lower() if lower_name.endswith(('.png', '.plist', '.nib', '.car', '.mobileprovision', '.xml', '.json', '.wav', '.mp3')): continue info = z.getinfo(cand_path) if info.file_size > max_size: max_size = info.file_size best_candidate = info return best_candidate def _calculate_md5_chunked(self, path): hash_md5 = hashlib.md5() file_size = os.path.getsize(path) read_size = 0 chunk_size = 8192 # 8KB chunks with open(path, "rb") as f: while True: chunk = f.read(chunk_size) if not chunk: break hash_md5.update(chunk) read_size += len(chunk) # Progress 0-10% percent = int((read_size / file_size) * 10) self._update_progress(percent, f"Calculating MD5... ({int((read_size/file_size)*100)}%)") return hash_md5.hexdigest().upper() def analyze(self): if not os.path.exists(self.file_path): self.error = "File not found" return False try: self._update_progress(0, "Calculating MD5...") # File Stats stat = os.stat(self.file_path) self.info['file_size'] = stat.st_size # Chunked MD5 self.info['md5'] = self._calculate_md5_chunked(self.file_path) self._update_progress(10, "Reading IPA Structure...") with zipfile.ZipFile(self.file_path, 'r') as z: # Find Payload/*.app app_folder = None app_binary_name = None app_binary_path = None namelist = z.namelist() total_files = len(namelist) # Progress 10-30% for scanning files for i, name in enumerate(namelist): if i % 100 == 0: percent = 10 + int((i / total_files) * 20) self._update_progress(percent, "Scanning IPA structure...") if name.startswith('Payload/') and name.endswith('.app/'): app_folder = name # Usually binary name matches .app folder name # Payload/Name.app/ -> Name app_binary_name = os.path.splitext(os.path.basename(name.rstrip('/')))[0] # Don't break immediately, scan all to ensure correct progress? # Actually breaking is fine for performance, just jump progress. break if not app_folder: self.error = "Invalid IPA: No .app folder found" return False self._update_progress(30, "Found App Bundle: " + app_folder) if app_binary_name: # app_binary_name is derived from app_folder basename (mojibake) # So this simple join usually works if binary name matches folder name # But we use the robust finder anyway to be safe # app_binary_path = os.path.join(app_folder, app_binary_name).replace('\\', '/') # self.binary_path = app_binary_path entry = self._find_zip_entry(z, app_folder, app_binary_name) if entry: self.binary_path = entry.filename self._update_progress(35, "Parsing Info.plist...") # Parse Info.plist info_plist_path = os.path.join(app_folder, 'Info.plist').replace('\\', '/') try: with z.open(info_plist_path) as f: plist_content = f.read() try: plist_data = plistlib.loads(plist_content) except: pass else: self._parse_info_plist(plist_data) except KeyError: self.error = "Info.plist not found" # If binary name wasn't guessed correctly, try to use CFBundleExecutable from plist if self.info.get('raw_plist') and 'CFBundleExecutable' in self.info['raw_plist']: app_binary_name = self.info['raw_plist']['CFBundleExecutable'] # app_binary_name here is UTF-8 (e.g. "网校企业版") # app_folder is Mojibake (e.g. "Payload/τ╜æ...") # Direct join will fail. Use robust finder. entry = self._find_zip_entry(z, app_folder, app_binary_name) if entry: self.binary_path = entry.filename self._update_progress(50, "Checking Cryptid (Encryption)...") # Check Encryption (Mach-O cryptid) if self.binary_path: try: # Use self.binary_path which is the correct internal zip path with z.open(self.binary_path) as f: # Read header to determine if fat binary or thin header = f.read(4) f.seek(0) if len(header) == 4: self.is_encrypted = self._check_cryptid(f) except KeyError: print(f"Binary file not found in IPA: {self.binary_path}") except Exception as e: print(f"Error checking cryptid: {e}") self._update_progress(70, "Parsing Provisioning Profile...") # Parse embedded.mobileprovision prov_path = os.path.join(app_folder, 'embedded.mobileprovision').replace('\\', '/') try: with z.open(prov_path) as f: prov_bytes = f.read() self._parse_provision(prov_bytes) except KeyError: pass self._update_progress(90, "Extracting Icon...") # Extract Icon logic... icon_name = None if 'CFBundleIcons' in self.info.get('raw_plist', {}): try: icons = self.info['raw_plist']['CFBundleIcons'].get('CFBundlePrimaryIcon', {}).get('CFBundleIconFiles', []) if icons: icon_name = icons[-1] except: pass if not icon_name and 'CFBundleIconFiles' in self.info.get('raw_plist', {}): try: icons = self.info['raw_plist']['CFBundleIconFiles'] if icons: icon_name = icons[-1] except: pass if icon_name: candidates = [ os.path.join(app_folder, icon_name).replace('\\', '/'), os.path.join(app_folder, icon_name + '.png').replace('\\', '/'), os.path.join(app_folder, icon_name + '@2x.png').replace('\\', '/'), os.path.join(app_folder, icon_name + '@3x.png').replace('\\', '/') ] for name in z.namelist(): if name.startswith(app_folder) and icon_name in name and name.endswith('.png'): candidates.append(name) for path in candidates: try: with z.open(path) as f: self.icon_data = f.read() break except KeyError: continue self._update_progress(100, "Done") except Exception as e: self.error = f"Analysis failed: {str(e)}" import traceback traceback.print_exc() return False return True def _check_cryptid(self, f): """ Check LC_ENCRYPTION_INFO or LC_ENCRYPTION_INFO_64 load commands in Mach-O binary. Returns True if cryptid != 0 (Encrypted/AppStore), False otherwise. Handles Fat Binaries (Universal) by checking all architectures. """ MH_MAGIC = 0xfeedface MH_CIGAM = 0xcefaedfe MH_MAGIC_64 = 0xfeedfacf MH_CIGAM_64 = 0xcffaedfe FAT_MAGIC = 0xcafebabe FAT_CIGAM = 0xbebafeca LC_ENCRYPTION_INFO = 0x21 LC_ENCRYPTION_INFO_64 = 0x2C def read_uint32(fh, endian='>'): d = fh.read(4) if len(d) < 4: return None return struct.unpack(endian + 'I', d)[0] magic_bytes = f.read(4) f.seek(0) if len(magic_bytes) < 4: return False magic = struct.unpack('>I', magic_bytes)[0] # Determine architectures to check archs = [] # (offset, size) if magic == FAT_MAGIC or magic == FAT_CIGAM: # Fat Binary endian = '>' # Fat header is always big-endian f.seek(4) nfat_arch = read_uint32(f, endian) for i in range(nfat_arch): # fat_arch struct: cpu_type, cpu_subtype, offset, size, align f.seek(8 + i * 20) # 4+4 header + 20 bytes per arch cpu_type = read_uint32(f, endian) cpu_subtype = read_uint32(f, endian) offset = read_uint32(f, endian) size = read_uint32(f, endian) archs.append(offset) else: # Thin Binary archs.append(0) for offset in archs: f.seek(offset) magic_bytes = f.read(4) if len(magic_bytes) < 4: continue magic = struct.unpack('>I', magic_bytes)[0] is_64 = False endian = '<' # Default little endian for mach-o (ARM) if magic == MH_MAGIC: pass elif magic == MH_CIGAM: endian = '>' elif magic == MH_MAGIC_64: is_64 = True elif magic == MH_CIGAM_64: is_64 = True endian = '>' else: continue # Unknown magic # Read mach_header # magic(4) + cputype(4) + cpusubtype(4) + filetype(4) + ncmds(4) + sizeofcmds(4) + flags(4) [+ reserved(4) if 64] header_size = 28 if not is_64 else 32 f.seek(offset + 16) # Skip to ncmds ncmds = read_uint32(f, endian) # Start of Load Commands f.seek(offset + header_size) for _ in range(ncmds): # load_command struct: cmd(4), cmdsize(4) cmd_start = f.tell() cmd = read_uint32(f, endian) cmd_size = read_uint32(f, endian) if cmd == LC_ENCRYPTION_INFO or cmd == LC_ENCRYPTION_INFO_64: # encryption_info_command: cmd, cmdsize, cryptoff, cryptsize, cryptid # We need cryptid (offset 16 from start of cmd) f.seek(cmd_start + 16) cryptid = read_uint32(f, endian) if cryptid and cryptid > 0: return True # Found encryption! f.seek(cmd_start + cmd_size) return False def _parse_info_plist(self, plist): self.info['raw_plist'] = plist self.info['package_name'] = plist.get('CFBundleIdentifier', 'Unknown') self.info['app_name'] = plist.get('CFBundleDisplayName', plist.get('CFBundleName', 'Unknown')) self.info['version_name'] = plist.get('CFBundleShortVersionString', '') self.info['version_code'] = plist.get('CFBundleVersion', '') self.info['min_os'] = plist.get('MinimumOSVersion', '') self.info['platform'] = plist.get('DTPlatformName', 'ios') self.info['supported_platforms'] = plist.get('CFBundleSupportedPlatforms', []) self.info['url_schemes'] = [] if 'CFBundleURLTypes' in plist: for url_type in plist['CFBundleURLTypes']: schemes = url_type.get('CFBundleURLSchemes', []) self.info['url_schemes'].extend(schemes) def _parse_provision(self, content): try: content_info = cms.ContentInfo.load(content) signed_data = content_info['content'] encap_content = signed_data['encap_content_info'] plist_bytes = encap_content['content'].native data = plistlib.loads(plist_bytes) self.provision = { 'app_id_name': data.get('AppIDName'), 'team_name': data.get('TeamName'), 'team_id': data.get('TeamIdentifier', [''])[0], 'uuid': data.get('UUID'), 'creation_date': data.get('CreationDate'), 'expiration_date': data.get('ExpirationDate'), 'entitlements': data.get('Entitlements', {}), 'provisioned_devices': data.get('ProvisionedDevices', []) } except Exception as e: print(f"Error parsing mobileprovision: {e}") def get_basic_info(self): # Determine protection status text # If cryptid == 1, it's Encrypted (AppStore build, not cracked) -> "未脱壳" # If cryptid == 0, it's Decrypted (Cracked/Debug build) -> "已脱壳" protect_status = "未脱壳 (Encrypted)" if self.is_encrypted else "已脱壳 (Decrypted)" return { 'name': self.info.get('app_name'), 'package': self.info.get('package_name'), 'version': f"{self.info.get('version_name')} ({self.info.get('version_code')})", 'min_sdk': f"iOS {self.info.get('min_os')}", 'target_sdk': 'N/A', 'size': self._format_size(self.info.get('file_size', 0)), 'md5': self.info.get('md5'), 'protect': protect_status } def get_details(self): return { 'url_schemes': self.info.get('url_schemes', []), 'platform': self.info.get('platform'), 'supported_platforms': self.info.get('supported_platforms'), 'provision': self.provision } def _format_size(self, size): for unit in ['B', 'KB', 'MB', 'GB']: if size < 1024: return f"{size:.2f} {unit}" size /= 1024 return f"{size:.2f} TB" ================================================ FILE: core/__init__.py ================================================ ================================================ FILE: libs/androguard/__init__.py ================================================ # The current version of Androguard # Please use only this variable in any scripts, # to keep the version number the same everywhere. __version__ = "4.1.3" ================================================ FILE: libs/androguard/cli/__init__.py ================================================ ================================================ FILE: libs/androguard/cli/cli.py ================================================ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """Androguard is a full Python tool to reverse Android Applications.""" import json import sys import click import networkx as nx from loguru import logger from androguard.session import Session import androguard.core.apk from androguard import util from androguard.cli.main import ( androarsc_main, androaxml_main, androdis_main, androdump_main, androlyze_main, androsign_main, androtrace_main, export_apps_to_format, ) @click.group(help=__doc__) @click.version_option(version=androguard.__version__) @click.option( "--verbose", "--debug", 'verbosity', flag_value='verbose', help="Print more", ) def entry_point(verbosity): if verbosity is None: util.set_log("ERROR") else: util.set_log("INFO") logger.add("androguard.log", retention="10 days") @entry_point.command() @click.option( '--input', '-i', 'input_', type=click.Path(exists=True, file_okay=True, dir_okay=False), help='AndroidManifest.xml or APK to parse (legacy option)', ) @click.option( '--output', '-o', help='filename to save the decoded AndroidManifest.xml to, default stdout', ) @click.option( "--resource", "-r", help="Resource (any binary XML file) inside the APK to parse instead of AndroidManifest.xml", ) @click.argument( 'file_', required=False, type=click.Path(exists=True, file_okay=True, dir_okay=False), ) def axml(input_, output, file_, resource): """ Parse the AndroidManifest.xml. Parsing is either direct or from a given APK and prints in XML format or saves to file. This tool can also be used to process any AXML encoded file, for example from the layout directory. Example: >>> androguard axml AndroidManifest.xml """ if file_ is not None and input_ is not None: print( "Can not give --input and positional argument! " "Please use only one of them!" ) sys.exit(1) if file_ is None and input_ is None: print("Give one file to decode!") sys.exit(1) if file_ is not None: androaxml_main(file_, output, resource) elif input_ is not None: androaxml_main(input_, output, resource) @entry_point.command() @click.option( '--input', '-i', 'input_', type=click.Path(exists=True), help='resources.arsc or APK to parse (legacy option)', ) @click.argument( 'file_', required=False, ) @click.option( '--output', '-o', # required=True, # not required due to --list-types help='filename to save the decoded resources to', ) @click.option( '--package', '-p', help='Show only resources for the given package name ' '(default: the first package name found)', ) @click.option( '--locale', '-l', help='Show only resources for the given locale (default: \'\\x00\\x00\')', ) @click.option( '--type', '-t', 'type_', help='Show only resources of the given type (default: public)', ) @click.option( '--id', 'id_', help="Resolve the given ID for the given locale and package. Provide the hex ID!", ) @click.option( '--list-packages', is_flag=True, default=False, help='List all package names and exit', ) @click.option( '--list-locales', is_flag=True, default=False, help='List all package names and exit', ) @click.option( '--list-types', is_flag=True, default=False, help='List all types and exit', ) def arsc( input_, file_, output, package, locale, type_, id_, list_packages, list_locales, list_types, ): """ Decode resources.arsc either directly from a given file or from an APK. Example: >>> androguard arsc app.apk """ from androguard.core import androconf, apk, axml if file_ and input_: logger.info( "Can not give --input and positional argument! Please use only one of them!" ) sys.exit(1) if not input_ and not file_: logger.info("Give one file to decode!") sys.exit(1) if input_: fname = input_ else: fname = file_ ret_type = androconf.is_android(fname) if ret_type == "APK": a = apk.APK(fname) arscobj = a.get_android_resources() if not arscobj: logger.error("The APK does not contain a resources file!") sys.exit(0) elif ret_type == "ARSC": with open(fname, 'rb') as fp: arscobj = axml.ARSCParser(fp.read()) if not arscobj: logger.error("The resources file seems to be invalid!") sys.exit(1) else: logger.error("Unknown file type!") sys.exit(1) if id_: # Strip the @, if any if id_[0] == "@": id_ = id_[1:] try: i_id = int(id_, 16) except ValueError: print( "ID '{}' could not be parsed! have you supplied the correct hex ID?".format( id_ ) ) sys.exit(1) name = arscobj.get_resource_xml_name(i_id) if not name: print("Specified resource was not found!") sys.exit(1) print("@{:08x} resolves to '{}'".format(i_id, name)) print() # All the information is in the config. # we simply need to get the actual value of the entry for config, entry in arscobj.get_resolved_res_configs(i_id): print( "{} = '{}'".format( ( config.get_qualifier() if not config.is_default() else "" ), entry, ) ) sys.exit(0) if list_packages: print("\n".join(arscobj.get_packages_names())) sys.exit(0) if list_locales: for p in arscobj.get_packages_names(): print("In Package:", p) print( "\n".join( map( lambda x: ( " \\x00\\x00" if x == "\x00\x00" else " {}".format(x) ), sorted(arscobj.get_locales(p)), ) ) ) sys.exit(0) if list_types: for p in arscobj.get_packages_names(): print("In Package:", p) for locale in sorted(arscobj.get_locales(p)): print( " In Locale: {}".format( "\\x00\\x00" if locale == "\x00\x00" else locale ) ) print( "\n".join( map( " {}".format, sorted(arscobj.get_types(p, locale)), ) ) ) sys.exit(0) androarsc_main( arscobj, outp=output, package=package, typ=type_, locale=locale ) @entry_point.command() @click.option( '--input', '-i', 'input_', type=click.Path(exists=True, dir_okay=False, file_okay=True), help='APK to parse (legacy option)', ) @click.argument( 'file_', type=click.Path(exists=True, dir_okay=False, file_okay=True), required=False, ) @click.option( '--output', '-o', required=True, help='output directory. If the output folder already exsist, ' 'it will be overwritten!', ) @click.option( '--format', '-f', 'format_', help='Additionally write control flow graphs for each method, specify ' 'the format for example png, jpg, raw (write dot file), ...', type=click.Choice(['png', 'jpg', 'raw']), ) @click.option( '--jar', '-j', is_flag=True, default=False, help='Use DEX2JAR to create a JAR file', ) @click.option( '--limit', '-l', help='Limit to certain methods only by regex (default: \'.*\')', ) @click.option( '--decompiler', '-d', help='Use a different decompiler (default: DAD)', ) def decompile(input_, file_, output, format_, jar, limit, decompiler): """ Decompile an APK and create Control Flow Graphs. Example: >>> androguard resources.arsc """ from androguard import session if file_ and input_: print( "Can not give --input and positional argument! " "Please use only one of them!", file=sys.stderr, ) sys.exit(1) if not input_ and not file_: print("Give one file to decode!", file=sys.stderr) sys.exit(1) if input_: fname = input_ else: fname = file_ s = session.Session() with open(fname, "rb") as fd: s.add(fname, fd.read()) export_apps_to_format(fname, s, output, limit, jar, decompiler, format_) @entry_point.command() @click.option( '--hash', 'hash_', type=click.Choice(['md5', 'sha1', 'sha256', 'sha512']), default='sha1', show_default=True, help='Fingerprint Hash algorithm', ) @click.option( '--all', '-a', 'print_all_hashes', is_flag=True, default=False, show_default=True, help='Print all supported hashes', ) @click.option( '--show', '-s', is_flag=True, default=False, show_default=True, help='Additionally of printing the fingerprints, show more ' 'certificate information', ) @click.argument( 'apk', nargs=-1, type=click.Path(exists=True, dir_okay=False, file_okay=True), ) def sign(hash_, print_all_hashes, show, apk): """Return the fingerprint(s) of all certificates inside an APK.""" androsign_main(apk, hash_, print_all_hashes, show) @entry_point.command() @click.argument( 'apks', nargs=-1, type=click.Path(exists=True, file_okay=True, dir_okay=False), ) def apkid(apks: list[str]): """Prints the packageName/versionCode/versionName per APK as JSON. :param apks: list of apk filepaths """ from androguard.core.apk import get_apkid logger.debug("APKID") results = dict() for apk in apks: results[apk] = get_apkid(apk) print(json.dumps(results, indent=2)) @entry_point.command() @click.option( '--session', help='Previously saved session to load instead of a file', type=click.Path(exists=True), ) @click.argument( 'apk', default=None, required=False, type=click.Path(exists=True, dir_okay=False, file_okay=True), ) def analyze(session: str, apk: str): """Open a IPython Shell and start reverse engineering. :param session: session file to restore :param apk: apk filename to analyze, if session not set """ androlyze_main(session, apk) @entry_point.command() @click.option( "-o", "--offset", default=0, type=int, help="Offset to start dissassembly inside the file", ) @click.option( "-s", "--size", default=0, type=int, help="Number of bytes from offset to disassemble, 0 for whole file", ) @click.argument( "DEX", type=click.Path(exists=True, dir_okay=False, file_okay=True), ) def disassemble(offset, size, dex): """ Disassemble Dalvik Code with size SIZE starting from an offset """ androdis_main(offset, size, dex) @entry_point.command() @click.argument( 'apk', default=None, required=False, type=click.Path(exists=True, dir_okay=False, file_okay=True), ) @click.option( "-m", "--modules", multiple=True, default=[], help="A list of modules to load in frida", ) @click.option( '--enable-ui', is_flag=True, default=False, help='Enable UI', ) def trace(apk, modules, enable_ui): """ Push an APK on the phone and start to trace all interesting methods from the modules list Example: >>> androguard trace test.APK -m "ipc/*" -m "webviews/*" -m "modules/**" >>> androguard trace test.APK -m "ipc/*" -m "webviews/*" -m "modules/**" --enable-ui """ androtrace_main(apk, modules, False, enable_ui) @entry_point.command() @click.argument( 'package_name', default=None, required=False, ) @click.option( "-m", "--modules", multiple=True, default=[], help="A list of modules to load in frida", ) def dtrace(package_name, modules): """ Start dynamically an installed APK on the phone and start to trace all interesting methods from the modules list Example: >>> androguard dtrace package_name -m "ipc/*" -m "webviews/*" -m "modules/**" """ androtrace_main(package_name, modules, True) @entry_point.command() @click.argument( 'package_name', default=None, required=False, ) @click.option( "-m", "--modules", multiple=True, default=["androguard/pentest/modules/helpers/dump/dexdump.js"], help="A list of modules to load in frida", ) def dump(package_name, modules): """ Start and dump dynamically an installed APK on the phone Example: >>> androguard dump package_name """ androdump_main(package_name, modules) # callgraph exporting utility functions def _write_gml(G, path): """Wrapper around nx.write_gml""" return nx.write_gml(G, path, stringizer=str) def _write_gpickle(G, path): """Wrapper around pickle dump""" import pickle with open(path, 'wb') as f: pickle.dump(G, f, pickle.HIGHEST_PROTOCOL) def _write_yaml(G, path): """Wrapper around yaml dump""" import yaml with open(path, 'w') as f: yaml.dump(G, f) # mapping of types to their respective exporting functions write_methods = dict( gml=_write_gml, gexf=nx.write_gexf, # gpickle=_write_gpickle, # Pickling can't be done due to BufferedReader attributes (e.g. EncodedMethod.buff) not being serializable graphml=nx.write_graphml, # yaml=_write_yaml, # Same limitation as gpickle net=nx.write_pajek, ) @entry_point.command() @click.argument( 'file_', type=click.Path(exists=True, dir_okay=False, file_okay=True), required=True, ) @click.option( '--output', '-o', default='callgraph.gml', help='Filename of the output graph file', ) @click.option( '--output-type', type=click.Choice(list(write_methods.keys()), case_sensitive=False), default='gml', help='Type of the graph to output ', ) @click.option( '--show', '-s', default=False, is_flag=True, help='instead of saving the graph file, render it with matplotlib', ) @click.option( '--classname', default='.*', help='Regex to filter by classname', ) @click.option( '--methodname', default='.*', help='Regex to filter by methodname', ) @click.option( '--descriptor', default='.*', help='Regex to filter by descriptor', ) @click.option( '--accessflag', default='.*', help='Regex to filter by accessflag', ) @click.option( '--no-isolated', default=False, is_flag=True, help='Do not store methods which has no xrefs', ) def cg( file_, output, output_type, show, classname, methodname, descriptor, accessflag, no_isolated, ): """ Create a call graph based on the data of Analysis and export it into a graph format. """ import matplotlib.pyplot as plt from androguard.core.analysis.analysis import ExternalMethod from androguard.core.bytecode import FormatClassToJava from androguard.misc import AnalyzeAPK a, d, dx = AnalyzeAPK(file_) entry_points = map( FormatClassToJava, a.get_activities() + a.get_providers() + a.get_services() + a.get_receivers(), ) entry_points = list(entry_points) callgraph = dx.get_call_graph( classname, methodname, descriptor, accessflag, no_isolated, entry_points, ) if show: try: import PyQt5 except ImportError: print( "PyQt5 is not installed. In most OS you can install it by running 'pip install PyQt5'.\n" ) exit() pos = nx.spring_layout(callgraph) internal = [] external = [] for n in callgraph: if isinstance(n, ExternalMethod): external.append(n) else: internal.append(n) nx.draw_networkx_nodes( callgraph, pos=pos, node_color='r', nodelist=internal ) nx.draw_networkx_nodes( callgraph, pos=pos, node_color='b', nodelist=external ) nx.draw_networkx_edges(callgraph, pos, width=0.5, arrows=True) nx.draw_networkx_labels( callgraph, pos=pos, font_size=6, labels={ n: f"{n.get_class_name()} {n.name} {n.descriptor}" for n in callgraph.nodes }, ) plt.draw() plt.show() else: output_type_lower = output_type.lower() if output_type_lower not in write_methods: print( f"Could not find a method to export files to {output_type_lower}!" ) sys.exit(1) write_methods[output_type_lower](callgraph, output) if __name__ == '__main__': entry_point() ================================================ FILE: libs/androguard/cli/main.py ================================================ # core modules import os import re import shutil import sys from typing import Union from loguru import logger # 3rd party modules from lxml import etree from pygments import highlight from pygments.formatters.terminal import TerminalFormatter from pygments.lexers import get_lexer_by_name from androguard.core import androconf, apk # internal modules from androguard.core.axml import ARSCParser, AXMLPrinter from androguard.core.dex import get_bytecodes_method from androguard.session import Session from androguard.ui import DynamicUI from androguard.util import calculate_fingerprint, parse_public, readFile def androaxml_main( inp: str, outp: Union[str, None] = None, resource: Union[str, None] = None ) -> None: ret_type = androconf.is_android(inp) if ret_type == "APK": a = apk.APK(inp) if resource: if resource not in a.files: logger.error( "The APK does not contain a file called '{}'".format( resource ), file=sys.stderr, ) sys.exit(1) axml = AXMLPrinter(a.get_file(resource)).get_xml_obj() else: axml = a.get_android_manifest_xml() elif ".xml" in inp: axml = AXMLPrinter(readFile(inp)).get_xml_obj() else: logger.error("Unknown file type") sys.exit(1) buff = etree.tostring(axml, pretty_print=True, encoding="utf-8") if outp: with open(outp, "wb") as fd: fd.write(buff) else: sys.stdout.write( highlight( buff.decode("UTF-8"), get_lexer_by_name("xml"), TerminalFormatter(), ) ) def androarsc_main( arscobj: ARSCParser, outp: Union[str, None] = None, package: Union[str, None] = None, typ: Union[str, None] = None, locale: Union[str, None] = None, ) -> None: package = package or arscobj.get_packages_names()[0] ttype = typ or "public" locale = locale or '\x00\x00' # TODO: be able to dump all locales of a specific type # TODO: be able to recreate the structure of files when developing, eg a # res folder with all the XML files if not hasattr(arscobj, "get_{}_resources".format(ttype)): print( "No decoder found for type: '{}'! Please open a bug report.".format( ttype ), file=sys.stderr, ) sys.exit(1) x = getattr(arscobj, "get_" + ttype + "_resources")(package, locale) buff = etree.tostring( etree.fromstring(x), pretty_print=True, encoding="UTF-8" ) if outp: with open(outp, "wb") as fd: fd.write(buff) else: sys.stdout.write( highlight( buff.decode("UTF-8"), get_lexer_by_name("xml"), TerminalFormatter(), ) ) def export_apps_to_format( filename: str, s: Session, output: str, methods_filter: Union[str, None] = None, jar: bool = False, decompiler_type: Union[str, None] = None, form: Union[str, None] = None, ) -> None: from androguard.core.bytecode import method2dot, method2format from androguard.decompiler import decompiler from androguard.misc import clean_file_name print("Dump information {} in {}".format(filename, output)) if not os.path.exists(output): print("Create directory %s" % output) os.makedirs(output) else: while True: user_input = ( input(f"Do you want to clean the directory {output}? (Y/N): ") .strip() .lower() ) if user_input == 'y': print("Deleting...") androconf.rrmdir(output) os.makedirs(output) break elif user_input == 'n': print("Not deleting.") break else: print("Invalid input. Please enter Y or N.") methods_filter_expr = None if methods_filter: methods_filter_expr = re.compile(methods_filter) dump_classes = [] for _, vm, vmx in s.get_objects_dex(): print("Decompilation ...", end=' ') sys.stdout.flush() if decompiler_type == "dex2jad": vm.set_decompiler( decompiler.DecompilerDex2Jad( vm, androconf.CONF["BIN_DEX2JAR"], androconf.CONF["BIN_JAD"], androconf.CONF["TMP_DIRECTORY"], ) ) elif decompiler_type == "dex2winejad": vm.set_decompiler( decompiler.DecompilerDex2WineJad( vm, androconf.CONF["BIN_DEX2JAR"], androconf.CONF["BIN_WINEJAD"], androconf.CONF["TMP_DIRECTORY"], ) ) elif decompiler_type == "ded": vm.set_decompiler( decompiler.DecompilerDed( vm, androconf.CONF["BIN_DED"], androconf.CONF["TMP_DIRECTORY"], ) ) elif decompiler_type == "dex2fernflower": vm.set_decompiler( decompiler.DecompilerDex2Fernflower( vm, androconf.CONF["BIN_DEX2JAR"], androconf.CONF["BIN_FERNFLOWER"], androconf.CONF["OPTIONS_FERNFLOWER"], androconf.CONF["TMP_DIRECTORY"], ) ) print("End") if jar: print("jar ...", end=' ') filenamejar = decompiler.Dex2Jar( vm, androconf.CONF["BIN_DEX2JAR"], androconf.CONF["TMP_DIRECTORY"], ).get_jar() shutil.move(filenamejar, os.path.join(output, "classes.jar")) print("End") for method in vm.get_encoded_methods(): if methods_filter_expr: msig = "{}{}{}".format( method.get_class_name(), method.get_name(), method.get_descriptor(), ) if not methods_filter_expr.search(msig): continue # Current Folder to write to filename_class = valid_class_name(str(method.get_class_name())) filename_class = os.path.join(output, filename_class) create_directory(filename_class) print( "Dump {} {} {} ...".format( method.get_class_name(), method.get_name(), method.get_descriptor(), ), end=' ', ) filename = clean_file_name( os.path.join(filename_class, method.get_short_string()) ) buff = method2dot(vmx.get_method(method)) # Write Graph of method if form: print("%s ..." % form, end=' ') method2format(filename + "." + form, form, None, buff) # Write the Java file for the whole class if str(method.get_class_name()) not in dump_classes: print("source codes ...", end=' ') current_class = vm.get_class(method.get_class_name()) current_filename_class = valid_class_name( str(current_class.get_name()) ) current_filename_class = os.path.join( output, current_filename_class + ".java" ) with open(current_filename_class, "w") as fd: fd.write(current_class.get_source()) dump_classes.append(method.get_class_name()) # Write SMALI like code print("bytecodes ...", end=' ') bytecode_buff = get_bytecodes_method(vm, vmx, method) with open(filename + ".ag", "w") as fd: fd.write(bytecode_buff) print() def valid_class_name(class_name: str) -> str: if class_name[-1] == ";": class_name = class_name[1:-1] return os.path.join(*class_name.split("/")) def create_directory(pathdir: str) -> None: if not os.path.exists(pathdir): os.makedirs(pathdir) def androlyze_main(session: Session, filename: str) -> None: """ Start an interactive shell :param session: Session file to load :param filename: File to analyze, can be APK or DEX (or ODEX) """ import atexit import colorama from colorama import Fore from IPython.terminal.embed import embed from traitlets.config import Config from androguard.core.androconf import ANDROGUARD_VERSION, CONF from androguard.session import Session colorama.init() if session: logger.info("TODO: Restoring session '{}'...".format(session)) # s = CONF['SESSION'] = Load(session) # logger.info("Successfully restored {}".format(s)) # TODO actually restore the session a, d, dx etc... else: s = CONF["SESSION"] = Session(export_ipython=True) if filename: ("Loading apk {}...".format(os.path.basename(filename))) logger.info("Please be patient, this might take a while.") filetype = androconf.is_android(filename) logger.info("Found the provided file is of type '{}'".format(filetype)) if filetype not in ['DEX', 'DEY', 'APK']: logger.error( Fore.RED + "This file type is not supported by androlyze for auto loading right now!" + Fore.RESET, file=sys.stderr, ) logger.error("But your file is still available:") logger.error(">>> filename") logger.error(repr(filename)) print() else: with open(filename, "rb") as fp: raw = fp.read() h = s.add(filename, raw) logger.info("Added file to session: SHA256::{}".format(h)) if filetype == 'APK': logger.info("Loaded APK file...") a, d, dx = s.get_objects_apk(digest=h) print(">>> filename") print(filename) print(">>> a") print(a) print(">>> d") print(d) print(">>> dx") print(dx) print() elif filetype in ['DEX', 'DEY']: logger.info("Loaded DEX file...") for h_, d, dx in s.get_objects_dex(): if h == h_: break print(">>> d") print(d) print(">>> dx") print(dx) print() def shutdown_hook() -> None: """Save the session on exit, if wanted""" if not s.isOpen(): return try: res = input("Do you want to save the session? (y/[n])?").lower() except (EOFError, KeyboardInterrupt): pass else: if res == "y": # TODO: if we already started from a session, probably we want to save it under the same name... # TODO: be able to take any filename you want fname = s.save() print("Saved Session to file: '{}'".format(fname)) cfg = Config() _version_string = "Androguard version {}".format(ANDROGUARD_VERSION) ipshell = embed(config=cfg, banner1="{} started".format(_version_string)) atexit.register(shutdown_hook) ipshell() def androsign_main( args_apk: list[str], args_hash: str, args_all: bool, show: bool ) -> None: import binascii import hashlib import traceback from asn1crypto import keys, x509 from colorama import Fore, Style from androguard.core.apk import APK from androguard.util import get_certificate_name_string # Keep the list of hash functions in sync with cli/entry_points.py:sign hashfunctions = dict( md5=hashlib.md5, sha1=hashlib.sha1, sha256=hashlib.sha256, sha512=hashlib.sha512, ) if args_hash.lower() not in hashfunctions: print( "Hash function {} not supported!".format(args_hash.lower()), file=sys.stderr, ) print( "Use one of {}".format(", ".join(hashfunctions.keys())), file=sys.stderr, ) sys.exit(1) for path in args_apk: try: a = APK(path) print( "{}, package: '{}'".format( os.path.basename(path), a.get_package() ) ) print("Is signed v1: {}".format(a.is_signed_v1())) print("Is signed v2: {}".format(a.is_signed_v2())) print("Is signed v3: {}".format(a.is_signed_v3())) certs = set( a.get_certificates_der_v3() + a.get_certificates_der_v2() + [a.get_certificate_der(x) for x in a.get_signature_names()] ) pkeys = set( a.get_public_keys_der_v3() + a.get_public_keys_der_v2() ) if len(certs) > 0: print("Found {} unique certificates".format(len(certs))) for cert in certs: if show: x509_cert = x509.Certificate.load(cert) print( "Issuer:", get_certificate_name_string( x509_cert.issuer, short=True ), ) print( "Subject:", get_certificate_name_string( x509_cert.subject, short=True ), ) print("Serial Number:", hex(x509_cert.serial_number)) print("Hash Algorithm:", x509_cert.hash_algo) print("Signature Algorithm:", x509_cert.signature_algo) print( "Valid not before:", x509_cert['tbs_certificate']['validity'][ 'not_before' ].native, ) print( "Valid not after:", x509_cert['tbs_certificate']['validity'][ 'not_after' ].native, ) if not args_all: print( "{} {}".format( args_hash.lower(), hashfunctions[args_hash.lower()](cert).hexdigest(), ) ) else: for k, v in hashfunctions.items(): print("{} {}".format(k, v(cert).hexdigest())) print() if len(certs) > 0: print( "Found {} unique public keys associated with the certs".format( len(pkeys) ) ) for public_key in pkeys: if show: parsed_key = parse_public(public_key) print(f"Algorithm: {parsed_key.algorithm}") print(f"Bit size: {parsed_key.bit_size}") print( f"Fingerprint: {calculate_fingerprint(parsed_key).hex()}" ) try: print(f"Hash Algorithm: {parsed_key.hash_algo}") except ValueError as ve: # RSA pkey does not have a hash algorithm pass print() except: print( Fore.RED + "Error in {}".format(os.path.basename(path)) + Style.RESET_ALL, file=sys.stderr, ) traceback.print_exc(file=sys.stderr) if len(args_apk) > 1: print() def androdis_main(offset: int, size: int, dex_file: str) -> None: from androguard.core.dex import DEX with open(dex_file, "rb") as fp: buf = fp.read() d = DEX(buf) if size == 0 and offset == 0: # Assume you want to just get a disassembly of all classes and methods for cls in d.get_classes(): print("# CLASS: {}".format(cls.get_name())) for m in cls.get_methods(): print( "## METHOD: {} {} {}".format( m.get_access_flags_string(), m.get_name(), m.get_descriptor(), ) ) for idx, ins in m.get_instructions_idx(): print('{:08x} {}'.format(idx, ins.disasm())) print() print() else: if size == 0: size = len(buf) if d: idx = offset for nb, i in enumerate(d.disassemble(offset, size)): print("%-8d(%08x)" % (nb, idx), end=' ') i.show(idx) print() idx += i.get_length() def androtrace_main( apk_file: str, list_modules: list[str], live: bool = False, enable_ui: bool = False, ) -> None: from androguard.pentest import Pentest from androguard.session import Session s = Session() if not live: with open(apk_file, "rb") as fp: raw = fp.read() h = s.add(apk_file, raw) logger.info("Added file to session: SHA256::{}".format(h)) p = Pentest() p.print_devices() p.connect_default_usb() p.start_trace(apk_file, s, list_modules, live=live) if enable_ui: logger.remove(1) import time from prompt_toolkit.application import get_app from prompt_toolkit.eventloop.inputhook import ( InputHookContext, set_eventloop_with_inputhook, ) time.sleep(1) ui = DynamicUI(p.message_queue) def inputhook(inputhook_context: InputHookContext): while not inputhook_context.input_is_ready(): if ui.process_data(): get_app().invalidate() else: time.sleep(0.1) set_eventloop_with_inputhook(inputhook=inputhook) ui.run() else: logger.warning("Type 'e' to exit the strace ") s = "" while (s != 'e') and (not p.is_detached()): s = input("Type 'e' to exit:") def androdump_main(package_name: str, list_modules: list[str]) -> None: from androguard.pentest import Pentest from androguard.session import Session s = Session() p = Pentest() p.print_devices() p.connect_default_usb() p.start_trace(package_name, s, list_modules, live=True, dump=True) ================================================ FILE: libs/androguard/core/__init__.py ================================================ ================================================ FILE: libs/androguard/core/analysis/__init__.py ================================================ ================================================ FILE: libs/androguard/core/analysis/analysis.py ================================================ # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations import collections import re import time from enum import IntEnum from operator import itemgetter from typing import Iterator, Union import networkx as nx from loguru import logger from androguard.core import bytecode, dex from androguard.core.androconf import ( is_ascii_problem, load_api_specific_resource_module, ) BasicOPCODES = set() for i in dex.BRANCH_DEX_OPCODES: p = re.compile(i) for op, items in dex.DALVIK_OPCODES_FORMAT.items(): if p.match(items[1][0]): BasicOPCODES.add(op) class REF_TYPE(IntEnum): """ Stores the opcodes for the type of usage in an XREF. Used in [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis] to store the type of reference to the class. """ REF_NEW_INSTANCE = 0x22 REF_CLASS_USAGE = 0x1C INVOKE_VIRTUAL = 0x6E INVOKE_SUPER = 0x6F INVOKE_DIRECT = 0x70 INVOKE_STATIC = 0x71 INVOKE_INTERFACE = 0x72 INVOKE_VIRTUAL_RANGE = 0x74 INVOKE_SUPER_RANGE = 0x75 INVOKE_DIRECT_RANGE = 0x76 INVOKE_STATIC_RANGE = 0x77 INVOKE_INTERFACE_RANGE = 0x78 class ExceptionAnalysis: def __init__(self, exception: list, basic_blocks: BasicBlocks): self.start = exception[0] self.end = exception[1] self.exceptions = exception[2:] for i in self.exceptions: i.append(basic_blocks.get_basic_block(i[1])) def show_buff(self) -> str: buff = "{:x}:{:x}\n".format(self.start, self.end) for i in self.exceptions: if i[2] is None: buff += "\t({} -> {:x} {})\n".format(i[0], i[1], i[2]) else: buff += "\t({} -> {:x} {})\n".format( i[0], i[1], i[2].get_name() ) return buff[:-1] def get(self) -> dict[str, Union[int, list[dict[str, Union[str, int]]]]]: d = {"start": self.start, "end": self.end, "list": []} for i in self.exceptions: d["list"].append( {"name": i[0], "idx": i[1], "basic_block": i[2].get_name()} ) return d class Exceptions: def __init__(self) -> None: self.exceptions = [] def add(self, exceptions: list[list], basic_blocks: BasicBlocks) -> None: for i in exceptions: self.exceptions.append(ExceptionAnalysis(i, basic_blocks)) def get_exception( self, addr_start: int, addr_end: int ) -> Union[ExceptionAnalysis, None]: for i in self.exceptions: if i.start >= addr_start and i.end <= addr_end: return i elif addr_end <= i.end and addr_start >= i.start: return i return None def gets(self) -> list[ExceptionAnalysis]: return self.exceptions def get(self) -> Iterator[ExceptionAnalysis]: for i in self.exceptions: yield i class BasicBlocks: """ This class represents all basic blocks of a method. It is a collection of many [DEXBasicBlock][androguard.core.analysis.analysis.DEXBasicBlock]. """ def __init__(self) -> None: self.bb = [] def push(self, bb: DEXBasicBlock) -> None: """ Adds another basic block to the collection :param bb: the `DEXBasicBlock` to add """ self.bb.append(bb) def pop(self, idx: int) -> DEXBasicBlock: """remove and return [DEXBasicBlock][androguard.core.analysis.analysis.DEXBasicBlock] at `idx` :param idx: the index of the `DEXBasicBlock` to pop and return :return: the popped `DEXBasicBlock` """ return self.bb.pop(idx) def get_basic_block(self, idx: int) -> Union[DEXBasicBlock,None]: """return the [DEXBasicBlock][androguard.core.analysis.analysis.DEXBasicBlock] at `idx` :param idx: the index of the `DEXBasicBlock` to return :return: the `DEXBasicBlock` or `None` if not found """ for i in self.bb: if i.get_start() <= idx < i.get_end(): return i return None def __len__(self) -> int: return len(self.bb) def __iter__(self) -> Iterator[DEXBasicBlock]: """ :returns: yields each basic block (`DEXBasicBlock` object) """ yield from self.bb def __getitem__(self, item: int) -> DEXBasicBlock: """ Get the basic block at the index :param item: index :returns: The basic block """ return self.bb[item] def gets(self) -> list[DEXBasicBlock]: """ :returns: a list of [DEXBasicBlock][androguard.core.analysis.analysis.DEXBasicBlock] """ return self.bb # Alias for legacy programs get = __iter__ get_basic_block_pos = __getitem__ class DEXBasicBlock: """ A simple basic block of a DEX method. A basic block consists of a series of [Instruction][androguard.core.dex.Instruction] which are not interrupted by branch or jump instructions such as `goto`, `if`, `throw`, `return`, `switch` etc. """ def __init__( self, start: int, vm: dex.DEX, method: dex.EncodedMethod, context: BasicBlocks, ) -> None: """Initialize a new [DEXBasicBlock][androguard.core.analysis.analysis.DEXBasicBlock] :param start: start address of the basic block :param vm: `DEX` containing the basic block :param method: `EncodedMethod` containing the basic block :param context: `BasicBlocks` containing this basic block """ self.__vm = vm self.method = method self.context = context self.last_length = 0 self.nb_instructions = 0 self.fathers = [] self.childs = [] self.start = start self.end = self.start self.special_ins = {} self.name = ''.join([self.method.get_name(), '-BB@', hex(self.start)]) self.exception_analysis = None self.notes = [] self.__cached_instructions = None def get_notes(self) -> list[str]: return self.notes def set_notes(self, value: str) -> None: self.notes = [value] def add_note(self, note: str) -> None: self.notes.append(note) def clear_notes(self) -> None: self.notes = [] def get_instructions(self) -> Iterator[dex.Instruction]: """ Get all instructions from a basic block. :returns: Return all instructions in the current basic block """ idx = 0 for i in self.method.get_instructions(): if self.start <= idx < self.end: yield i idx += i.get_length() def get_nb_instructions(self) -> int: return self.nb_instructions def get_method(self) -> dex.EncodedMethod: """ Returns the originating method :returns: the originating `dex.EncodedMethod` object """ return self.method def get_name(self) -> str: return self.name def get_start(self) -> int: """ Get the starting offset of this basic block :returns: starting offset """ return self.start def get_end(self) -> int: """ Get the end offset of this basic block :returns: end offset """ return self.end def get_last(self) -> dex.Instruction: """ Get the last instruction in the basic block :returns: the last `androguard.core.dex.Instruction` in the basic block """ return list(self.get_instructions())[-1] def get_next(self) -> DEXBasicBlock: """ Get next basic blocks :returns: a list of the next `DEXBasicBlock` objects """ return self.childs def get_prev(self) -> DEXBasicBlock: """ Get previous basic blocks :returns: a list of the previous `DEXBasicBlock` objects """ return self.fathers def set_fathers(self, f: DEXBasicBlock) -> None: self.fathers.append(f) def get_last_length(self) -> int: return self.last_length def set_childs(self, values: list[int]) -> None: # print self, self.start, self.end, values if not values: next_block = self.context.get_basic_block(self.end + 1) if next_block is not None: self.childs.append( (self.end - self.get_last_length(), self.end, next_block) ) else: for i in values: if i != -1: next_block = self.context.get_basic_block(i) if next_block is not None: self.childs.append( (self.end - self.get_last_length(), i, next_block) ) for c in self.childs: if c[2] is not None: c[2].set_fathers((c[1], c[0], self)) def push(self, i: DEXBasicBlock) -> None: self.nb_instructions += 1 idx = self.end self.last_length = i.get_length() self.end += self.last_length op_value = i.get_op_value() if op_value == 0x26 or (0x2B <= op_value <= 0x2C): code = self.method.get_code().get_bc() self.special_ins[idx] = code.get_ins_off(idx + i.get_ref_off() * 2) def get_special_ins(self, idx: int) -> Union[dex.Instruction, None]: """ Return the associated instruction to a specific instruction (for example a packed/sparse switch) :param idx: the index of the instruction :returns: the associated `dex.Instruction` """ if idx in self.special_ins: return self.special_ins[idx] else: return None def get_exception_analysis(self) -> ExceptionAnalysis: return self.exception_analysis def set_exception_analysis(self, exception_analysis: ExceptionAnalysis): self.exception_analysis = exception_analysis def show(self) -> None: print( "{}: {:04x} - {:04x}".format( self.get_name(), self.get_start(), self.get_end() ) ) for note in self.get_notes(): print(note) print('=' * 20) class MethodAnalysis: """ This class analyzes in details a method of a class/dex file It is a wrapper around a [androguard.core.dex.EncodedMethod][] and enhances it by using multiple [DEXBasicBlock][androguard.core.analysis.analysis.DEXBasicBlock] encapsulated in a [BasicBlocks][androguard.core.analysis.analysis.BasicBlocks] object. """ def __init__(self, vm: dex.DEX, method: dex.EncodedMethod) -> None: """Initialize new [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] :param vm: the `dex.DEX` containing the method :param method: the `dex.EncodedMethod` to wrap """ logger.debug( "Adding new method {} {}".format( method.get_class_name(), method.get_name() ) ) self.__vm = vm self.method = method self.basic_blocks = BasicBlocks() self.exceptions = Exceptions() self.xrefto = set() self.xreffrom = set() self.xrefread = set() self.xrefwrite = set() self.xrefnewinstance = set() self.xrefconstclass = set() # For Android 10+ self.restriction_flag = None self.domain_flag = None # Reserved for further use self.apilist = None if vm is None or isinstance(method, ExternalMethod): # Support external methods here # external methods usually dont have a VM associated self.code = None else: self.code = self.method.get_code() if self.code: self._create_basic_block() @property def name(self) -> str: """Returns the name of this method :returns: the name """ return self.method.get_name() @property def descriptor(self) -> str: """Returns the type descriptor for this method :returns: the type descriptor """ return self.method.get_descriptor() @property def access(self) -> str: """Returns the access flags to the method as a string :returns: the access flags """ return self.method.get_access_flags_string() @property def class_name(self) -> str: """Returns the name of the class of this method :returns: the name of the class """ return self.method.class_name @property def full_name(self) -> str: """Returns classname + name + descriptor, separated by spaces (no access flags) :returns: the method full name """ return self.method.full_name def get_class_name(self) -> str: """Return the class name of the method :returns: the name of the class """ return self.class_name def get_access_flags_string(self) -> str: """Returns the concatenated access flags string :returns: the access flags """ return self.access def get_descriptor(self) -> str: return self.descriptor def _create_basic_block(self) -> None: """ Internal Method to create the basic block structure Parses all instructions and exceptions. """ current_basic = DEXBasicBlock( 0, self.__vm, self.method, self.basic_blocks ) self.basic_blocks.push(current_basic) l = [] h = dict() logger.debug( "Parsing instructions for method at @0x{:08x}".format( self.method.get_code_off() ) ) for idx, ins in self.method.get_instructions_idx(): if ins.get_op_value() in BasicOPCODES: v = dex.determineNext(ins, idx, self.method) h[idx] = v l.extend(v) logger.debug("Parsing exceptions") excepts = dex.determineException(self.__vm, self.method) for i in excepts: l.extend([i[0]]) for handler in i[2:]: l.append(handler[1]) logger.debug("Creating basic blocks") for idx, ins in self.method.get_instructions_idx(): # index is a destination if idx in l: if current_basic.get_nb_instructions() != 0: current_basic = DEXBasicBlock( current_basic.get_end(), self.__vm, self.method, self.basic_blocks, ) self.basic_blocks.push(current_basic) current_basic.push(ins) # index is a branch instruction if idx in h: current_basic = DEXBasicBlock( current_basic.get_end(), self.__vm, self.method, self.basic_blocks, ) self.basic_blocks.push(current_basic) if current_basic.get_nb_instructions() == 0: self.basic_blocks.pop(-1) logger.debug("Settings basic blocks childs") for i in self.basic_blocks.get(): try: i.set_childs(h[i.end - i.get_last_length()]) except KeyError: i.set_childs([]) logger.debug("Creating exceptions") self.exceptions.add(excepts, self.basic_blocks) for i in self.basic_blocks.get(): # setup exception by basic block i.set_exception_analysis( self.exceptions.get_exception(i.start, i.end - 1) ) def add_xref_read( self, classobj: ClassAnalysis, fieldobj: FieldAnalysis, offset: int ) -> None: """ :param ClassAnalysis classobj: :param FieldAnalysis fieldobj: :param int offset: offset in the bytecode """ self.xrefread.add((classobj, fieldobj, offset)) def add_xref_write( self, classobj: ClassAnalysis, fieldobj: FieldAnalysis, offset: int ) -> None: """ :param ClassAnalysis classobj: :param FieldAnalysis fieldobj: :param int offset: offset in the bytecode """ self.xrefwrite.add((classobj, fieldobj, offset)) def get_xref_read(self) -> list[tuple[ClassAnalysis, FieldAnalysis]]: """ Returns a list of xrefs where a field is read by this method. The list contains tuples of the originating class and methods, where the class is represented as a [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], while the Field is a [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis]. :returns: the `xrefread` list """ return self.xrefread def get_xref_write(self) -> list[tuple[ClassAnalysis, FieldAnalysis]]: """ Returns a list of xrefs where a field is written to by this method. The list contains tuples of the originating class and methods, where the class is represented as a [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], while the Field is a [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis]. :returns: the `xrefwrite` list """ return self.xrefwrite def add_xref_to( self, classobj: ClassAnalysis, methodobj: MethodAnalysis, offset: int ) -> None: """ Add a crossreference to another method (this method calls another method) """ self.xrefto.add((classobj, methodobj, offset)) def add_xref_from( self, classobj: ClassAnalysis, methodobj: MethodAnalysis, offset: int ) -> None: """ Add a crossrefernece from another method (this method is called by another method) """ self.xreffrom.add((classobj, methodobj, offset)) def get_xref_from(self) -> list[tuple[ClassAnalysis, MethodAnalysis, int]]: """ Returns a list of tuples containing the class, method and offset of the call, from where this object was called. The list of tuples has the form: ([ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis], `int`) :returns: the `xreffrom` list """ return self.xreffrom def get_xref_to(self) -> list[tuple[ClassAnalysis, MethodAnalysis, int]]: """ Returns a list of tuples containing the class, method and offset of the call, which are called by this method. The list of tuples has the form: ([ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis], `int`) :returns: the `xrefto` list """ return self.xrefto def add_xref_new_instance( self, classobj: ClassAnalysis, offset: int ) -> None: """ Add a crossreference to another class that is instanced within this method. """ self.xrefnewinstance.add((classobj, offset)) def get_xref_new_instance(self) -> list[tuple[ClassAnalysis, int]]: """ Returns a list of tuples containing the class and offset of the creation of a new instance of a class by this method. The list of tuples has the form: ([ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], `int`) :returns: the `xrefnewinstance` list """ return self.xrefnewinstance def add_xref_const_class( self, classobj: ClassAnalysis, offset: int ) -> None: """ Add a crossreference to another classtype. """ self.xrefconstclass.add((classobj, offset)) def get_xref_const_class(self) -> list[tuple[ClassAnalysis, int]]: """ Returns a list of tuples containing the class and offset of the references to another classtype by this method. The list of tuples has the form: ([ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], `int`) :returns: the `xrefconstclass` list """ return self.xrefconstclass def is_external(self) -> bool: """ Returns `True` if the underlying method is external :returns: `True` if the underlying method is external, else `False` """ return isinstance(self.method, ExternalMethod) def is_android_api(self) -> bool: """ Returns `True` if the method seems to be an Android API method. This method might be not very precise unless an list of known API methods is given. :returns: `True` if the method seems to be an Android API method, else `False` """ if not self.is_external(): # Method must be external to be an API return False # Packages found at https://developer.android.com/reference/packages.html api_candidates = [ "Landroid/", "Lcom/android/internal/util", "Ldalvik/", "Ljava/", "Ljavax/", "Lorg/apache/", "Lorg/json/", "Lorg/w3c/dom/", "Lorg/xml/sax", "Lorg/xmlpull/v1/", "Ljunit/", ] if self.apilist: # FIXME: This will not work... need to introduce a name for lookup (like EncodedMethod.__str__ but without # the offset! Such a name is also needed for the lookup in permissions return self.method.get_name() in self.apilist else: for candidate in api_candidates: if self.method.get_class_name().startswith(candidate): return True return False def get_basic_blocks(self) -> BasicBlocks: """ Returns the [BasicBlocks][androguard.core.analysis.analysis.BasicBlocks] generated for this method. The [BasicBlocks][androguard.core.analysis.analysis.BasicBlocks] can be used to get a control flow graph (CFG) of the method. :returns: a `BasicBlocks` object """ return self.basic_blocks def get_length(self) -> int: """ :returns: an integer which is the length of the code """ return self.code.get_length() if self.code else 0 def get_vm(self) -> dex.DEX: """ :returns: the `dex.DEX` object """ return self.__vm def get_method(self) -> dex.EncodedMethod: """ :returns: the `dex.EncodedMethod` object """ return self.method def show(self) -> None: """ Prints the content of this method to stdout. This will print the method signature and the decompiled code. """ args, ret = self.method.get_descriptor()[1:].split(")") if self.code: # We patch the descriptor here and add the registers, if code is available args = args.split(" ") reg_len = self.code.get_registers_size() nb_args = len(args) start_reg = reg_len - nb_args args = [ "{} v{}".format(a, start_reg + i) for i, a in enumerate(args) ] print( "METHOD {} {} {} ({}){}".format( self.method.get_class_name(), self.method.get_access_flags_string(), self.method.get_name(), ", ".join(args), ret, ) ) if not self.is_external(): bytecode.PrettyShow(self.basic_blocks.gets(), self.method.notes) def show_xrefs(self) -> None: data = "XREFto for %s\n" % self.method for ref_class, ref_method, offset in self.xrefto: data += "in\n" data += "{}:{} @0x{:x}\n".format( ref_class.get_vm_class().get_name(), ref_method, offset ) data += "XREFFrom for %s\n" % self.method for ref_class, ref_method, offset in self.xreffrom: data += "in\n" data += "{}:{} @0x{:x}\n".format( ref_class.get_vm_class().get_name(), ref_method, offset ) return data def __repr__(self): return "".format(self.method) class StringAnalysis: """ StringAnalysis contains the XREFs of a string. As Strings are only used as a source, they only contain the XREF_FROM set, i.e. where the string is used. This Array stores the information in which method the String is used. """ def __init__(self, value: str) -> None: """Instantiate a new [StringAnalysis][androguard.core.analysis.analysis.StringAnalysis] :param value: the original string value """ self.value = value self.orig_value = value self.xreffrom = set() def add_xref_from( self, classobj: ClassAnalysis, methodobj: MethodAnalysis, off: int ) -> None: """ Adds a xref from the given method to this string :param classobj: :param methodobj: :param off: offset in the bytecode of the call """ self.xreffrom.add((classobj, methodobj, off)) def get_xref_from( self, with_offset: bool = False ) -> list[tuple[ClassAnalysis, MethodAnalysis]]: """ Returns a list of xrefs accessing the String. The list contains tuples of the originating class and methods, where the class is represented as a [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], while the method is a [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis]. """ if with_offset: return self.xreffrom return set(map(itemgetter(slice(0, 2)), self.xreffrom)) def set_value(self, value: str) -> None: """ Overwrite the current value of the String with a new value. The original value is not lost and can still be retrieved using [get_orig_value][androguard.core.analysis.analysis.StringAnalysis.get_orig_value]. :param value: new string value """ self.value = value def get_value(self) -> str: """ Return the (possible overwritten) value of the string :returns: the value of the string """ return self.value def get_orig_value(self) -> str: """ Return the original, read only, value of the string :returns: the original value """ return self.orig_value def is_overwritten(self) -> bool: """ Returns `True` if the string was overwritten :returns: `True` if the string was overwritten, else `False` """ return self.orig_value != self.value def __str__(self): data = "XREFto for string %s in\n" % repr(self.get_value()) for ref_class, ref_method, _ in self.xreffrom: data += "{}:{}\n".format( ref_class.get_vm_class().get_name(), ref_method ) return data def __repr__(self): # TODO should remove all chars that are not pleasent. e.g. newlines if len(self.get_value()) > 20: s = "'{}'...".format(self.get_value()[:20]) else: s = "'{}'".format(self.get_value()) return "".format(s) class FieldAnalysis: """ FieldAnalysis contains the XREFs for a class field. Instead of using XREF_FROM/XREF_TO, this object has methods for READ and WRITE access to the field. That means, that it will show you, where the field is read or written. """ def __init__(self, field: dex.EncodedField) -> None: """Initialize a new [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis] object :param field: """ self.field = field self.xrefread = set() self.xrefwrite = set() @property def name(self) -> str: return self.field.get_name() def add_xref_read( self, classobj: ClassAnalysis, methodobj: MethodAnalysis, offset: int ) -> None: """ :param classobj: :param methodobj: :param offset: offset in the bytecode """ self.xrefread.add((classobj, methodobj, offset)) def add_xref_write( self, classobj: ClassAnalysis, methodobj: MethodAnalysis, offset: int ) -> None: """ :param classobj: :param methodobj: :param offset: offset in the bytecode """ self.xrefwrite.add((classobj, methodobj, offset)) def get_xref_read( self, with_offset: bool = False ) -> list[tuple[ClassAnalysis, MethodAnalysis]]: """ Returns a list of xrefs where the field is read. The list contains tuples of the originating class and methods, where the class is represented as a [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], while the method is a [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis]. :param with_offset: return the xrefs including the offset :returns: the `xrefread` list """ if with_offset: return self.xrefread # Legacy option, might be removed in the future return set(map(itemgetter(slice(0, 2)), self.xrefread)) def get_xref_write( self, with_offset: bool = False ) -> list[tuple[ClassAnalysis, MethodAnalysis]]: """ Returns a list of xrefs where the field is written to. The list contains tuples of the originating class and methods, where the class is represented as a [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis], while the method is a [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis]`. :param with_offset: return the xrefs including the offset :returns: the `xrefwrite` list """ if with_offset: return self.xrefwrite # Legacy option, might be removed in the future return set(map(itemgetter(slice(0, 2)), self.xrefwrite)) def get_field(self) -> dex.EncodedField: """ Returns the actual [EncodedField][androguard.core.dex.EncodedField] object :returns: the `dex.EncodedField` object """ return self.field def __str__(self): data = "XREFRead for %s\n" % self.field for ref_class, ref_method, off in self.xrefread: data += "in\n" data += "{}:{} @{}\n".format( ref_class.get_vm_class().get_name(), ref_method, off ) data += "XREFWrite for %s\n" % self.field for ref_class, ref_method, off in self.xrefwrite: data += "in\n" data += "{}:{} @{}\n".format( ref_class.get_vm_class().get_name(), ref_method, off ) return data def __repr__(self): return "{}>".format( self.field.class_name, self.field.name ) class ExternalClass: """ The ExternalClass is used for all classes that are not defined in the DEX file, thus are external classes. """ def __init__(self, name: str) -> None: """Instantiate a new [ExternalClass][androguard.core.analysis.analysis.ExternalClass] object :param name: Name of the external class """ self.name = name self.methods = [] def get_methods(self) -> list[MethodAnalysis]: """ Return the list of stored [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] for this external class :returns: the list of `MethodAnalysis` objects """ return self.methods def add_method(self, method: MethodAnalysis) -> None: self.methods.append(method) def get_name(self) -> str: """ Returns the name of the [ExternalClass][androguard.core.analysis.analysis.ExternalClass] object :returns: the name of the external class """ return self.name def __repr__(self): return "".format(self.name) class ExternalMethod: """ ExternalMethod is a stub class for methods that are not part of the current Analysis. There are two possibilities for this: 1) The method is defined inside another DEX file which was not loaded into the Analysis 2) The method is an API method, hence it is defined in the Android system External methods should have a similar API to [EncodedMethod][androguard.core.dex.EncodedMethod] but obviously they have no code attached. The only known information about such methods are the class name, the method name and its descriptor. """ def __init__(self, class_name: str, name: str, descriptor: str) -> None: """Initialize a new [ExternalMethod][androguard.core.analysis.analysis.ExternalMethod] object :param class_name: name of the class :param name: name of the method :param descriptor: descriptor string """ self.class_name = class_name self.name = name self.descriptor = descriptor def get_name(self) -> str: """return the name of the external method :return: the name of the external method """ return self.name def get_class_name(self) -> str: """return the name of the class of this external method :return: the name of the class """ return self.class_name def get_descriptor(self) -> str: """return the descriptor of this external method :return: the descriptor of the external method """ return self.descriptor @property def full_name(self) -> str: """Returns classname + name + descriptor, separated by spaces (no access flags)' :returns: the formatted name """ return ( self.class_name + " " + self.name + " " + str(self.get_descriptor()) ) @property def permission_api_name(self) -> str: """Returns a name which can be used to look up in the permission maps :returns: the formatted name """ return ( self.class_name + "-" + self.name + "-" + str(self.get_descriptor()) ) def get_access_flags_string(self) -> str: """ Returns the access flags string. Right now, this is always an empty strings, as we can not say what kind of access flags an external method might have. """ # TODO can we assume that external methods are always public? # they can also be static... # or constructor... # or they might be inherited and have all kinds of access flags... return "" def __str__(self): return "{}->{}{}".format( self.class_name.__str__(), self.name.__str__(), str(self.get_descriptor()), ) def __repr__(self): return "".format(self.__str__()) class ClassAnalysis: """ ClassAnalysis contains the XREFs from a given Class. It is also used to wrap [ClassDefItem[androguard.core.dex.ClassDefItem], which contain the actual class content like bytecode. Also external classes will generate xrefs, obviously only XREF_FROM are shown for external classes. """ def __init__( self, classobj: Union[dex.ClassDefItem, ExternalClass] ) -> None: """Initialize a new [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis] object :param classobj: the original class """ logger.info(f"Adding new ClassAnalysis: {classobj}") # Automatically decide if the class is external or not self.external = isinstance(classobj, ExternalClass) self.orig_class = classobj # Contains EncodedMethod/ExternalMethod -> MethodAnalysis self._methods = dict() # Contains EncodedField -> FieldAnalysis self._fields = dict() self.xrefto = collections.defaultdict(set) self.xreffrom = collections.defaultdict(set) self.xrefnewinstance = set() self.xrefconstclass = set() # Reserved for further use self.apilist = None def add_method(self, method_analysis: MethodAnalysis) -> None: """ Add the given method to this analyis. usually only called during [Analysis.add][androguard.core.analysis.analysis.Analysis.add] and `Analysis._resolve_method` :param method_analysis: the method to add """ self._methods[method_analysis.get_method()] = method_analysis if self.external: # Propagate ExternalMethod to ExternalClass self.orig_class.add_method(method_analysis.get_method()) @property def implements(self) -> list[str]: """ Get a list of interfaces which are implemented by this class :returns: a list of Interface names """ if self.is_external(): return [] return self.orig_class.get_interfaces() @property def extends(self) -> str: """ Return the parent class For external classes, this is not sure, thus we return always Object (which is the parent of all classes) :returns: a string of the parent class name """ if self.is_external(): return "Ljava/lang/Object;" return self.orig_class.get_superclassname() @property def name(self) -> str: """ Return the class name :returns: """ return self.orig_class.get_name() def is_external(self) -> bool: """ Tests if this class is an external class :returns: True if the Class is external, False otherwise """ return self.external def is_android_api(self) -> bool: """ Tries to guess if the current class is an Android API class. This might be not very precise unless an apilist is given, with classes that are in fact known APIs. Such a list might be generated by using the android.jar files. :returns: True if the class is an Andorid API class, else False. """ # Packages found at https://developer.android.com/reference/packages.html api_candidates = [ "Landroid/", "Lcom/android/internal/util", "Ldalvik/", "Ljava/", "Ljavax/", "Lorg/apache/", "Lorg/json/", "Lorg/w3c/dom/", "Lorg/xml/sax", "Lorg/xmlpull/v1/", "Ljunit/", ] if not self.is_external(): # API must be external return False if self.apilist: return self.orig_class.get_name() in self.apilist else: for candidate in api_candidates: if self.orig_class.get_name().startswith(candidate): return True return False def get_methods(self) -> list[MethodAnalysis]: """ Return all [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] objects of this class :returns: the `MethodAnalysis` objects in this class """ return self._methods.values() # return list(self._methods.values()) def get_fields(self) -> list[FieldAnalysis]: """ Return all [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis] objects of this class :returns: the `FieldAnalysis` objects in this class """ return self._fields.values() def get_nb_methods(self) -> int: """ Get the number of methods in this class :returns: the number of methods """ return len(self._methods) def get_method_analysis(self, method: dex.EncodedMethod) -> MethodAnalysis: """ Return the [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] object for a given [EncodedMethod][androguard.core.dex.EncodedMethod] :param method: the method to get a `MethodAnalysis` for :returns: the related `MethodAnalysis` """ return self._methods.get(method) def get_field_analysis(self, field: dex.EncodedMethod) -> FieldAnalysis: """Return the [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis] object for a given [EncodedMethod][androguard.core.dex.EncodedMethod] :param field: the method to get a `FieldAnalysis` for :returns: the related `FieldAnalysis` """ return self._fields.get(field) def add_field(self, field_analysis: FieldAnalysis) -> None: """ Add the given field to this analyis. usually only called during [Analysis.add][androguard.core.analysis.analysis.Analysis.add] :param field_analysis: the `FieldAnalysis` to add """ self._fields[field_analysis.get_field()] = field_analysis # if self.external: # # Propagate ExternalField to ExternalClass # self.orig_class.add_method(field_analysis.get_field()) def add_field_xref_read( self, method: MethodAnalysis, classobj: ClassAnalysis, field: dex.EncodedField, off: int, ) -> None: """ Add a Field Read to this class :param method: :param classobj: :param field: :param int off: """ if field not in self._fields: self._fields[field] = FieldAnalysis(field) self._fields[field].add_xref_read(classobj, method, off) def add_field_xref_write( self, method: MethodAnalysis, classobj: ClassAnalysis, field: dex.EncodedField, off: int, ) -> None: """ Add a Field Write to this class in a given method :param method: :param classobj: :param field: :param int off: """ if field not in self._fields: self._fields[field] = FieldAnalysis(field) self._fields[field].add_xref_write(classobj, method, off) def add_method_xref_to( self, method1: MethodAnalysis, classobj: ClassAnalysis, method2: MethodAnalysis, offset: int, ) -> None: """ :param method1: the calling method :param classobj: the calling class :param method2: the called method :param int offset: offset in the bytecode of calling method """ # FIXME: Not entirely sure why this can happen but usually a multidex issue: # The given method was not added before... if method1.get_method() not in self._methods: self.add_method(method1) self._methods[method1.get_method()].add_xref_to( classobj, method2, offset ) def add_method_xref_from( self, method1: MethodAnalysis, classobj: ClassAnalysis, method2: MethodAnalysis, offset: int, ) -> None: """ :param method1: :param classobj: :param method2: :param int offset: """ # FIXME: Not entirely sure why this can happen but usually a multidex issue: # The given method was not added before... if method1.get_method() not in self._methods: self.add_method(method1) self._methods[method1.get_method()].add_xref_from( classobj, method2, offset ) def add_xref_to( self, ref_kind: REF_TYPE, classobj: ClassAnalysis, methodobj: MethodAnalysis, offset: int, ) -> None: """ Creates a crossreference to another class. XrefTo means, that the current class calls another class. The current class should also be contained in the another class' XrefFrom list. WARNING: The implementation of this specific method might not be what you expect! the parameter `methodobj` is the source method and not the destination in the case that `ref_kind` is const-class or new-instance! :param ref_kind: type of call :param classobj: `ClassAnalysis` object to link :param methodobj: :param offset: Offset in the Methods Bytecode, where the call happens """ self.xrefto[classobj].add((ref_kind, methodobj, offset)) def add_xref_from( self, ref_kind: REF_TYPE, classobj: ClassAnalysis, methodobj: MethodAnalysis, offset: int, ) -> None: """ Creates a crossreference from this class. XrefFrom means, that the current class is called by another class. :param ref_kind: type of call :param classobj: `ClassAnalysis` object to link :param methodobj: :param offset: Offset in the methods bytecode, where the call happens """ self.xreffrom[classobj].add((ref_kind, methodobj, offset)) def get_xref_from( self, ) -> dict[ClassAnalysis, tuple[REF_TYPE, MethodAnalysis, int]]: """ Returns a dictionary of all classes calling the current class. This dictionary contains also information from which method the class is accessed. Note: this method might contains wrong information about class usage! The dictionary contains the classes as keys (stored as [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis]) and has a tuple as values, where the first item is the `ref_kind` (which is an Enum of type [REF_TYPE][androguard.core.analysis.analysis.REF_TYPE]), the second one is the method in which the class is called ([MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis]) and the third the offset in the method where the call is originating. Examples: >>> # dx is an Analysis object for cls in dx.find_classes('.*some/name.*'): >>> print("Found class {} in Analysis".format(cls.name) >>> for caller, refs in cls.get_xref_from().items(): >>> print(" called from {}".format(caller.name)) >>> for ref_kind, ref_method, ref_offset in refs: >>> print(" in method {} {}".format(ref_kind, ref_method)) :returns: `xreffrom`, a dictionary of all classes calling the current class """ return self.xreffrom def get_xref_to( self, ) -> dict[ClassAnalysis, tuple[REF_TYPE, MethodAnalysis, int]]: """ Returns a dictionary of all classes which are called by the current class. This dictionary contains also information about the method which is called. Note: this method might contains wrong information about class usage! The dictionary contains the classes as keys (stored as [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis]) and has a tuple as values, where the first item is the `ref_kind` (which is an Enum of type [REF_TYPE][androguard.core.analysis.analysis.REF_TYPE]), the second one is the method called ([MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis]) and the third the offset in the method where the call is originating. Examples: >>> # dx is an Analysis object >>> for cls in dx.find_classes('.*some/name.*'): >>> print("Found class {} in Analysis".format(cls.name) >>> for calling, refs in cls.get_xref_from().items(): >>> print(" calling class {}".format(calling.name)) >>> for ref_kind, ref_method, ref_offset in refs: >>> print(" calling method {} {}".format(ref_kind, ref_method)) :returns: `xrefto`, a dictionary of all classes which are called by the current class """ return self.xrefto def add_xref_new_instance( self, methobj: MethodAnalysis, offset: int ) -> None: """ Add a crossreference to another method that is instancing this class. :param methobj: The `MethodAnalysis` that this class calls :param offset: integer where in the method the instantiation happens """ self.xrefnewinstance.add((methobj, offset)) def get_xref_new_instance(self) -> list[tuple[MethodAnalysis, int]]: """ Returns a list of tuples containing the set of methods with offsets that instance this class The list of tuples has the form: ([MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis], `int`) :returns: the list of tuples """ return self.xrefnewinstance def add_xref_const_class( self, methobj: MethodAnalysis, offset: int ) -> None: """ Add a crossreference to a method referencing this classtype. :param methobj: The `MethodAnalysis` that this class calls :param offset: integer where in the method the classtype is referenced """ self.xrefconstclass.add((methobj, offset)) def get_xref_const_class(self) -> list[tuple[MethodAnalysis, int]]: """ Returns a list of tuples containing the method and offset referencing this classtype. The list of tuples has the form: ([MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis], `int`) :returns: the list of tuples """ return self.xrefconstclass def get_vm_class(self) -> Union[dex.ClassDefItem, ExternalClass]: """ Returns the original Dalvik VM class or the external class object. :returns: the `dex.ClassDefItem` or `ExternalClass` """ return self.orig_class def set_restriction_flag( self, flag: dex.HiddenApiClassDataItem.RestrictionApiFlag ) -> None: """ Set the level of restriction for this class (hidden level, from Android 10) (only applicable to internal classes) :param flag: The flag to set to """ if self.is_external(): raise RuntimeError( "Can\'t set restriction flag for external class: %s" % (self.orig_class.name,) ) self.restriction_flag = flag def set_domain_flag( self, flag: dex.HiddenApiClassDataItem.DomapiApiFlag ) -> None: """ Set the api domain for this class (hidden level, from Android 10) (only applicable to internal classes) :param flag: The flag to set to """ if self.is_external(): raise RuntimeError( "Can\'t set domain flag for external class: %s" % (self.orig_class.name,) ) self.domain_flag = flag # Alias get_class = get_vm_class def __repr__(self): return "".format( self.orig_class.get_name(), " EXTERNAL" if isinstance(self.orig_class, ExternalClass) else "", ) def __str__(self): # Print only instantiation from other classes here # TODO also method xref and field xref should be printed? data = "XREFto for %s\n" % self.orig_class for ref_class in self.xrefto: data += str(ref_class.get_vm_class().get_name()) + " " data += "in\n" for ref_kind, ref_method, ref_offset in self.xrefto[ref_class]: data += "%d %s 0x%x\n" % (ref_kind, ref_method, ref_offset) data += "\n" data += "XREFFrom for %s\n" % self.orig_class for ref_class in self.xreffrom: data += str(ref_class.get_vm_class().get_name()) + " " data += "in\n" for ref_kind, ref_method, ref_offset in self.xreffrom[ref_class]: data += "%d %s 0x%x\n" % (ref_kind, ref_method, ref_offset) data += "\n" return data class Analysis: """ Analysis Object The Analysis contains a lot of information about (multiple) DEX objects Features are for example XREFs between Classes, Methods, Fields and Strings. Yet another part is the creation of BasicBlocks, which is important in the usage of the Androguard Decompiler. Multiple DEX Objects can be added using the function [add][androguard.core.analysis.analysis.Analysis.add]. XREFs are created for: * classes ([ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis]) * methods ([MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis]) * strings ([StringAnalysis][androguard.core.analysis.analysis.StringAnalysis]) * fields ([FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis]) The Analysis should be the only object you are using next to the [APK][androguard.core.apk.APK]. It encapsulates all the Dalvik related functions into a single place, while you have still the ability to use the functions from [DEX][androguard.core.dex.DEX] and the related classes. """ def __init__(self, vm: Union[dex.DEX, None] = None) -> None: """Initialize a new [Analysis][androguard.core.analysis.analysis.Analysis] object :param vm: inital DEX object (default None) """ # Contains DEX objects self.vms = [] # A dict of {classname: ClassAnalysis}, populated on add(vm) self.classes = dict() # A dict of {string: StringAnalysis}, populated on add(vm) and create_xref() self.strings = dict() # A dict of {EncodedMethod: MethodAnalysis}, populated on add(vm) self.methods = dict() # Used to quickly look up methods self.__method_hashes = dict() if vm: self.add(vm) self.__created_xrefs = False @property def fields(self) -> Iterator[FieldAnalysis]: """Returns [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis] generator of this `Analysis` :returns: iterator of `FieldAnalysis` objects """ return self.get_fields() def add(self, vm: dex.DEX) -> None: """ Add a DEX to this Analysis. :param vm: `dex.DEX` to add to this Analysis """ self.vms.append(vm) logger.info("Adding DEX file version {}".format(vm.version)) # TODO: This step can easily be multithreaded, as there is no dependency between the objects at this stage tic = time.time() for i, current_class in enumerate(vm.get_classes()): # seed ClassAnalysis objects into classes attribute and add as new class self.classes[current_class.get_name()] = ClassAnalysis( current_class ) new_class = self.classes[current_class.get_name()] # Fix up the hidden api annotations (Android 10) hidden_api = vm.get_hidden_api() if hidden_api: rf, df = hidden_api.get_flags(i) new_class.set_restriction_flag(rf) new_class.set_domain_flag(df) # seed MethodAnalysis objects into methods attribute and add to new class analysis for method in current_class.get_methods(): self.methods[method] = MethodAnalysis(vm, method) new_class.add_method(self.methods[method]) # Store for faster lookup during create_xrefs m_hash = ( current_class.get_name(), method.get_name(), str(method.get_descriptor()), ) self.__method_hashes[m_hash] = self.methods[method] # seed FieldAnalysis objects into to new class analysis # since we access methods through a class property, # which returns what's within a ClassAnalysis # we don't have to track it internally in this class for field in current_class.get_fields(): new_class.add_field(FieldAnalysis(field)) # seed StringAnalysis objects into strings attribute - connect alter using xrefs for string_value in vm.get_strings(): self.strings[string_value] = StringAnalysis(string_value) logger.info( "Added DEX in the analysis took : {:0d}min {:02d}s".format( *divmod(int(time.time() - tic), 60) ) ) def create_xref(self) -> None: """ Create Class, Method, String and Field crossreferences for all classes in the Analysis. If you are using multiple DEX files, this function must be called when all DEX files are added. If you call the function after every DEX file, it will only work for the first time. """ if self.__created_xrefs: # TODO on concurrent runs, we probably need to clean up first, # or check that we do not write garbage. logger.error( "You have requested to run create_xref() twice! " "This will not work and cause problems! This function will exit right now. " "If you want to add multiple DEX files, use add() several times and then run create_xref() once." ) return self.__created_xrefs = True logger.debug("Creating Crossreferences (XREF)") tic = time.time() # TODO multiprocessing # One reason why multiprocessing is hard to implement is the creation of # the external classes and methods. This must be synchronized, which is now possible as we have a single method! for vm in self.vms: for current_class in vm.get_classes(): self._create_xref(current_class) # TODO: After we collected all the information, we should add field and # string xrefs to each MethodAnalysis logger.info( "End of creating cross references (XREF) " "run time: {:0d}min {:02d}s".format( *divmod(int(time.time() - tic), 60) ) ) def _create_xref(self, current_class: dex.ClassDefItem) -> None: """ Create the xref for `current_class` There are four steps involved in getting the xrefs: * Xrefs for class instantiation and static class usage * for method calls * for string usage * for field manipulation All these information are stored in the *Analysis Objects. Note that this might be quite slow, as all instructions are parsed. :param current_class: The class to create xrefs for """ cur_cls_name = current_class.get_name() logger.debug( "Creating XREF/DREF for class at @0x{:08x}".format( current_class.get_class_data_off() ) ) for current_method in current_class.get_methods(): logger.debug( "Creating XREF for method at @0x{:08x}".format( current_method.get_code_off() ) ) cur_meth = self.get_method(current_method) cur_cls = self.classes[cur_cls_name] for off, instruction in current_method.get_instructions_idx(): op_value = instruction.get_op_value() # 1) check for class calls: const-class (0x1c), new-instance (0x22) if op_value in [0x1C, 0x22]: idx_type = instruction.get_ref_kind() # type_info is the string like 'Ljava/lang/Object;' type_info = instruction.cm.vm.get_cm_type(idx_type).lstrip( '[' ) if type_info[0] != 'L': # Need to make sure, that we get class types and not other types continue if type_info == cur_cls_name: # FIXME: effectively ignoring calls to itself - do we want that? continue if type_info not in self.classes: # Create new external class self.classes[type_info] = ClassAnalysis( ExternalClass(type_info) ) oth_cls = self.classes[type_info] # FIXME: xref_to does not work here! current_method is wrong, as it is not the target! # In this case that means, that current_method calls the class oth_class. # Hence, on xref_to the method info is the calling method not the called one, # as there is no called method! # With the _new_instance and _const_class can this be deprecated? # Removing these does not impact tests cur_cls.add_xref_to( REF_TYPE(op_value), oth_cls, cur_meth, off ) oth_cls.add_xref_from( REF_TYPE(op_value), cur_cls, cur_meth, off ) if op_value == 0x1C: cur_meth.add_xref_const_class(oth_cls, off) oth_cls.add_xref_const_class(cur_meth, off) if op_value == 0x22: cur_meth.add_xref_new_instance(oth_cls, off) oth_cls.add_xref_new_instance(cur_meth, off) # 2) check for method calls: invoke-* (0x6e ... 0x72), invoke-xxx/range (0x74 ... 0x78) elif (0x6E <= op_value <= 0x72) or (0x74 <= op_value <= 0x78): idx_meth = instruction.get_ref_kind() method_info = instruction.cm.vm.get_cm_method(idx_meth) if not method_info: logger.warning( "Could not get method_info " "for instruction at {} in method at @{}. " "Requested IDX {}".format( off, current_method.get_code_off(), idx_meth ) ) continue class_info = method_info[0].lstrip('[') if class_info[0] != 'L': # Need to make sure, that we get class types and not other types # If another type, like int is used, we simply skip it. continue # Resolve the second MethodAnalysis oth_meth = self._resolve_method( class_info, method_info[1], method_info[2] ) oth_cls = self.classes[class_info] # FIXME: we could merge add_method_xref_* and add_xref_* cur_cls.add_method_xref_to( cur_meth, oth_cls, oth_meth, off ) oth_cls.add_method_xref_from( oth_meth, cur_cls, cur_meth, off ) # Internal xref related to class manipulation cur_cls.add_xref_to( REF_TYPE(op_value), oth_cls, oth_meth, off ) oth_cls.add_xref_from( REF_TYPE(op_value), cur_cls, cur_meth, off ) # 3) check for string usage: const-string (0x1a), const-string/jumbo (0x1b) elif 0x1A <= op_value <= 0x1B: string_value = instruction.cm.vm.get_cm_string( instruction.get_ref_kind() ) if string_value not in self.strings: self.strings[string_value] = StringAnalysis( string_value ) self.strings[string_value].add_xref_from( cur_cls, cur_meth, off ) # TODO maybe we should add a step 3a) here and check for all const fields. You can then xref for integers etc! # But: This does not work, as const fields are usually optimized internally to const calls... # 4) check for field usage: i*op (0x52 ... 0x5f), s*op (0x60 ... 0x6d) elif 0x52 <= op_value <= 0x6D: idx_field = instruction.get_ref_kind() field_info = instruction.cm.vm.get_cm_field(idx_field) field_item = ( instruction.cm.vm.get_encoded_field_descriptor( field_info[0], field_info[2], field_info[1] ) ) if not field_item: continue if (0x52 <= op_value <= 0x58) or ( 0x60 <= op_value <= 0x66 ): # read access to a field self.classes[cur_cls_name].add_field_xref_read( cur_meth, cur_cls, field_item, off ) cur_meth.add_xref_read(cur_cls, field_item, off) else: # write access to a field self.classes[cur_cls_name].add_field_xref_write( cur_meth, cur_cls, field_item, off ) cur_meth.add_xref_write(cur_cls, field_item, off) def get_method( self, method: dex.EncodedMethod ) -> Union[MethodAnalysis, None]: """ Get the [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] object for a given [EncodedMethod][androguard.core.dex.EncodedMethod]. This Analysis object is used to enhance `EncodedMethods`. :param method: `EncodedMethod` to search for :returns: `MethodAnalysis` object for the given method, or None if method was not found """ if method in self.methods: return self.methods[method] return None # Alias get_method_analysis = get_method def _resolve_method( self, class_name: str, method_name: str, method_descriptor: list[str] ) -> MethodAnalysis: """ Resolves the Method and returns [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis]. Will automatically create [ExternalMethods][androguard.core.analysis.analysis.ExternalMethod] if can not resolve and add to the ClassAnalysis etc :param class_name: :param method_name: :param method_descriptor: Tuple which has parameters and return type, i.e. `['(I Z)', 'V']` :returns: the `MethodAnalysis` """ m_hash = (class_name, method_name, ''.join(method_descriptor)) if m_hash not in self.__method_hashes: # Need to create a new method if class_name not in self.classes: # External class? no problem! self.classes[class_name] = ClassAnalysis( ExternalClass(class_name) ) # Create external method meth = ExternalMethod( class_name, method_name, ''.join(method_descriptor) ) meth_analysis = MethodAnalysis(None, meth) # add to all the collections we have self.__method_hashes[m_hash] = meth_analysis self.classes[class_name].add_method(meth_analysis) self.methods[meth] = meth_analysis return self.__method_hashes[m_hash] def get_method_by_name( self, class_name: str, method_name: str, method_descriptor: str ) -> Union[dex.EncodedMethod, None]: """ Search for a [EncodedMethod][androguard.core.dex.EncodedMethod] in all classes in this analysis :param class_name: name of the class, for example `'Ljava/lang/Object;'` :param method_name: name of the method, for example `'onCreate'` :param method_descriptor: descriptor, for example `'(I I Ljava/lang/String)V'` :returns: `EncodedMethod` or None if method was not found """ m_a = self.get_method_analysis_by_name( class_name, method_name, method_descriptor ) if m_a and not m_a.is_external(): return m_a.get_method() return None def get_method_analysis_by_name( self, class_name: str, method_name: str, method_descriptor: str ) -> Union[MethodAnalysis, None]: """ Returns the crossreferencing object for a given method. This function is similar to [get_method_analysis][androguard.core.analysis.analysis.ClassAnalysis.get_method_analysis], with the difference that you can look up the Method by name :param class_name: name of the class, for example `'Ljava/lang/Object;'` :param method_name: name of the method, for example `'onCreate'` :param method_descriptor: method descriptor, for example `'(I I)V'` :returns: `MethodAnalysis` """ m_hash = (class_name, method_name, method_descriptor) if m_hash not in self.__method_hashes: return None return self.__method_hashes[m_hash] def get_field_analysis( self, field: dex.EncodedField ) -> Union[FieldAnalysis, None]: """ Get the [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis] for a given [EncodedField][androguard.core.dex.EncodedField] :param field: the `EncodedField` :returns: the `FieldAnalysis` """ class_analysis = self.get_class_analysis(field.get_class_name()) if class_analysis: return class_analysis.get_field_analysis(field) return None def is_class_present(self, class_name: str) -> bool: """ Checks if a given class name is part of this Analysis. :param class_name: classname like 'Ljava/lang/Object;' (including L and ;) :returns: True if class was found, False otherwise """ return class_name in self.classes def get_class_analysis(self, class_name: str) -> ClassAnalysis: """ Returns the [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis] object for a given classname. :param class_name: classname like `'Ljava/lang/Object;'` (including L and ;) :returns: `ClassAnalysis` """ return self.classes.get(class_name) def get_external_classes(self) -> Iterator[ClassAnalysis]: """ Returns all external classes, that means all classes that are not defined in the given set of [DEX][androguard.core.dex.DEX]. :returns: the external classes """ for cls in self.classes.values(): if cls.is_external(): yield cls def get_internal_classes(self) -> Iterator[ClassAnalysis]: """ Returns all internal classes, that means all classes that are defined in the given set of [DEX][androguard.core.dex.DEX]. :returns: the internal classes """ for cls in self.classes.values(): if not cls.is_external(): yield cls def get_internal_methods(self) -> Iterator[MethodAnalysis]: """ Returns all internal methods, that means all methods that are defined in the given set of [DEX][androguard.core.dex.DEX]. :returns: the internal methods """ for m in self.methods.values(): if not m.is_external(): yield m def get_external_methods(self) -> Iterator[MethodAnalysis]: """ Returns all external methods, that means all methods that are not defined in the given set of [DEX][androguard.core.dex.DEX]. :returns: the external methods """ for m in self.methods.values(): if m.is_external(): yield m def get_strings_analysis(self) -> dict[str, StringAnalysis]: """ Returns a dictionary of strings and their corresponding [StringAnalysis][androguard.core.analysis.analysis.StringAnalysis] :returns: the dictionary of strings """ return self.strings def get_strings(self) -> list[StringAnalysis]: """ Returns a list of [StringAnalysis][androguard.core.analysis.analysis.StringAnalysis] objects :returns: list of `StringAnalysis objects """ return self.strings.values() def get_classes(self) -> list[ClassAnalysis]: """ Returns a list of [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis] objects Returns both internal and external classes (if any) :returns: list of `ClassAnalysis` objects """ return self.classes.values() def get_methods(self) -> Iterator[MethodAnalysis]: """ Returns a generator of [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] objects :returns: generator of `MethodAnalysis` objects """ yield from self.methods.values() def get_fields(self) -> Iterator[FieldAnalysis]: """ Returns a generator of [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis] objects :returns: generator of `FieldAnalysis` objects """ for c in self.classes.values(): for f in c.get_fields(): yield f def find_classes( self, name: str = ".*", no_external: bool = False ) -> Iterator[ClassAnalysis]: """ Find classes by name, using regular expression This method will return all [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis] Object that match the name of the class. :param name: regular expression for class name (default ".*") :param no_external: Remove external classes from the output (default False) :returns: generator of `ClassAnalysis` objects """ for cname, c in self.classes.items(): if no_external and isinstance(c.get_vm_class(), ExternalClass): continue if re.match(name, cname): yield c def find_methods( self, classname: str = ".*", methodname: str = ".*", descriptor: str = ".*", accessflags: str = ".*", no_external: bool = False, ) -> Iterator[MethodAnalysis]: """ Find a method by name using regular expression. This method will return all [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] objects, which match the classname, methodname, descriptor and accessflags of the method. :param classname: regular expression for the classname :param methodname: regular expression for the method name :param descriptor: regular expression for the descriptor :param accessflags: regular expression for the accessflags :param no_external: Remove external method from the output (default False) :returns: generator of `MethodAnalysis` objects """ for cname, c in self.classes.items(): if re.match(classname, cname): for m in c.get_methods(): z = m.get_method() # TODO is it even possible that an internal class has # external methods? Maybe we should check for ExternalClass # instead... # Above: Yes, it is possible. Internal classes that inherit from # an External class and call inherited methods will show as # external calls if no_external and isinstance(z, ExternalMethod): continue if ( re.match(methodname, z.get_name()) and re.match(descriptor, z.get_descriptor()) and re.match(accessflags, z.get_access_flags_string()) ): yield m def find_strings(self, string: str = ".*") -> Iterator[StringAnalysis]: """ Find strings by regex :param string: regular expression for the string to search for :returns: generator of `StringAnalysis` objects """ for s, sa in self.strings.items(): if re.match(string, s): yield sa def find_fields( self, classname: str = ".*", fieldname: str = ".*", fieldtype: str = ".*", accessflags: str = ".*", ) -> Iterator[FieldAnalysis]: """ find fields by regex :param classname: regular expression of the classname :param fieldname: regular expression of the fieldname :param fieldtype: regular expression of the fieldtype :param accessflags: regular expression of the access flags :returns: generator of `FieldAnalysis` """ for cname, c in self.classes.items(): if re.match(classname, cname): for f in c.get_fields(): z = f.get_field() if ( re.match(fieldname, z.get_name()) and re.match(fieldtype, z.get_descriptor()) and re.match(accessflags, z.get_access_flags_string()) ): yield f def __repr__(self): return "".format( len(self.vms), len(self.classes), len(self.methods), len(self.strings), ) def get_call_graph( self, classname: str = ".*", methodname: str = ".*", descriptor: str = ".*", accessflags: str = ".*", no_isolated: bool = False, entry_points: list = [], ) -> nx.DiGraph: """ Generate a directed graph based on the methods found by the filters applied. The filters are the same as in [find_methods][androguard.core.analysis.analysis.Analysis.find_methods] A `networkx.DiGraph` is returned, containing all edges only once! that means, if a method calls some method twice or more often, there will only be a single connection. :param classname: regular expression of the classname (default: ".*") :param methodname: regular expression of the methodname (default: ".*") :param descriptor: regular expression of the descriptor (default: ".*") :param accessflags: regular expression of the access flags (default: ".*") :param no_isolated: remove isolated nodes from the graph, e.g. methods which do not call anything (default: `False`) :param entry_points: A list of classes that are marked as entry point :returns: the `DiGraph` object """ def _add_node(G, method, _entry_points): """ Wrapper to add methods to a graph """ if method not in G: if isinstance(method, ExternalMethod): is_external = True else: is_external = False if method.get_class_name() in _entry_points: is_entry_point = True else: is_entry_point = False G.add_node( method, external=is_external, entrypoint=is_entry_point, methodname=method.get_name(), descriptor=method.get_descriptor(), accessflags=method.get_access_flags_string(), classname=method.get_class_name(), ) CG = nx.DiGraph() # Note: If you create the CG from many classes at the same time, the drawing # will be a total mess... for m in self.find_methods( classname=classname, methodname=methodname, descriptor=descriptor, accessflags=accessflags, ): orig_method = m.get_method() logger.info("Found Method --> {}".format(orig_method)) if no_isolated and len(m.get_xref_to()) == 0: logger.info( "Skipped {}, because if has no xrefs".format(orig_method) ) continue _add_node(CG, orig_method, entry_points) for callee_class, callee_method, offset in m.get_xref_to(): _add_node(CG, callee_method.method, entry_points) # As this is a DiGraph and we are not interested in duplicate edges, # check if the edge is already in the edge set. # If you need all calls, you probably want to check out MultiDiGraph if not CG.has_edge(orig_method, callee_method.method): CG.add_edge(orig_method, callee_method.method) return CG def create_ipython_exports(self) -> None: """ WARNING: this feature is experimental and is currently not enabled by default! Use with caution! Creates attributes for all classes, methods and fields on the `Analysis` object itself. This makes it easier to work with `Analysis` module in an iPython shell. Classes can be search by typing `dx.CLASS_`, as each class is added via this attribute name. Each class will have all methods attached to it via `dx.CLASS_Foobar.METHOD_`. Fields have a similar syntax: `dx.CLASS_Foobar.FIELD_`. As Strings can contain nearly anything, use [find_strings][androguard.core.analysis.analysis.Analysis.find_strings] instead. * Each `CLASS_` item will return a [ClassAnalysis][androguard.core.analysis.analysis.ClassAnalysis] * Each `METHOD_` item will return a [MethodAnalysis][androguard.core.analysis.analysis.MethodAnalysis] * Each `FIELD_` item will return a [FieldAnalysis][androguard.core.analysis.analysis.FieldAnalysis] """ # TODO: it would be fun to have the classes organized like the packages. I.e. you could do dx.CLASS_xx.yyy.zzz for cls in self.get_classes(): name = "CLASS_" + bytecode.FormatClassToPython(cls.name) if hasattr(self, name): logger.warning("Already existing class {}!".format(name)) setattr(self, name, cls) for meth in cls.get_methods(): method_name = meth.name if method_name in ["", ""]: _, method_name = bytecode.get_package_class_name(cls.name) # FIXME this naming schema is not very good... but to describe a method uniquely, we need all of it mname = ( "METH_" + method_name + "_" + bytecode.FormatDescriptorToPython(meth.access) + "_" + bytecode.FormatDescriptorToPython(meth.descriptor) ) if hasattr(cls, mname): logger.warning( "already existing method: {} at class {}".format( mname, name ) ) setattr(cls, mname, meth) # FIXME: syntetic classes produce problems here. # If the field name is the same in the parent as in the syntetic one, we can only add one! for field in cls.get_fields(): mname = "FIELD_" + bytecode.FormatNameToPython(field.name) if hasattr(cls, mname): logger.warning( "already existing field: {} at class {}".format( mname, name ) ) setattr(cls, mname, field) def get_permissions( self, apilevel: Union[str, int, None] = None ) -> Iterator[MethodAnalysis, list[str]]: """ Returns the permissions and the API method based on the API level specified. This can be used to find usage of API methods which require a permission. Should be used in combination with an [APK][androguard.core.apk.APK] The returned permissions are a list, as some API methods require multiple permissions at once. The following example shows the usage and how to get the calling methods using XREF: Examples: >>> from androguard.misc import AnalyzeAPK >>> a, d, dx = AnalyzeAPK("somefile.apk") >>> for meth, perm in dx.get_permissions(a.get_effective_target_sdk_version()): >>> print("Using API method {} for permission {}".format(meth, perm)) >>> print("used in:") >>> for _, m, _ in meth.get_xref_from(): >>> print(m.full_name) .Note: This method might be unreliable and might not extract all used permissions. The permission mapping is based on [Axplorer](https://github.com/reddr/axplorer) and might be incomplete due to the nature of the extraction process. Unfortunately, there is no official API<->Permission mapping. The output of this method relies also on the set API level. If the wrong API level is used, the results might be wrong. :param apilevel: API level to load, or None for default :returns: yields tuples of `MethodAnalysis` (of the API method) and list of permission string """ # TODO maybe have the API level loading in the __init__ method and pass the APK as well? permmap = load_api_specific_resource_module( 'api_permission_mappings', apilevel ) if not permmap: raise ValueError( "No permission mapping found! Is one available? " "The requested API level was '{}'".format(apilevel) ) for cls in self.get_external_classes(): for meth_analysis in cls.get_methods(): meth = meth_analysis.get_method() if meth.permission_api_name in permmap: yield meth_analysis, permmap[meth.permission_api_name] def get_permission_usage( self, permission: str, apilevel: Union[str, int, None] = None ) -> Iterator[MethodAnalysis]: """ Find the usage of a permission inside the Analysis. Examples: >>> from androguard.misc import AnalyzeAPK >>> a, d, dx = AnalyzeAPK("somefile.apk") >>> for meth in dx.get_permission_usage('android.permission.SEND_SMS', a.get_effective_target_sdk_version()): >>> print("Using API method {}".format(meth)) >>> print("used in:") >>> for _, m, _ in meth.get_xref_from(): >>> print(m.full_name) The permission mappings might be incomplete! See also [get_permissions][androguard.core.analysis.analysis.Analysis.get_permissions]. :param permission: the name of the android permission (usually 'android.permission.XXX') :param apilevel: the requested API level or None for default :returns: yields `MethodAnalysis` objects for all using API methods """ # TODO maybe have the API level loading in the __init__ method and pass the APK as well? permmap = load_api_specific_resource_module( 'api_permission_mappings', apilevel ) if not permmap: raise ValueError( "No permission mapping found! Is one available? " "The requested API level was '{}'".format(apilevel) ) apis = {k for k, v in permmap.items() if permission in v} if not apis: raise ValueError( "No API methods could be found which use the permission. " "Does the permission exists? You requested: '{}'".format( permission ) ) for cls in self.get_external_classes(): for meth_analysis in cls.get_methods(): meth = meth_analysis.get_method() if meth.permission_api_name in apis: yield meth_analysis def get_android_api_usage(self) -> Iterator[MethodAnalysis]: """ Get all usage of the Android APIs inside the `Analysis`. :returns: yields `MethodAnalysis` objects for all Android APIs methods """ for cls in self.get_external_classes(): for meth_analysis in cls.get_methods(): if meth_analysis.is_android_api(): yield meth_analysis def is_ascii_obfuscation(vm: dex.DEX) -> bool: """ Tests if any class inside a [DEX][androguard.core.dex.DEX] uses ASCII Obfuscation (e.g. UTF-8 Chars in Classnames) :param vm: `DEX` :returns: `True` if ascii obfuscation otherwise `False` """ for classe in vm.get_classes(): if is_ascii_problem(classe.get_name()): return True for method in classe.get_methods(): if is_ascii_problem(method.get_name()): return True return False ================================================ FILE: libs/androguard/core/androconf.py ================================================ # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations import os import sys import tempfile from typing import Union from androguard import __version__ from androguard.core.api_specific_resources import ( load_permission_mappings, load_permissions, ) ANDROGUARD_VERSION = __version__ from colorama import Fore, init from loguru import logger # initialize colorama, only has an effect on windows init() class InvalidResourceError(Exception): """ Invalid Resource Erorr is thrown by [load_api_specific_resource_module][androguard.core.androconf.load_api_specific_resource_module] """ pass def is_ascii_problem(s: str) -> bool: """ Test if a string contains other chars than ASCII :param s: a string to test :returns: `True` if string contains other chars than ASCII, `False` otherwise """ try: # As MUTF8Strings are actually bytes, we can simply check if they are ASCII or not s.decode("ascii") return False except (UnicodeEncodeError, UnicodeDecodeError): return True default_conf = { ## Configuration for executables used by androguard # Assume the binary is in $PATH, otherwise give full path # Runtime variables # # A path to the temporary directory "TMP_DIRECTORY": tempfile.gettempdir(), # Function to print stuff "PRINT_FCT": sys.stdout.write, # Default API level, if requested API is not available "DEFAULT_API": 16, # this is the minimal API version we have # Session, for persistence "SESSION": None, # Color output configuration "COLORS": { "OFFSET": Fore.YELLOW, "OFFSET_ADDR": Fore.GREEN, "INSTRUCTION_NAME": Fore.YELLOW, "BRANCH_FALSE": Fore.RED, "BRANCH_TRUE": Fore.GREEN, "BRANCH": Fore.BLUE, "EXCEPTION": Fore.CYAN, "BB": Fore.MAGENTA, "NOTE": Fore.RED, "NORMAL": Fore.RESET, "OUTPUT": { "normal": Fore.RESET, "registers": Fore.YELLOW, "literal": Fore.GREEN, "offset": Fore.MAGENTA, "raw": Fore.RED, "string": Fore.RED, "meth": Fore.CYAN, "type": Fore.BLUE, "field": Fore.GREEN, } } } class Configuration: instance = None def __init__(self) -> None: """ A Wrapper for the CONF object This creates a singleton, which has the same attributes everywhere. """ if not Configuration.instance: Configuration.instance = default_conf def __getattr__(self, item): return getattr(self.instance, item) def __getitem__(self, item): return self.instance[item] def __setitem__(self, key, value): self.instance[key] = value def __str__(self): return str(self.instance) def __repr__(self): return repr(self.instance) CONF = Configuration() def is_android(filename: str) -> str: """ Return the type of the file :param filename: the filename :returns: "APK", "DEX", None """ if not filename: return None with open(filename, "rb") as fd: f_bytes = fd.read() return is_android_raw(f_bytes) def is_android_raw(raw: bytes) -> str: """ Returns a string that describes the type of file, for common Android specific formats :param raw: the file bytes to check :returns: the type of file """ val = None # We do not check for META-INF/MANIFEST.MF, # as you also want to analyze unsigned APKs... # AndroidManifest.xml should be in every APK. # classes.dex and resources.arsc are not required! # if raw[0:2] == b"PK" and b'META-INF/MANIFEST.MF' in raw: # TODO this check might be still invalid. A ZIP file with stored APK inside would match as well. # probably it would be better to rewrite this and add more sanity checks. if raw[0:2] == b"PK" and b'AndroidManifest.xml' in raw: val = "APK" # check out elif raw[0:3] == b"dex": val = "DEX" elif raw[0:3] == b"dey": val = "DEY" elif raw[0:4] == b"\x03\x00\x08\x00" or raw[0:4] == b"\x00\x00\x08\x00": val = "AXML" elif raw[0:4] == b"\x02\x00\x0C\x00": val = "ARSC" return val def rrmdir(directory: str) -> None: """ Recursively delete a directory :param directory: directory to remove """ for root, dirs, files in os.walk(directory, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) os.rmdir(directory) def make_color_tuple(color: str) -> tuple[int, int, int]: """ turn something like `#000000` into `0,0,0` or `#FFFFFF` into `255,255,255` """ R = color[1:3] G = color[3:5] B = color[5:7] R = int(R, 16) G = int(G, 16) B = int(B, 16) return R, G, B def interpolate_tuple( startcolor: tuple[int, int, int], goalcolor: tuple[int, int, int], steps: int, ) -> list[str]: """ Take two RGB color sets and mix them over a specified number of steps. Return the list """ # white R = startcolor[0] G = startcolor[1] B = startcolor[2] targetR = goalcolor[0] targetG = goalcolor[1] targetB = goalcolor[2] DiffR = targetR - R DiffG = targetG - G DiffB = targetB - B buffer = [] for i in range(0, steps + 1): iR = R + (DiffR * i // steps) iG = G + (DiffG * i // steps) iB = B + (DiffB * i // steps) hR = str.replace(hex(iR), "0x", "") hG = str.replace(hex(iG), "0x", "") hB = str.replace(hex(iB), "0x", "") if len(hR) == 1: hR = "0" + hR if len(hB) == 1: hB = "0" + hB if len(hG) == 1: hG = "0" + hG color = str.upper("#" + hR + hG + hB) buffer.append(color) return buffer def color_range( startcolor: tuple[int, int, int], goalcolor: tuple[int, int, int], steps: int, ) -> list[str]: """ wrapper for interpolate_tuple that accepts colors as html (`#CCCCC` and such) :param startcolor: the start RGB color tuple :param goalcolor: the goal RGB color tuple :param steps: amount of steps :returns: the interpolated RGB tuple """ start_tuple = make_color_tuple(startcolor) goal_tuple = make_color_tuple(goalcolor) return interpolate_tuple(start_tuple, goal_tuple, steps) def load_api_specific_resource_module( resource_name: str, api: Union[str, int, None] = None ) -> dict: """ Load the module from the JSON files and return a dict, which might be empty if the resource could not be loaded. If no api version is given, the default one from the CONF dict is used. :param resource_name: Name of the resource to load :param api: API version :raises InvalidResourceError: if resource not found :returns: dict """ loader = dict( aosp_permissions=load_permissions, api_permission_mappings=load_permission_mappings, ) if resource_name not in loader: raise InvalidResourceError( "Invalid Resource '{}', not in [{}]".format( resource_name, ", ".join(loader.keys()) ) ) if not api: api = CONF["DEFAULT_API"] ret = loader[resource_name](api) if ret == {}: # No API mapping found, return default logger.warning( "API mapping for API level {} was not found! " "Returning default, which is API level {}".format( api, CONF['DEFAULT_API'] ) ) ret = loader[resource_name](CONF['DEFAULT_API']) return ret ================================================ FILE: libs/androguard/core/api_specific_resources/__init__.py ================================================ import json import os import re from typing import Union from loguru import logger class APILevelNotFoundError(Exception): pass def load_permissions( apilevel: Union[str, int], permtype: str = 'permissions' ) -> dict[str, dict[str, str]]: """ Load the Permissions for the given apilevel. The permissions lists are generated using this tool: https://github.com/U039b/aosp_permissions_extraction Has a fallback to select the maximum or minimal available API level. For example, if 28 is requested but only 26 is available, 26 is returned. If 5 is requested but 16 is available, 16 is returned. If an API level is requested which is in between of two API levels we got, the lower level is returned. For example, if 5,6,7,10 is available and 8 is requested, 7 is returned instead. :param apilevel: integer value of the API level :param permtype: either load permissions (`'permissions'`) or permission groups (`'groups'`) :return: a dictionary of {Permission Name: {Permission info} """ if permtype not in ['permissions', 'groups']: raise ValueError("The type of permission list is not known.") # Usually apilevel is supplied as string... apilevel = int(apilevel) root = os.path.dirname(os.path.realpath(__file__)) permissions_file = os.path.join( root, "aosp_permissions", "permissions_{}.json".format(apilevel) ) levels = filter( lambda x: re.match(r'^permissions_\d+\.json$', x), os.listdir(os.path.join(root, "aosp_permissions")), ) levels = list(map(lambda x: int(x[:-5].split('_')[1]), levels)) if not levels: logger.error("No Permissions available, can not load!") return {} logger.debug( "Available API levels: {}".format(", ".join(map(str, sorted(levels)))) ) if not os.path.isfile(permissions_file): if apilevel > max(levels): logger.warning( "Requested API level {} is larger than maximum we have, returning API level {} instead.".format( apilevel, max(levels) ) ) return load_permissions(max(levels), permtype) if apilevel < min(levels): logger.warning( "Requested API level {} is smaller than minimal we have, returning API level {} instead.".format( apilevel, max(levels) ) ) return load_permissions(min(levels), permtype) # Missing level between existing ones, return the lower level lower_level = max(filter(lambda x: x < apilevel, levels)) logger.warning( "Requested API Level could not be found, using {} instead".format( lower_level ) ) return load_permissions(lower_level, permtype) with open(permissions_file, "r") as fp: return json.load(fp)[permtype] def load_permission_mappings( apilevel: Union[str, int] ) -> dict[str, list[str]]: """ Load the API/Permission mapping for the requested API level. If the requetsed level was not found, None is returned. :param apilevel: integer value of the API level, i.e. 24 for Android 7.0 :return: a dictionary of {MethodSignature: [List of Permissions]} """ root = os.path.dirname(os.path.realpath(__file__)) permissions_file = os.path.join( root, "api_permission_mappings", "permissions_{}.json".format(apilevel) ) if not os.path.isfile(permissions_file): return {} with open(permissions_file, "r") as fp: return json.load(fp) ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_10.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows an application to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows an application to view\n the information about the state of WiMAX.", "description_ptr": "permdesc_accessWimaxState", "label": "view WiMAX state", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ASEC_ACCESS": { "description": "Allows the application to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the application to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the application to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the application to mount / unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount / unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the application to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal applications.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures and videos\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows an application to connect\n to and disconnect from WiMAX network.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.COPY_PROTECTED_DATA": { "description": "Allows to invoke default container service to copy content. Not for use by normal applications.", "description_ptr": "permlab_copyProtectedData", "label": "Allows to invoke default container service to copy content. Not for use by normal applications.", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows an application to\n forcibly stop other applications.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other applications", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the application to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOVE_PACKAGE": { "description": "Allows an application to move application resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "Move application resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.NFC": { "description": "Allows an application to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows application to receive\n and process emergency broadcast messages. This permission is only available\n to system applications.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n phone usage.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME": { "description": "Allows an application to change\n the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the application to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen of the phone.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows an application to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to add or change the \n events on your calendar, which may send email to guests. Malicious applications can use this \n to erase or modify your calendar events or to send email to guests.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the application to set an alarm in\n an installed alarm clock application. Some alarm clock applications may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set alarm in alarm clock", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_13.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows an application to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ASEC_ACCESS": { "description": "Allows the application to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the application to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the application to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the application to mount / unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount / unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the application to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal applications.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal applications.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures and videos\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signatureOrSystem" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.COPY_PROTECTED_DATA": { "description": "Allows to invoke default container service to copy content. Not for use by normal applications.", "description_ptr": "permlab_copyProtectedData", "label": "Allows to invoke default container service to copy content. Not for use by normal applications.", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows an application to\n forcibly stop other applications.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other applications", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the application to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOVE_PACKAGE": { "description": "Allows an application to move application resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "Move application resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows an application to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows an application to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME": { "description": "Allows an application to change\n the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the application to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows an application to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to add or change the\n events on your calendar, which may send email to guests. Malicious applications can use this\n to erase or modify your calendar events or to send email to guests.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows an application to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the application to set an alarm in\n an installed alarm clock application. Some alarm clock applications may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set alarm in alarm clock", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_14.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows an application to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ASEC_ACCESS": { "description": "Allows the application to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the application to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the application to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the application to mount / unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount / unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the application to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal applications.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal applications.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal applications.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal applications.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal applications.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures and videos\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the application to launch the full backup confirmation UI. Not to be used by any application.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signatureOrSystem" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.COPY_PROTECTED_DATA": { "description": "Allows to invoke default container service to copy content. Not for use by normal applications.", "description_ptr": "permlab_copyProtectedData", "label": "Allows to invoke default container service to copy content. Not for use by normal applications.", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows an application to\n forcibly stop other applications.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other applications", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows an application to manage network policies and define application-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the application to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows modification of how network usage is accounted against applications. Not for use by normal applications.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOVE_PACKAGE": { "description": "Allows an application to move application resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "Move application resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows an application to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the application to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all calendar\n events stored on your phone, including those of friends or coworkers. A malicious application with\n this permission can extract personal information from these calendars without the owners' knowledge.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows an application to read historical network usage for specific networks and applications.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_PROFILE": { "description": "Allows the application to read personal\n profile information stored on your device, such as your name and contact information. This\n means the application can identify you and send your profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your profile data", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the application to access\n and sync social updates from you and your friends. Malicious apps can use this to read\n private communications between you and your friends on social networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows application to receive\n and process emergency broadcast messages. This permission is only available\n to system applications.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REMOVE_TASKS": { "description": "Allows an application to remove\n tasks and kill their applications. Malicious applications can disrupt\n the behavior of other applications.", "description_ptr": "permdesc_removeTasks", "label": "stop running applications", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows application to retrieve\n the content of the active window. Malicious applications may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSmsNoConfirmation", "label": "send SMS messages with no confirmation", "label_ptr": "permlab_sendSmsNoConfirmation", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows an application to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME": { "description": "Allows an application to change\n the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the application to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows an application to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious applications could monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to send event invitations as the calendar owner and add, remove,\n change events that you can modify on your device, including those of friends or co-workers. A malicious application with this permission\n can send spam emails that appear to come from calendar owners, modify events without the owners' knowledge, or add fake events.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows an application to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_PROFILE": { "description": "Allows the application to change or add\n to personal profile information stored on your device, such as your name and contact\n information. This means other applications can identify you and send your profile\n information to others.", "description_ptr": "permdesc_writeProfile", "label": "write to your profile data", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the application to display\n social updates from your friends. Malicious apps can use this to pretend to be a friend\n and trick you into revealing passwords or other confidential information.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the application to set an alarm in\n an installed alarm clock application. Some alarm clock applications may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set alarm in alarm clock", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the application to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_15.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows an application to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows an application to view\n the information about the state of WiMAX.", "description_ptr": "permdesc_accessWimaxState", "label": "view WiMAX state", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "Allows an application to use any installed\n media decoder to decode for playback.", "description_ptr": "permdesc_anyCodecForPlayback", "label": "use any media decoder for playback", "label_ptr": "permlab_anyCodecForPlayback", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ASEC_ACCESS": { "description": "Allows the application to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the application to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the application to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the application to mount / unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount / unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the application to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal applications.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal applications.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal applications.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal applications.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal applications.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures and videos\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows an application to connect\n to and disconnect from WiMAX network.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the application to launch the full backup confirmation UI. Not to be used by any application.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signatureOrSystem" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.COPY_PROTECTED_DATA": { "description": "Allows to invoke default container service to copy content. Not for use by normal applications.", "description_ptr": "permlab_copyProtectedData", "label": "Allows to invoke default container service to copy content. Not for use by normal applications.", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows an application to\n forcibly stop other applications.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other applications", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows an application to manage network policies and define application-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the application to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows modification of how network usage is accounted against applications. Not for use by normal applications.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOVE_PACKAGE": { "description": "Allows an application to move application resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "Move application resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows an application to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the application to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all calendar\n events stored on your phone, including those of friends or coworkers. A malicious application with\n this permission can extract personal information from these calendars without the owners' knowledge.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows an application to read historical network usage for specific networks and applications.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_PROFILE": { "description": "Allows the application to read personal\n profile information stored on your device, such as your name and contact information. This\n means the application can identify you and send your profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your profile data", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the application to access\n and sync social updates from you and your friends. Malicious apps can use this to read\n private communications between you and your friends on social networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows application to receive\n and process emergency broadcast messages. This permission is only available\n to system applications.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REMOVE_TASKS": { "description": "Allows an application to remove\n tasks and kill their applications. Malicious applications can disrupt\n the behavior of other applications.", "description_ptr": "permdesc_removeTasks", "label": "stop running applications", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows application to retrieve\n the content of the active window. Malicious applications may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSmsNoConfirmation", "label": "send SMS messages with no confirmation", "label_ptr": "permlab_sendSmsNoConfirmation", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows an application to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME": { "description": "Allows an application to change\n the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the application to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows an application to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious applications could monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to send event invitations as the calendar owner and add, remove,\n change events that you can modify on your device, including those of friends or co-workers. A malicious application with this permission\n can send spam emails that appear to come from calendar owners, modify events without the owners' knowledge, or add fake events.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows an application to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_PROFILE": { "description": "Allows the application to change or add\n to personal profile information stored on your device, such as your name and contact\n information. This means other applications can identify you and send your profile\n information to others.", "description_ptr": "permdesc_writeProfile", "label": "write to your profile data", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the application to display\n social updates from your friends. Malicious apps can use this to pretend to be a friend\n and trick you into revealing passwords or other confidential information.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the application to set an alarm in\n an installed alarm clock application. Some alarm clock applications may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set alarm in alarm clock", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the application to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_16.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Do things that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for app developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location.", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS, email, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Access various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows the app to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows the app read/write access to\n properties uploaded by the checkin service. Not for use by normal\n apps.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access\n approximate location from location providers using network sources such as\n cell tower and Wi-Fi. When these location services are available and turned\n on, this permission allows the app to determine your approximate\n location.", "description_ptr": "permdesc_accessCoarseLocation", "label": "approximate (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "Allows the holder to access content\n providers from the shell. Should never be needed for normal apps.", "description_ptr": "permdesc_accessContentProvidersExternally", "label": "access content providers externally", "label_ptr": "permlab_accessContentProvidersExternally", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access precise\n location sources such as the Global Positioning System on the phone. When\n location services are available and turned on, this permission allows the\n app to determine your precise location.", "description_ptr": "permdesc_accessFineLocation", "label": "precise (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for\n testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows the app to use SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "View WiMAX connections", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows the app to make calls to AccountAuthenticators.", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "Allows the app to use any installed\n media decoder to decode for playback.", "description_ptr": "permdesc_anyCodecForPlayback", "label": "use any media decoder for playback", "label_ptr": "permlab_anyCodecForPlayback", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ASEC_ACCESS": { "description": "Allows the app to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the app to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the app to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the app to mount/unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount/unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the app to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows the app\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "create accounts and set passwords", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the app to control the system's backup and restore mechanism. Not for use by normal apps.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BATTERY_STATS": { "description": "Allows the app to modify\n collected battery statistics. Not for use by normal apps.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of an accessibility service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindAccessibilityService", "label": "bind to an accessibility service", "label_ptr": "permlab_bindAccessibilityService", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the app to tell the system\n which widgets can be used by which app. An app with this permission\n can give access to personal data to other apps.\n Not for use by normal apps.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal apps.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal apps.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal apps.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the app to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows the app to\n broadcast a notification that an app package has been removed.\n Malicious apps may use this to kill any other running\n app.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows the app to\n broadcast a notification that an SMS message has been received.\n Malicious apps may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows the app to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious apps may use this to forge MMS message receipt or to\n silently replace the content of any webpage with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the app to call\n any phone number, including emergency numbers, without your intervention.\n Malicious apps may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows the app to change the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows the app to change whether a\n component of another app is enabled or not. Malicious apps may use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get app components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable app components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows the app to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change system display settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "Change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows the app to free phone storage\n by deleting files in app cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all app cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows the app to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other apps' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the app to launch the full backup confirmation UI. Not to be used by any app.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows the app to enable/disable location\n update notifications from the radio. Not for use by normal apps.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.COPY_PROTECTED_DATA": { "description": "copy content", "description_ptr": "permlab_copyProtectedData", "label": "copy content", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows the app to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other apps' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_PACKAGES": { "description": "Allows the app to delete\n Android packages. Malicious apps may use this to delete important apps.", "description_ptr": "permdesc_deletePackages", "label": "delete apps", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DEVICE_POWER": { "description": "Allows the app to turn the phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows the app to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows the app to retrieve\n internal state of the system. Malicious apps may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the app to control the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows the app to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal apps.", "description_ptr": "permdesc_forceBack", "label": "force app to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows the app to forcibly stop other apps.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other apps", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_DETAILED_TASKS": { "description": "Allows the app to retrieve\n detailed information about currently and recently running tasks. Malicious apps may\n discover private information about other apps.", "description_ptr": "permdesc_getDetailedTasks", "label": "retrieve details of running apps", "label_ptr": "permlab_getDetailedTasks", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GRANT_REVOKE_PERMISSIONS": { "description": "Allows an application to grant or revoke\n specific permissions for it or other applications. Malicious applications may use this\n to access features you have not granted them.\n ", "description_ptr": "permdesc_grantRevokePermissions", "label": "grant or revoke permissions", "label_ptr": "permlab_grantRevokePermissions", "name": "android.permission.GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the app to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows the app to deliver\n its own input events (key presses, etc.) to other apps. Malicious\n apps may use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources\n for testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows the app to install new or updated\n Android packages. Malicious apps may use this to add new apps with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install apps", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the app to create\n windows that are intended to be used by the internal system\n user interface. Not for use by normal apps.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows the app to\n perform operations like adding and removing accounts, and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "add or remove accounts", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows the app to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal apps.", "description_ptr": "permdesc_manageAppTokens", "label": "manage app tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows the app to manage network policies and define app-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the app to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.MASTER_CLEAR": { "description": "Allows the app to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed apps.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows the app to modify how network usage is accounted against apps. Not for use by normal apps.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the app to control the\n phone features of the device. An app with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the app to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "erase SD Card", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the app to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "access SD Card filesystem", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOVE_PACKAGE": { "description": "Allows the app to move app resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "move app resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the app to modify collected component usage statistics. Not for use by normal apps.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the app to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the app to start CDMA provisioning.\n Malicious apps may unnecessarily start CDMA provisioning.", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to process\n outgoing calls and change the number to be dialed. This permission allows\n the app to monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to test a permission for the SD card that will be available on future devices.", "description_ptr": "permdesc_sdcardRead", "label": "test access to protected storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows the app to read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_INPUT_STATE": { "description": "Allows the app to watch the\n keys you press even when interacting with another app (such\n as typing a password). Should never be needed for normal apps.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows the app to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows the app to read historical network usage for specific networks and apps.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PROFILE": { "description": "Allows the app to read\n personal profile information stored on your device, such as your name and\n contact information. This means the app can identify you and may send your\n profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your own contact card", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the app\n to access and sync social updates from you and your friends. Be careful\n when sharing information -- this allows the app to read communications\n between you and your friends on social networks, regardless of\n confidentiality. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows the app to read all words,\n names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read terms you added to the dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the app to force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows the app to receive\n and process emergency broadcast messages. This permission is only available\n to system apps.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REMOVE_TASKS": { "description": "Allows the app to remove\n tasks and kill their apps. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_removeTasks", "label": "stop running apps", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows the app to retrieve\n the content of the active window. Malicious apps may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "Allows the app to send SMS\n messages. This may result in unexpected charges. Malicious apps may cost\n you money by sending messages without your confirmation.", "description_ptr": "permdesc_sendSmsNoConfirmation", "label": "send SMS messages with no confirmation", "label_ptr": "permlab_sendSmsNoConfirmation", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "signature|system" }, "android.permission.SERIAL_PORT": { "description": "Allows the holder to access serial ports using the SerialManager API.", "description_ptr": "permdesc_serialPort", "label": "access serial ports", "label_ptr": "permlab_serialPort", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows the app to\n monitor and control how the system launches activities.\n Malicious apps may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all app launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows the app\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal apps.", "description_ptr": "permdesc_setAlwaysFinish", "label": "force background apps to close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows the app to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_DEBUG_APP": { "description": "Allows the app to turn\n on debugging for another app. Malicious apps may use this\n to kill other apps.", "description_ptr": "permdesc_setDebugApp", "label": "enable app debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "Allows the app to change\n the keyboard layout. Should never be needed for normal apps.", "description_ptr": "permdesc_setKeyboardLayout", "label": "change keyboard layout", "label_ptr": "permlab_setKeyboardLayout", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "Allows the app to change\n the rotation of the screen at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows the app to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows the app to\n modify your preferred apps. Malicious apps may\n silently change the apps that are run, spoofing your\n existing apps to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred apps", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows the app\n to control the maximum number of processes that will run. Never\n needed for normal apps.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "Allows the app to control the\n screen compatibility mode of other applications. Malicious applications may\n break the behavior of other applications.", "description_ptr": "permdesc_setScreenCompatibility", "label": "set screen compatibility", "label_ptr": "permlab_setScreenCompatibility", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "Allows the app to change the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows the app to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to apps", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "Allows the app to start any activity, regardless of permission protection or exported state.", "description_ptr": "permdesc_startAnyActivity", "label": "start any activity", "label_ptr": "permlab_startAnyActivity", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "Allows the app to disable the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the app to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another app.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows the app to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows the app to modify\n your currently synced feeds. Malicious apps may change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to show system\n alert windows. Some alert windows may take over the entire screen.\n ", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the app to modify\n collected battery statistics. Not for use by normal apps.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_LOCK": { "description": "Allows the holder to offer information to the system about when would be a good time for a noninteractive reboot to upgrade the device.", "description_ptr": "permdesc_updateLock", "label": "discourage automatic device updates", "label_ptr": "permlab_updateLock", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows the app to request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use accounts on the device", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows the app to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows the app to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious apps may monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows the app to modify the\n Google services map. Not for use by normal apps.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows the app to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature|system" }, "android.permission.WRITE_PROFILE": { "description": "Allows the app to\n change or add to personal profile information stored on your device, such\n as your name and contact information. This means the app can identify you\n and may send your profile information to others.", "description_ptr": "permdesc_writeProfile", "label": "modify your own contact card", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows the app to modify the\n system's secure settings data. Not for use by normal apps.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows the app to write\n to SMS messages stored on your phone or SIM card. Malicious apps\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit your text messages (SMS or MMS)", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the app to\n display social updates from your friends. Be careful when sharing\n information -- this allows the app to produce messages that may appear to\n come from a friend. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows the app to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user-defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the app to read the\n history of all URLs that the Browser has visited, and all of the Browser's\n bookmarks. Note: this permission may not be enforced by third-party\n browsers or other applications with web browsing capabilities.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read your Web bookmarks and history", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows the\n app to modify the Browser's history or bookmarks stored on your phone.\n This may allow the app to erase or modify Browser data. Note:\n this permission may note be enforced by third-party browsers or other\n applications with web browsing capabilities.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write web bookmarks and history", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_17.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "perm_group_accounts", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.AFFECTS_BATTERY": { "description": "Use features that can quickly drain battery.", "description_ptr": "permgroupdesc_affectsBattery", "icon": "", "icon_ptr": "perm_group_affects_battery", "label": "Affects Battery", "label_ptr": "permgrouplab_affectsBattery", "name": "android.permission-group.AFFECTS_BATTERY" }, "android.permission-group.APP_INFO": { "description": "Ability to affect behavior of other applications on your device.", "description_ptr": "permgroupdesc_appInfo", "icon": "", "icon_ptr": "perm_group_app_info", "label": "Your applications information", "label_ptr": "permgrouplab_appInfo", "name": "android.permission-group.APP_INFO" }, "android.permission-group.AUDIO_SETTINGS": { "description": "Change audio settings.", "description_ptr": "permgroupdesc_audioSettings", "icon": "", "icon_ptr": "perm_group_audio_settings", "label": "Audio Settings", "label_ptr": "permgrouplab_audioSettings", "name": "android.permission-group.AUDIO_SETTINGS" }, "android.permission-group.BLUETOOTH_NETWORK": { "description": "Access devices and networks through Bluetooth.", "description_ptr": "permgroupdesc_bluetoothNetwork", "icon": "", "icon_ptr": "perm_group_bluetooth", "label": "Bluetooth", "label_ptr": "permgrouplab_bluetoothNetwork", "name": "android.permission-group.BLUETOOTH_NETWORK" }, "android.permission-group.BOOKMARKS": { "description": "Direct access to bookmarks and browser history.", "description_ptr": "permgroupdesc_bookmarks", "icon": "", "icon_ptr": "perm_group_bookmarks", "label": "Bookmarks and History", "label_ptr": "permgrouplab_bookmarks", "name": "android.permission-group.BOOKMARKS" }, "android.permission-group.CALENDAR": { "description": "Direct access to calendar and events.", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "Direct access to camera for image or video capture.", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.COST_MONEY": { "description": "Do things that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for app developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.DEVICE_ALARMS": { "description": "Set the alarm clock.", "description_ptr": "permgroupdesc_deviceAlarms", "icon": "", "icon_ptr": "perm_group_device_alarms", "label": "Alarm", "label_ptr": "permgrouplab_deviceAlarms", "name": "android.permission-group.DEVICE_ALARMS" }, "android.permission-group.DISPLAY": { "description": "Effect the UI of other applications.", "description_ptr": "permgroupdesc_display", "icon": "", "icon_ptr": "perm_group_display", "label": "Other Application UI", "label_ptr": "permgrouplab_display", "name": "android.permission-group.DISPLAY" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location.", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS, email, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "perm_group_messages", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.MICROPHONE": { "description": "Direct access to the microphone to record audio.", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NETWORK": { "description": "Access various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "perm_group_network", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to information about you, stored in on your contact card.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "perm_group_personal_info", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.SCREENLOCK": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_screenlock", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.SCREENLOCK" }, "android.permission-group.SOCIAL_INFO": { "description": "Direct access to information about your contacts and social connections.", "description_ptr": "permgroupdesc_socialInfo", "icon": "", "icon_ptr": "perm_group_social_info", "label": "Your social information", "label_ptr": "permgrouplab_socialInfo", "name": "android.permission-group.SOCIAL_INFO" }, "android.permission-group.STATUS_BAR": { "description": "Change the device status bar settings.", "description_ptr": "permgroupdesc_statusBar", "icon": "", "icon_ptr": "perm_group_status_bar", "label": "Status Bar", "label_ptr": "permgrouplab_statusBar", "name": "android.permission-group.STATUS_BAR" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYNC_SETTINGS": { "description": "Access to the sync settings.", "description_ptr": "permgroupdesc_syncSettings", "icon": "", "icon_ptr": "perm_group_sync_settings", "label": "Sync Settings", "label_ptr": "permgrouplab_syncSettings", "name": "android.permission-group.SYNC_SETTINGS" }, "android.permission-group.SYSTEM_CLOCK": { "description": "Change the device time or timezone.", "description_ptr": "permgroupdesc_systemClock", "icon": "", "icon_ptr": "perm_group_system_clock", "label": "Clock", "label_ptr": "permgrouplab_systemClock", "name": "android.permission-group.SYSTEM_CLOCK" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "perm_group_system_tools", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" }, "android.permission-group.USER_DICTIONARY": { "description": "Read words in user dictionary.", "description_ptr": "permgroupdesc_dictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary", "label": "Read User Dictionary", "label_ptr": "permgrouplab_dictionary", "name": "android.permission-group.USER_DICTIONARY" }, "android.permission-group.VOICEMAIL": { "description": "Direct access to voicemail.", "description_ptr": "permgroupdesc_voicemail", "icon": "", "icon_ptr": "perm_group_voicemail", "label": "Voicemail", "label_ptr": "permgrouplab_voicemail", "name": "android.permission-group.VOICEMAIL" }, "android.permission-group.WALLPAPER": { "description": "Change the device wallpaper settings.", "description_ptr": "permgroupdesc_wallpaper", "icon": "", "icon_ptr": "perm_group_wallpaper", "label": "Wallpaper", "label_ptr": "permgrouplab_wallpaper", "name": "android.permission-group.WALLPAPER" }, "android.permission-group.WRITE_USER_DICTIONARY": { "description": "Add words to the user dictionary.", "description_ptr": "permgroupdesc_writeDictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary_write", "label": "Write User Dictionary", "label_ptr": "permgrouplab_writeDictionary", "name": "android.permission-group.WRITE_USER_DICTIONARY" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_ALL_EXTERNAL_STORAGE": { "description": "Allows the app to access external storage for all users.", "description_ptr": "permdesc_sdcardAccessAll", "label": "access external storage of all users", "label_ptr": "permlab_sdcardAccessAll", "name": "android.permission.ACCESS_ALL_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows the app to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows the app read/write access to\n properties uploaded by the checkin service. Not for use by normal\n apps.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "Allows the holder to access content\n providers from the shell. Should never be needed for normal apps.", "description_ptr": "permdesc_accessContentProvidersExternally", "label": "access content providers externally", "label_ptr": "permlab_accessContentProvidersExternally", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for\n testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows the app to use SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows the app to make calls to AccountAuthenticators.", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "Allows the app to use any installed\n media decoder to decode for playback.", "description_ptr": "permdesc_anyCodecForPlayback", "label": "use any media decoder for playback", "label_ptr": "permlab_anyCodecForPlayback", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ASEC_ACCESS": { "description": "Allows the app to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the app to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the app to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the app to mount/unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount/unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the app to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows the app\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "create accounts and set passwords", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the app to control the system's backup and restore mechanism. Not for use by normal apps.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BATTERY_STATS": { "description": "Allows an application to read the current low-level\n battery use data. May allow the application to find out detailed information about\n which apps you use.", "description_ptr": "permdesc_batteryStats", "label": "read battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of an accessibility service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindAccessibilityService", "label": "bind to an accessibility service", "label_ptr": "permlab_bindAccessibilityService", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the app to tell the system\n which widgets can be used by which app. An app with this permission\n can give access to personal data to other apps.\n Not for use by normal apps.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal apps.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal apps.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal apps.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BRICK": { "description": "Allows the app to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows the app to\n broadcast a notification that an app package has been removed.\n Malicious apps may use this to kill any other running\n app.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows the app to\n broadcast a notification that an SMS message has been received.\n Malicious apps may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows the app to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious apps may use this to forge MMS message receipt or to\n silently replace the content of any webpage with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the app to call\n any phone number, including emergency numbers, without your intervention.\n Malicious apps may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows the app to change the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows the app to change whether a\n component of another app is enabled or not. Malicious apps may use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get app components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable app components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows the app to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change system display settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "Change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows the app to free phone storage\n by deleting files in the cache directories of other applications. This may cause other\n applications to start up more slowly as they need to re-retrieve their data.", "description_ptr": "permdesc_clearAppCache", "label": "delete all app cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows the app to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other apps' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "Allows the app to configure and connect to Wifi displays.", "description_ptr": "permdesc_configureWifiDisplay", "label": "configure Wifi displays", "label_ptr": "permlab_configureWifiDisplay", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the app to launch the full backup confirmation UI. Not to be used by any app.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows the app to enable/disable location\n update notifications from the radio. Not for use by normal apps.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "Allows the app to control low-level features of Wifi displays.", "description_ptr": "permdesc_controlWifiDisplay", "label": "control Wifi displays", "label_ptr": "permlab_controlWifiDisplay", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "copy content", "description_ptr": "permlab_copyProtectedData", "label": "copy content", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows the app to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other apps' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_PACKAGES": { "description": "Allows the app to delete\n Android packages. Malicious apps may use this to delete important apps.", "description_ptr": "permdesc_deletePackages", "label": "delete apps", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DEVICE_POWER": { "description": "Allows the app to turn the phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows the app to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SCREENLOCK", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows the app to retrieve\n internal state of the system. Malicious apps may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.STATUS_BAR", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "Allows an application to register an input filter\n which filters the stream of all user events before they are dispatched. Malicious app\n may control the system UI whtout user intervention.", "description_ptr": "permdesc_filter_events", "label": "filter events", "label_ptr": "permlab_filter_events", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the app to control the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows the app to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal apps.", "description_ptr": "permdesc_forceBack", "label": "force app to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows the app to forcibly stop other apps.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other apps", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "Allows the application to temporarily freeze\n the screen for a full-screen transition.", "description_ptr": "permdesc_freezeScreen", "label": "freeze screen", "label_ptr": "permlab_freezeScreen", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_DETAILED_TASKS": { "description": "Allows the app to retrieve\n detailed information about currently and recently running tasks. Malicious apps may\n discover private information about other apps.", "description_ptr": "permdesc_getDetailedTasks", "label": "retrieve details of running apps", "label_ptr": "permlab_getDetailedTasks", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GRANT_REVOKE_PERMISSIONS": { "description": "Allows an application to grant or revoke\n specific permissions for it or other applications. Malicious applications may use this\n to access features you have not granted them.\n ", "description_ptr": "permdesc_grantRevokePermissions", "label": "grant or revoke permissions", "label_ptr": "permlab_grantRevokePermissions", "name": "android.permission.GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the app to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows the app to deliver\n its own input events (key presses, etc.) to other apps. Malicious\n apps may use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources\n for testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows the app to install new or updated\n Android packages. Malicious apps may use this to add new apps with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install apps", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "Allows the app to perform actions\n across different users on the device. Malicious apps may use this to violate\n the protection between users.", "description_ptr": "permdesc_interactAcrossUsers", "label": "interact across users", "label_ptr": "permlab_interactAcrossUsers", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "Allows all possible interactions across\n users.", "description_ptr": "permdesc_interactAcrossUsersFull", "label": "full license to interact across users", "label_ptr": "permlab_interactAcrossUsersFull", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the app to create\n windows that are intended to be used by the internal system\n user interface. Not for use by normal apps.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.MAGNIFY_DISPLAY": { "description": "Allows an application to magnify the content of a\n display. Malicious apps may transform the display content in a way that renders the\n device unusable.", "description_ptr": "permdesc_magnify_display", "label": "magnify display", "label_ptr": "permlab_magnify_display", "name": "android.permission.MAGNIFY_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows the app to\n perform operations like adding and removing accounts, and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "add or remove accounts", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows the app to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal apps.", "description_ptr": "permdesc_manageAppTokens", "label": "manage app tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows the app to manage network policies and define app-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the app to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.MANAGE_USERS": { "description": "Allows apps to manage users on the device, including query, creation and deletion.", "description_ptr": "permdesc_manageUsers", "label": "manage users", "label_ptr": "permlab_manageUsers", "name": "android.permission.MANAGE_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MASTER_CLEAR": { "description": "Allows the app to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed apps.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.AUDIO_SETTINGS", "protectionLevel": "normal" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows the app to modify how network usage is accounted against apps. Not for use by normal apps.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the app to control the\n phone features of the device. An app with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the app to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "erase SD Card", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the app to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "access SD Card filesystem", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOVE_PACKAGE": { "description": "Allows the app to move app resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "move app resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the app to modify collected component usage statistics. Not for use by normal apps.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the app to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the app to start CDMA provisioning.\n Malicious apps may unnecessarily start CDMA provisioning.", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to process\n outgoing calls and change the number to be dialed. This permission allows\n the app to monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to test a permission for the SD card that will be available on future devices.", "description_ptr": "permdesc_sdcardRead", "label": "test access to protected storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows the app to read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_INPUT_STATE": { "description": "Allows the app to watch the\n keys you press even when interacting with another app (such\n as typing a password). Should never be needed for normal apps.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows the app to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows the app to read historical network usage for specific networks and apps.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PROFILE": { "description": "Allows the app to read\n personal profile information stored on your device, such as your name and\n contact information. This means the app can identify you and may send your\n profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your own contact card", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the app\n to access and sync social updates from you and your friends. Be careful\n when sharing information -- this allows the app to read communications\n between you and your friends on social networks, regardless of\n confidentiality. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows the app to read all words,\n names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read terms you added to the dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.USER_DICTIONARY", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the app to force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows the app to receive\n and process emergency broadcast messages. This permission is only available\n to system apps.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "", "description_ptr": "", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REMOVE_TASKS": { "description": "Allows the app to remove\n tasks and kill their apps. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_removeTasks", "label": "stop running apps", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows the app to retrieve\n the content of the active window. Malicious apps may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.RETRIEVE_WINDOW_INFO": { "description": "Allows an application to retrieve\n information about the the windows from the window manager. Malicious apps may\n retrieve information that is intended for internal system usage.", "description_ptr": "permdesc_retrieve_window_info", "label": "retrieve window info", "label_ptr": "permlab_retrieve_window_info", "name": "android.permission.RETRIEVE_WINDOW_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "Allows the app to send SMS\n messages. This may result in unexpected charges. Malicious apps may cost\n you money by sending messages without your confirmation.", "description_ptr": "permdesc_sendSmsNoConfirmation", "label": "send SMS messages with no confirmation", "label_ptr": "permlab_sendSmsNoConfirmation", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.SERIAL_PORT": { "description": "Allows the holder to access serial ports using the SerialManager API.", "description_ptr": "permdesc_serialPort", "label": "access serial ports", "label_ptr": "permlab_serialPort", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows the app to\n monitor and control how the system launches activities.\n Malicious apps may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all app launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows the app\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal apps.", "description_ptr": "permdesc_setAlwaysFinish", "label": "force background apps to close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows the app to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_DEBUG_APP": { "description": "Allows the app to turn\n on debugging for another app. Malicious apps may use this\n to kill other apps.", "description_ptr": "permdesc_setDebugApp", "label": "enable app debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "Allows the app to change\n the keyboard layout. Should never be needed for normal apps.", "description_ptr": "permdesc_setKeyboardLayout", "label": "change keyboard layout", "label_ptr": "permlab_setKeyboardLayout", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "Allows the app to change\n the rotation of the screen at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows the app to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows the app to\n modify your preferred apps. Malicious apps may\n silently change the apps that are run, spoofing your\n existing apps to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred apps", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows the app\n to control the maximum number of processes that will run. Never\n needed for normal apps.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "Allows the app to control the\n screen compatibility mode of other applications. Malicious applications may\n break the behavior of other applications.", "description_ptr": "permdesc_setScreenCompatibility", "label": "set screen compatibility", "label_ptr": "permlab_setScreenCompatibility", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "Allows the app to change the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_CLOCK", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows the app to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to apps", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "Allows the app to start any activity, regardless of permission protection or exported state.", "description_ptr": "permdesc_startAnyActivity", "label": "start any activity", "label_ptr": "permlab_startAnyActivity", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "Allows the app to disable the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the app to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another app.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows the app to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows the app to modify\n your currently synced feeds. Malicious apps may change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.DISPLAY", "protectionLevel": "dangerous" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "Allows an application to temporarily\n enable accessibility on the device. Malicious apps may enable accessibility without\n user consent.", "description_ptr": "permdesc_temporary_enable_accessibility", "label": "temporary enable accessibility", "label_ptr": "permlab_temporary_enable_accessibility", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the app to modify\n collected battery statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateBatteryStats", "label": "modify battery statistics", "label_ptr": "permlab_updateBatteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_LOCK": { "description": "Allows the holder to offer information to the system about when would be a good time for a noninteractive reboot to upgrade the device.", "description_ptr": "permdesc_updateLock", "label": "discourage automatic device updates", "label_ptr": "permlab_updateLock", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows the app to request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use accounts on the device", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows the app to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows the app to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious apps may monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows the app to modify the\n Google services map. Not for use by normal apps.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows the app to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature|system" }, "android.permission.WRITE_PROFILE": { "description": "Allows the app to\n change or add to personal profile information stored on your device, such\n as your name and contact information. This means the app can identify you\n and may send your profile information to others.", "description_ptr": "permdesc_writeProfile", "label": "modify your own contact card", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows the app to modify the\n system's secure settings data. Not for use by normal apps.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.WRITE_SMS": { "description": "Allows the app to write\n to SMS messages stored on your phone or SIM card. Malicious apps\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit your text messages (SMS or MMS)", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the app to\n display social updates from your friends. Be careful when sharing\n information -- this allows the app to produce messages that may appear to\n come from a friend. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows the app to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "add words to user-defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.WRITE_USER_DICTIONARY", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.DEVICE_ALARMS", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the app to read the\n history of all URLs that the Browser has visited, and all of the Browser's\n bookmarks. Note: this permission may not be enforced by third-party\n browsers or other applications with web browsing capabilities.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read your Web bookmarks and history", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows the\n app to modify the Browser's history or bookmarks stored on your phone.\n This may allow the app to erase or modify Browser data. Note:\n this permission may note be enforced by third-party browsers or other\n applications with web browsing capabilities.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write web bookmarks and history", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_18.json ================================================ { "groups": { "android.permission-group.ACCESSIBILITY_FEATURES": { "description": "Features that assistive technology can request.", "description_ptr": "permgroupdesc_accessibilityFeatures", "icon": "", "icon_ptr": "perm_group_accessibility_features", "label": "Accessibility features", "label_ptr": "permgrouplab_accessibilityFeatures", "name": "android.permission-group.ACCESSIBILITY_FEATURES" }, "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "perm_group_accounts", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.AFFECTS_BATTERY": { "description": "Use features that can quickly drain battery.", "description_ptr": "permgroupdesc_affectsBattery", "icon": "", "icon_ptr": "perm_group_affects_battery", "label": "Affects Battery", "label_ptr": "permgrouplab_affectsBattery", "name": "android.permission-group.AFFECTS_BATTERY" }, "android.permission-group.APP_INFO": { "description": "Ability to affect behavior of other applications on your device.", "description_ptr": "permgroupdesc_appInfo", "icon": "", "icon_ptr": "perm_group_app_info", "label": "Your applications information", "label_ptr": "permgrouplab_appInfo", "name": "android.permission-group.APP_INFO" }, "android.permission-group.AUDIO_SETTINGS": { "description": "Change audio settings.", "description_ptr": "permgroupdesc_audioSettings", "icon": "", "icon_ptr": "perm_group_audio_settings", "label": "Audio Settings", "label_ptr": "permgrouplab_audioSettings", "name": "android.permission-group.AUDIO_SETTINGS" }, "android.permission-group.BLUETOOTH_NETWORK": { "description": "Access devices and networks through Bluetooth.", "description_ptr": "permgroupdesc_bluetoothNetwork", "icon": "", "icon_ptr": "perm_group_bluetooth", "label": "Bluetooth", "label_ptr": "permgrouplab_bluetoothNetwork", "name": "android.permission-group.BLUETOOTH_NETWORK" }, "android.permission-group.BOOKMARKS": { "description": "Direct access to bookmarks and browser history.", "description_ptr": "permgroupdesc_bookmarks", "icon": "", "icon_ptr": "perm_group_bookmarks", "label": "Bookmarks and History", "label_ptr": "permgrouplab_bookmarks", "name": "android.permission-group.BOOKMARKS" }, "android.permission-group.CALENDAR": { "description": "Direct access to calendar and events.", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "Direct access to camera for image or video capture.", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.COST_MONEY": { "description": "Do things that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for app developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.DEVICE_ALARMS": { "description": "Set the alarm clock.", "description_ptr": "permgroupdesc_deviceAlarms", "icon": "", "icon_ptr": "perm_group_device_alarms", "label": "Alarm", "label_ptr": "permgrouplab_deviceAlarms", "name": "android.permission-group.DEVICE_ALARMS" }, "android.permission-group.DISPLAY": { "description": "Effect the UI of other applications.", "description_ptr": "permgroupdesc_display", "icon": "", "icon_ptr": "perm_group_display", "label": "Other Application UI", "label_ptr": "permgrouplab_display", "name": "android.permission-group.DISPLAY" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location.", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS, email, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "perm_group_messages", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.MICROPHONE": { "description": "Direct access to the microphone to record audio.", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NETWORK": { "description": "Access various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "perm_group_network", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to information about you, stored in on your contact card.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "perm_group_personal_info", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.SCREENLOCK": { "description": "Ability to affect behavior of the lock screen on your device.", "description_ptr": "permgroupdesc_screenlock", "icon": "", "icon_ptr": "perm_group_screenlock", "label": "Lock screen", "label_ptr": "permgrouplab_screenlock", "name": "android.permission-group.SCREENLOCK" }, "android.permission-group.SOCIAL_INFO": { "description": "Direct access to information about your contacts and social connections.", "description_ptr": "permgroupdesc_socialInfo", "icon": "", "icon_ptr": "perm_group_social_info", "label": "Your social information", "label_ptr": "permgrouplab_socialInfo", "name": "android.permission-group.SOCIAL_INFO" }, "android.permission-group.STATUS_BAR": { "description": "Change the device status bar settings.", "description_ptr": "permgroupdesc_statusBar", "icon": "", "icon_ptr": "perm_group_status_bar", "label": "Status Bar", "label_ptr": "permgrouplab_statusBar", "name": "android.permission-group.STATUS_BAR" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYNC_SETTINGS": { "description": "Access to the sync settings.", "description_ptr": "permgroupdesc_syncSettings", "icon": "", "icon_ptr": "perm_group_sync_settings", "label": "Sync Settings", "label_ptr": "permgrouplab_syncSettings", "name": "android.permission-group.SYNC_SETTINGS" }, "android.permission-group.SYSTEM_CLOCK": { "description": "Change the device time or timezone.", "description_ptr": "permgroupdesc_systemClock", "icon": "", "icon_ptr": "perm_group_system_clock", "label": "Clock", "label_ptr": "permgrouplab_systemClock", "name": "android.permission-group.SYSTEM_CLOCK" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "perm_group_system_tools", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" }, "android.permission-group.USER_DICTIONARY": { "description": "Read words in user dictionary.", "description_ptr": "permgroupdesc_dictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary", "label": "Read User Dictionary", "label_ptr": "permgrouplab_dictionary", "name": "android.permission-group.USER_DICTIONARY" }, "android.permission-group.VOICEMAIL": { "description": "Direct access to voicemail.", "description_ptr": "permgroupdesc_voicemail", "icon": "", "icon_ptr": "perm_group_voicemail", "label": "Voicemail", "label_ptr": "permgrouplab_voicemail", "name": "android.permission-group.VOICEMAIL" }, "android.permission-group.WALLPAPER": { "description": "Change the device wallpaper settings.", "description_ptr": "permgroupdesc_wallpaper", "icon": "", "icon_ptr": "perm_group_wallpaper", "label": "Wallpaper", "label_ptr": "permgrouplab_wallpaper", "name": "android.permission-group.WALLPAPER" }, "android.permission-group.WRITE_USER_DICTIONARY": { "description": "Add words to the user dictionary.", "description_ptr": "permgroupdesc_writeDictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary_write", "label": "Write User Dictionary", "label_ptr": "permgrouplab_writeDictionary", "name": "android.permission-group.WRITE_USER_DICTIONARY" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_ALL_EXTERNAL_STORAGE": { "description": "Allows the app to access external storage for all users.", "description_ptr": "permdesc_sdcardAccessAll", "label": "access external storage of all users", "label_ptr": "permlab_sdcardAccessAll", "name": "android.permission.ACCESS_ALL_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows the app to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows the app read/write access to\n properties uploaded by the checkin service. Not for use by normal\n apps.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "Allows the holder to access content\n providers from the shell. Should never be needed for normal apps.", "description_ptr": "permdesc_accessContentProvidersExternally", "label": "access content providers externally", "label_ptr": "permlab_accessContentProvidersExternally", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for\n testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "Allows the app to retrieve, examine, and clear notifications, including those posted by other apps.", "description_ptr": "permdesc_accessNotifications", "label": "access notifications", "label_ptr": "permlab_accessNotifications", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows the app to use SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows the app to make calls to AccountAuthenticators.", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "Allows the app to use any installed\n media decoder to decode for playback.", "description_ptr": "permdesc_anyCodecForPlayback", "label": "use any media decoder for playback", "label_ptr": "permlab_anyCodecForPlayback", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ASEC_ACCESS": { "description": "Allows the app to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the app to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the app to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the app to mount/unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount/unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the app to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows the app\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "create accounts and set passwords", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the app to control the system's backup and restore mechanism. Not for use by normal apps.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BATTERY_STATS": { "description": "Allows an application to read the current low-level\n battery use data. May allow the application to find out detailed information about\n which apps you use.", "description_ptr": "permdesc_batteryStats", "label": "read battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of an accessibility service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindAccessibilityService", "label": "bind to an accessibility service", "label_ptr": "permlab_bindAccessibilityService", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the app to tell the system\n which widgets can be used by which app. An app with this permission\n can give access to personal data to other apps.\n Not for use by normal apps.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal apps.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a notification listener service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindNotificationListenerService", "label": "bind to a notification listener service", "label_ptr": "permlab_bindNotificationListenerService", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal apps.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal apps.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BRICK": { "description": "Allows the app to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows the app to\n broadcast a notification that an app package has been removed.\n Malicious apps may use this to kill any other running\n app.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows the app to\n broadcast a notification that an SMS message has been received.\n Malicious apps may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows the app to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious apps may use this to forge MMS message receipt or to\n silently replace the content of any webpage with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the app to call\n any phone number, including emergency numbers, without your intervention.\n Malicious apps may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "Allows a pre-installed system application to disable the camera use indicator LED.", "description_ptr": "permdesc_cameraDisableTransmitLed", "label": "disable transmit indicator LED when camera is in use", "label_ptr": "permlab_cameraDisableTransmitLed", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "signature|system" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows the app to change the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows the app to change whether a\n component of another app is enabled or not. Malicious apps may use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get app components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable app components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows the app to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change system display settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "Change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows the app to free phone storage\n by deleting files in the cache directories of other applications. This may cause other\n applications to start up more slowly as they need to re-retrieve their data.", "description_ptr": "permdesc_clearAppCache", "label": "delete all app cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows the app to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other apps' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "Allows the app to configure and connect to Wifi displays.", "description_ptr": "permdesc_configureWifiDisplay", "label": "configure Wifi displays", "label_ptr": "permlab_configureWifiDisplay", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the app to launch the full backup confirmation UI. Not to be used by any app.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows the app to enable/disable location\n update notifications from the radio. Not for use by normal apps.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "Allows the app to control low-level features of Wifi displays.", "description_ptr": "permdesc_controlWifiDisplay", "label": "control Wifi displays", "label_ptr": "permlab_controlWifiDisplay", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "copy content", "description_ptr": "permlab_copyProtectedData", "label": "copy content", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows the app to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other apps' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_PACKAGES": { "description": "Allows the app to delete\n Android packages. Malicious apps may use this to delete important apps.", "description_ptr": "permdesc_deletePackages", "label": "delete apps", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DEVICE_POWER": { "description": "Allows the app to turn the phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows the app to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SCREENLOCK", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows the app to retrieve\n internal state of the system. Malicious apps may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.STATUS_BAR", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "Allows an application to register an input filter\n which filters the stream of all user events before they are dispatched. Malicious app\n may control the system UI whtout user intervention.", "description_ptr": "permdesc_filter_events", "label": "filter events", "label_ptr": "permlab_filter_events", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the app to control the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows the app to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal apps.", "description_ptr": "permdesc_forceBack", "label": "force app to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows the app to forcibly stop other apps.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other apps", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "Allows the application to temporarily freeze\n the screen for a full-screen transition.", "description_ptr": "permdesc_freezeScreen", "label": "freeze screen", "label_ptr": "permlab_freezeScreen", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_APP_OPS_STATS": { "description": "Allows the app to retrieve\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_getAppOpsStats", "label": "retrieve app ops statistics", "label_ptr": "permlab_getAppOpsStats", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "Allows the app to retrieve\n detailed information about currently and recently running tasks. Malicious apps may\n discover private information about other apps.", "description_ptr": "permdesc_getDetailedTasks", "label": "retrieve details of running apps", "label_ptr": "permlab_getDetailedTasks", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "dangerous" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "Allows the holder to retrieve private information\n about the current application in the foreground of the screen.", "description_ptr": "permdesc_getTopActivityInfo", "label": "get current app info", "label_ptr": "permlab_getTopActivityInfo", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GRANT_REVOKE_PERMISSIONS": { "description": "Allows an application to grant or revoke\n specific permissions for it or other applications. Malicious applications may use this\n to access features you have not granted them.\n ", "description_ptr": "permdesc_grantRevokePermissions", "label": "grant or revoke permissions", "label_ptr": "permlab_grantRevokePermissions", "name": "android.permission.GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the app to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows the app to deliver\n its own input events (key presses, etc.) to other apps. Malicious\n apps may use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources\n for testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows the app to install new or updated\n Android packages. Malicious apps may use this to add new apps with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install apps", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "Allows the app to perform actions\n across different users on the device. Malicious apps may use this to violate\n the protection between users.", "description_ptr": "permdesc_interactAcrossUsers", "label": "interact across users", "label_ptr": "permlab_interactAcrossUsers", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "Allows all possible interactions across\n users.", "description_ptr": "permdesc_interactAcrossUsersFull", "label": "full license to interact across users", "label_ptr": "permlab_interactAcrossUsersFull", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the app to create\n windows that are intended to be used by the internal system\n user interface. Not for use by normal apps.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "signature|system" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.MAGNIFY_DISPLAY": { "description": "Allows an application to magnify the content of a\n display. Malicious apps may transform the display content in a way that renders the\n device unusable.", "description_ptr": "permdesc_magnify_display", "label": "magnify display", "label_ptr": "permlab_magnify_display", "name": "android.permission.MAGNIFY_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows the app to\n perform operations like adding and removing accounts, and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "add or remove accounts", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows the app to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal apps.", "description_ptr": "permdesc_manageAppTokens", "label": "manage app tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows the app to manage network policies and define app-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the app to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.MANAGE_USERS": { "description": "Allows apps to manage users on the device, including query, creation and deletion.", "description_ptr": "permdesc_manageUsers", "label": "manage users", "label_ptr": "permlab_manageUsers", "name": "android.permission.MANAGE_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MASTER_CLEAR": { "description": "Allows the app to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed apps.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.AUDIO_SETTINGS", "protectionLevel": "normal" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows the app to modify how network usage is accounted against apps. Not for use by normal apps.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the app to control the\n phone features of the device. An app with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the app to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "erase SD Card", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the app to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "access SD Card filesystem", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOVE_PACKAGE": { "description": "Allows the app to move app resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "move app resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the app to modify collected component usage statistics. Not for use by normal apps.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the app to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the app to start CDMA provisioning.\n Malicious apps may unnecessarily start CDMA provisioning.", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to process\n outgoing calls and change the number to be dialed. This permission allows\n the app to monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to test a permission for the SD card that will be available on future devices.", "description_ptr": "permdesc_sdcardRead", "label": "test access to protected storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows the app to read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_INPUT_STATE": { "description": "Allows the app to watch the\n keys you press even when interacting with another app (such\n as typing a password). Should never be needed for normal apps.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows the app to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows the app to read historical network usage for specific networks and apps.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PROFILE": { "description": "Allows the app to read\n personal profile information stored on your device, such as your name and\n contact information. This means the app can identify you and may send your\n profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your own contact card", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the app\n to access and sync social updates from you and your friends. Be careful\n when sharing information -- this allows the app to read communications\n between you and your friends on social networks, regardless of\n confidentiality. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows the app to read all words,\n names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read terms you added to the dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.USER_DICTIONARY", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the app to force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows the app to receive\n and process emergency broadcast messages. This permission is only available\n to system apps.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REMOVE_TASKS": { "description": "Allows the app to remove\n tasks and kill their apps. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_removeTasks", "label": "stop running apps", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows the app to retrieve\n the content of the active window. Malicious apps may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.RETRIEVE_WINDOW_INFO": { "description": "Allows an application to retrieve\n information about the the windows from the window manager. Malicious apps may\n retrieve information that is intended for internal system usage.", "description_ptr": "permdesc_retrieve_window_info", "label": "retrieve window info", "label_ptr": "permlab_retrieve_window_info", "name": "android.permission.RETRIEVE_WINDOW_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "Allows the app to send\n requests to other messaging apps to handle respond-via-message events for incoming\n calls.", "description_ptr": "permdesc_sendRespondViaMessageRequest", "label": "send respond-via-message events", "label_ptr": "permlab_sendRespondViaMessageRequest", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.SERIAL_PORT": { "description": "Allows the holder to access serial ports using the SerialManager API.", "description_ptr": "permdesc_serialPort", "label": "access serial ports", "label_ptr": "permlab_serialPort", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows the app to\n monitor and control how the system launches activities.\n Malicious apps may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all app launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows the app\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal apps.", "description_ptr": "permdesc_setAlwaysFinish", "label": "force background apps to close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows the app to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_DEBUG_APP": { "description": "Allows the app to turn\n on debugging for another app. Malicious apps may use this\n to kill other apps.", "description_ptr": "permdesc_setDebugApp", "label": "enable app debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "Allows the app to change\n the keyboard layout. Should never be needed for normal apps.", "description_ptr": "permdesc_setKeyboardLayout", "label": "change keyboard layout", "label_ptr": "permlab_setKeyboardLayout", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "Allows the app to change\n the rotation of the screen at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows the app to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows the app to\n modify your preferred apps. Malicious apps may\n silently change the apps that are run, spoofing your\n existing apps to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred apps", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows the app\n to control the maximum number of processes that will run. Never\n needed for normal apps.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "Allows the app to control the\n screen compatibility mode of other applications. Malicious applications may\n break the behavior of other applications.", "description_ptr": "permdesc_setScreenCompatibility", "label": "set screen compatibility", "label_ptr": "permlab_setScreenCompatibility", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "Allows the app to change the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_CLOCK", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows the app to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to apps", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "Allows the app to start any activity, regardless of permission protection or exported state.", "description_ptr": "permdesc_startAnyActivity", "label": "start any activity", "label_ptr": "permlab_startAnyActivity", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "Allows the app to disable the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the app to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another app.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows the app to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows the app to modify\n your currently synced feeds. Malicious apps may change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.DISPLAY", "protectionLevel": "dangerous" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "Allows an application to temporarily\n enable accessibility on the device. Malicious apps may enable accessibility without\n user consent.", "description_ptr": "permdesc_temporary_enable_accessibility", "label": "temporary enable accessibility", "label_ptr": "permlab_temporary_enable_accessibility", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "Allows the app to modify\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateAppOpsStats", "label": "modify app ops statistics", "label_ptr": "permlab_updateAppOpsStats", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the app to modify\n collected battery statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateBatteryStats", "label": "modify battery statistics", "label_ptr": "permlab_updateBatteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_LOCK": { "description": "Allows the holder to offer information to the system about when would be a good time for a noninteractive reboot to upgrade the device.", "description_ptr": "permdesc_updateLock", "label": "discourage automatic device updates", "label_ptr": "permlab_updateLock", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows the app to request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use accounts on the device", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows the app to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows the app to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious apps may monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows the app to modify the\n Google services map. Not for use by normal apps.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows the app to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature|system" }, "android.permission.WRITE_PROFILE": { "description": "Allows the app to\n change or add to personal profile information stored on your device, such\n as your name and contact information. This means the app can identify you\n and may send your profile information to others.", "description_ptr": "permdesc_writeProfile", "label": "modify your own contact card", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows the app to modify the\n system's secure settings data. Not for use by normal apps.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.WRITE_SMS": { "description": "Allows the app to write\n to SMS messages stored on your phone or SIM card. Malicious apps\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit your text messages (SMS or MMS)", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the app to\n display social updates from your friends. Be careful when sharing\n information -- this allows the app to produce messages that may appear to\n come from a friend. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows the app to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "add words to user-defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.WRITE_USER_DICTIONARY", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.DEVICE_ALARMS", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the app to read the\n history of all URLs that the Browser has visited, and all of the Browser's\n bookmarks. Note: this permission may not be enforced by third-party\n browsers or other applications with web browsing capabilities.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read your Web bookmarks and history", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows the\n app to modify the Browser's history or bookmarks stored on your phone.\n This may allow the app to erase or modify Browser data. Note:\n this permission may note be enforced by third-party browsers or other\n applications with web browsing capabilities.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write web bookmarks and history", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_19.json ================================================ { "groups": { "android.permission-group.ACCESSIBILITY_FEATURES": { "description": "Features that assistive technology can request.", "description_ptr": "permgroupdesc_accessibilityFeatures", "icon": "", "icon_ptr": "perm_group_accessibility_features", "label": "Accessibility features", "label_ptr": "permgrouplab_accessibilityFeatures", "name": "android.permission-group.ACCESSIBILITY_FEATURES" }, "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "perm_group_accounts", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.AFFECTS_BATTERY": { "description": "Use features that can quickly drain battery.", "description_ptr": "permgroupdesc_affectsBattery", "icon": "", "icon_ptr": "perm_group_affects_battery", "label": "Affects Battery", "label_ptr": "permgrouplab_affectsBattery", "name": "android.permission-group.AFFECTS_BATTERY" }, "android.permission-group.APP_INFO": { "description": "Ability to affect behavior of other applications on your device.", "description_ptr": "permgroupdesc_appInfo", "icon": "", "icon_ptr": "perm_group_app_info", "label": "Your applications information", "label_ptr": "permgrouplab_appInfo", "name": "android.permission-group.APP_INFO" }, "android.permission-group.AUDIO_SETTINGS": { "description": "Change audio settings.", "description_ptr": "permgroupdesc_audioSettings", "icon": "", "icon_ptr": "perm_group_audio_settings", "label": "Audio Settings", "label_ptr": "permgrouplab_audioSettings", "name": "android.permission-group.AUDIO_SETTINGS" }, "android.permission-group.BLUETOOTH_NETWORK": { "description": "Access devices and networks through Bluetooth.", "description_ptr": "permgroupdesc_bluetoothNetwork", "icon": "", "icon_ptr": "perm_group_bluetooth", "label": "Bluetooth", "label_ptr": "permgrouplab_bluetoothNetwork", "name": "android.permission-group.BLUETOOTH_NETWORK" }, "android.permission-group.BOOKMARKS": { "description": "Direct access to bookmarks and browser history.", "description_ptr": "permgroupdesc_bookmarks", "icon": "", "icon_ptr": "perm_group_bookmarks", "label": "Bookmarks and History", "label_ptr": "permgrouplab_bookmarks", "name": "android.permission-group.BOOKMARKS" }, "android.permission-group.CALENDAR": { "description": "Direct access to calendar and events.", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "Direct access to camera for image or video capture.", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.COST_MONEY": { "description": "Do things that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for app developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.DEVICE_ALARMS": { "description": "Set the alarm clock.", "description_ptr": "permgroupdesc_deviceAlarms", "icon": "", "icon_ptr": "perm_group_device_alarms", "label": "Alarm", "label_ptr": "permgrouplab_deviceAlarms", "name": "android.permission-group.DEVICE_ALARMS" }, "android.permission-group.DISPLAY": { "description": "Effect the UI of other applications.", "description_ptr": "permgroupdesc_display", "icon": "", "icon_ptr": "perm_group_display", "label": "Other Application UI", "label_ptr": "permgrouplab_display", "name": "android.permission-group.DISPLAY" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location.", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS, email, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "perm_group_messages", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.MICROPHONE": { "description": "Direct access to the microphone to record audio.", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NETWORK": { "description": "Access various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "perm_group_network", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to information about you, stored in on your contact card.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "perm_group_personal_info", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.SCREENLOCK": { "description": "Ability to affect behavior of the lock screen on your device.", "description_ptr": "permgroupdesc_screenlock", "icon": "", "icon_ptr": "perm_group_screenlock", "label": "Lock screen", "label_ptr": "permgrouplab_screenlock", "name": "android.permission-group.SCREENLOCK" }, "android.permission-group.SOCIAL_INFO": { "description": "Direct access to information about your contacts and social connections.", "description_ptr": "permgroupdesc_socialInfo", "icon": "", "icon_ptr": "perm_group_social_info", "label": "Your social information", "label_ptr": "permgrouplab_socialInfo", "name": "android.permission-group.SOCIAL_INFO" }, "android.permission-group.STATUS_BAR": { "description": "Change the device status bar settings.", "description_ptr": "permgroupdesc_statusBar", "icon": "", "icon_ptr": "perm_group_status_bar", "label": "Status Bar", "label_ptr": "permgrouplab_statusBar", "name": "android.permission-group.STATUS_BAR" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYNC_SETTINGS": { "description": "Access to the sync settings.", "description_ptr": "permgroupdesc_syncSettings", "icon": "", "icon_ptr": "perm_group_sync_settings", "label": "Sync Settings", "label_ptr": "permgrouplab_syncSettings", "name": "android.permission-group.SYNC_SETTINGS" }, "android.permission-group.SYSTEM_CLOCK": { "description": "Change the device time or timezone.", "description_ptr": "permgroupdesc_systemClock", "icon": "", "icon_ptr": "perm_group_system_clock", "label": "Clock", "label_ptr": "permgrouplab_systemClock", "name": "android.permission-group.SYSTEM_CLOCK" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "perm_group_system_tools", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" }, "android.permission-group.USER_DICTIONARY": { "description": "Read words in user dictionary.", "description_ptr": "permgroupdesc_dictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary", "label": "Read User Dictionary", "label_ptr": "permgrouplab_dictionary", "name": "android.permission-group.USER_DICTIONARY" }, "android.permission-group.VOICEMAIL": { "description": "Direct access to voicemail.", "description_ptr": "permgroupdesc_voicemail", "icon": "", "icon_ptr": "perm_group_voicemail", "label": "Voicemail", "label_ptr": "permgrouplab_voicemail", "name": "android.permission-group.VOICEMAIL" }, "android.permission-group.WALLPAPER": { "description": "Change the device wallpaper settings.", "description_ptr": "permgroupdesc_wallpaper", "icon": "", "icon_ptr": "perm_group_wallpaper", "label": "Wallpaper", "label_ptr": "permgrouplab_wallpaper", "name": "android.permission-group.WALLPAPER" }, "android.permission-group.WRITE_USER_DICTIONARY": { "description": "Add words to the user dictionary.", "description_ptr": "permgroupdesc_writeDictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary_write", "label": "Write User Dictionary", "label_ptr": "permgrouplab_writeDictionary", "name": "android.permission-group.WRITE_USER_DICTIONARY" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_ALL_EXTERNAL_STORAGE": { "description": "Allows the app to access external storage for all users.", "description_ptr": "permdesc_sdcardAccessAll", "label": "access external storage of all users", "label_ptr": "permlab_sdcardAccessAll", "name": "android.permission.ACCESS_ALL_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows the app to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows the app read/write access to\n properties uploaded by the checkin service. Not for use by normal\n apps.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "Allows the holder to access content\n providers from the shell. Should never be needed for normal apps.", "description_ptr": "permdesc_accessContentProvidersExternally", "label": "access content providers externally", "label_ptr": "permlab_accessContentProvidersExternally", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "Allows an application to access keguard secure storage.", "description_ptr": "permdesc_access_keyguard_secure_storage", "label": "Access keyguard secure storage", "label_ptr": "permlab_access_keyguard_secure_storage", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for\n testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "Allows an application to listen for observations on network conditions. Should never be needed for normal apps.", "description_ptr": "permdesc_accessNetworkConditions", "label": "listen for observations on network conditions", "label_ptr": "permlab_accessNetworkConditions", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "Allows the app to retrieve, examine, and clear notifications, including those posted by other apps.", "description_ptr": "permdesc_accessNotifications", "label": "access notifications", "label_ptr": "permlab_accessNotifications", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows the app to use SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows the app to make calls to AccountAuthenticators.", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "Allows the app to use any installed\n media decoder to decode for playback.", "description_ptr": "permdesc_anyCodecForPlayback", "label": "use any media decoder for playback", "label_ptr": "permlab_anyCodecForPlayback", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ASEC_ACCESS": { "description": "Allows the app to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the app to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the app to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the app to mount/unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount/unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the app to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows the app\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "create accounts and set passwords", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the app to control the system's backup and restore mechanism. Not for use by normal apps.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BATTERY_STATS": { "description": "Allows an application to read the current low-level\n battery use data. May allow the application to find out detailed information about\n which apps you use.", "description_ptr": "permdesc_batteryStats", "label": "read battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of an accessibility service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindAccessibilityService", "label": "bind to an accessibility service", "label_ptr": "permlab_bindAccessibilityService", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the app to tell the system\n which widgets can be used by which app. An app with this permission\n can give access to personal data to other apps.\n Not for use by normal apps.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_CALL_SERVICE": { "description": "Allows the app to control when and how the user sees the in-call screen.", "description_ptr": "permdesc_bind_call_service", "label": "interact with in-call screen", "label_ptr": "permlab_bind_call_service", "name": "android.permission.BIND_CALL_SERVICE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal apps.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_NFC_SERVICE": { "description": "Allows the holder to bind to applications\n that are emulating NFC cards. Should never be needed for normal apps.", "description_ptr": "permdesc_bindNfcService", "label": "bind to NFC service", "label_ptr": "permlab_bindNfcService", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a notification listener service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindNotificationListenerService", "label": "bind to a notification listener service", "label_ptr": "permlab_bindNotificationListenerService", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a print service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPrintService", "label": "bind to a print service", "label_ptr": "permlab_bindPrintService", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a print spooler service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPrintSpoolerService", "label": "bind to a print spooler service", "label_ptr": "permlab_bindPrintSpoolerService", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "Allows the holder to bind to the top-level\n interface of a remote display. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteDisplay", "label": "bind to a remote display", "label_ptr": "permlab_bindRemoteDisplay", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal apps.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal apps.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "Allows the app to\n pair with remote devices without user interaction.", "description_ptr": "permdesc_bluetoothPriv", "label": "allow Bluetooth pairing by Application", "label_ptr": "permlab_bluetoothPriv", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "system|signature" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BRICK": { "description": "Allows the app to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows the app to\n broadcast a notification that an app package has been removed.\n Malicious apps may use this to kill any other running\n app.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows the app to\n broadcast a notification that an SMS message has been received.\n Malicious apps may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows the app to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious apps may use this to forge MMS message receipt or to\n silently replace the content of any webpage with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the app to call\n any phone number, including emergency numbers, without your intervention.\n Malicious apps may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "Allows a pre-installed system application to disable the camera use indicator LED.", "description_ptr": "permdesc_cameraDisableTransmitLed", "label": "disable transmit indicator LED when camera is in use", "label_ptr": "permlab_cameraDisableTransmitLed", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "Allows the app to capture audio for Hotword detection. The capture can\n happen in the background but does not prevent other audio capture (e.g. Camcorder).", "description_ptr": "permdesc_captureAudioHotword", "label": "Hotword detection", "label_ptr": "permlab_captureAudioHotword", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "Allows the app to capture and redirect audio output.", "description_ptr": "permdesc_captureAudioOutput", "label": "capture audio output", "label_ptr": "permlab_captureAudioOutput", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "Allows the app to capture and redirect secure video output.", "description_ptr": "permdesc_captureSecureVideoOutput", "label": "capture secure video output", "label_ptr": "permlab_captureSecureVideoOutput", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "Allows the app to capture and redirect video output.", "description_ptr": "permdesc_captureVideoOutput", "label": "capture video output", "label_ptr": "permlab_captureVideoOutput", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows the app to change the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows the app to change whether a\n component of another app is enabled or not. Malicious apps may use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get app components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable app components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows the app to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change system display settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "Change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows the app to free phone storage\n by deleting files in the cache directories of other applications. This may cause other\n applications to start up more slowly as they need to re-retrieve their data.", "description_ptr": "permdesc_clearAppCache", "label": "delete all app cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows the app to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other apps' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "Allows the app to configure and connect to Wifi displays.", "description_ptr": "permdesc_configureWifiDisplay", "label": "configure Wifi displays", "label_ptr": "permlab_configureWifiDisplay", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the app to launch the full backup confirmation UI. Not to be used by any app.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.CONTROL_KEYGUARD": { "description": "Allows an application to control keguard.", "description_ptr": "permdesc_control_keyguard", "label": "Control displaying and hiding keyguard", "label_ptr": "permlab_control_keyguard", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows the app to enable/disable location\n update notifications from the radio. Not for use by normal apps.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "Allows the app to control low-level features of Wifi displays.", "description_ptr": "permdesc_controlWifiDisplay", "label": "control Wifi displays", "label_ptr": "permlab_controlWifiDisplay", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "copy content", "description_ptr": "permlab_copyProtectedData", "label": "copy content", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows the app to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other apps' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_PACKAGES": { "description": "Allows the app to delete\n Android packages. Malicious apps may use this to delete important apps.", "description_ptr": "permdesc_deletePackages", "label": "delete apps", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DEVICE_POWER": { "description": "Allows the app to turn the phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows the app to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SCREENLOCK", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows the app to retrieve\n internal state of the system. Malicious apps may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.STATUS_BAR", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "Allows an application to register an input filter\n which filters the stream of all user events before they are dispatched. Malicious app\n may control the system UI whtout user intervention.", "description_ptr": "permdesc_filter_events", "label": "filter events", "label_ptr": "permlab_filter_events", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the app to control the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows the app to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal apps.", "description_ptr": "permdesc_forceBack", "label": "force app to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows the app to forcibly stop other apps.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other apps", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.FREEZE_SCREEN": { "description": "Allows the application to temporarily freeze\n the screen for a full-screen transition.", "description_ptr": "permdesc_freezeScreen", "label": "freeze screen", "label_ptr": "permlab_freezeScreen", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_APP_OPS_STATS": { "description": "Allows the app to retrieve\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_getAppOpsStats", "label": "retrieve app ops statistics", "label_ptr": "permlab_getAppOpsStats", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "Allows the app to retrieve\n detailed information about currently and recently running tasks. Malicious apps may\n discover private information about other apps.", "description_ptr": "permdesc_getDetailedTasks", "label": "retrieve details of running apps", "label_ptr": "permlab_getDetailedTasks", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "dangerous" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "Allows the holder to retrieve private information\n about the current application in the foreground of the screen.", "description_ptr": "permdesc_getTopActivityInfo", "label": "get current app info", "label_ptr": "permlab_getTopActivityInfo", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GRANT_REVOKE_PERMISSIONS": { "description": "Allows an application to grant or revoke\n specific permissions for it or other applications. Malicious applications may use this\n to access features you have not granted them.\n ", "description_ptr": "permdesc_grantRevokePermissions", "label": "grant or revoke permissions", "label_ptr": "permlab_grantRevokePermissions", "name": "android.permission.GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the app to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows the app to deliver\n its own input events (key presses, etc.) to other apps. Malicious\n apps may use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources\n for testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows the app to install new or updated\n Android packages. Malicious apps may use this to add new apps with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install apps", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "Allows the app to perform actions\n across different users on the device. Malicious apps may use this to violate\n the protection between users.", "description_ptr": "permdesc_interactAcrossUsers", "label": "interact across users", "label_ptr": "permlab_interactAcrossUsers", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "Allows all possible interactions across\n users.", "description_ptr": "permdesc_interactAcrossUsersFull", "label": "full license to interact across users", "label_ptr": "permlab_interactAcrossUsersFull", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the app to create\n windows that are intended to be used by the internal system\n user interface. Not for use by normal apps.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "Allows the holder to invoke the carrier-provided configuration app. Should never be needed for normal apps.", "description_ptr": "permdesc_invokeCarrierSetup", "label": "invoke the carrier-provided configuration app", "label_ptr": "permlab_invokeCarrierSetup", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "signature|system" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.MAGNIFY_DISPLAY": { "description": "Allows an application to magnify the content of a\n display. Malicious apps may transform the display content in a way that renders the\n device unusable.", "description_ptr": "permdesc_magnify_display", "label": "magnify display", "label_ptr": "permlab_magnify_display", "name": "android.permission.MAGNIFY_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows the app to\n perform operations like adding and removing accounts, and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "add or remove accounts", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "Allows the app to add, remove, and\n modify the activity stacks in which other apps run. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_manageActivityStacks", "label": "manage activity stacks", "label_ptr": "permlab_manageActivityStacks", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows the app to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal apps.", "description_ptr": "permdesc_manageAppTokens", "label": "manage app tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "Allows the app to install and uninstall CA certificates as trusted credentials.", "description_ptr": "permdesc_manageCaCertificates", "label": "manage trusted credentials", "label_ptr": "permlab_manageCaCertificates", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "Allows the holder to add or remove active device\n administrators. Should never be needed for normal apps.", "description_ptr": "permdesc_manageDeviceAdmins", "label": "add or remove a device admin", "label_ptr": "permlab_manageDeviceAdmins", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MANAGE_DOCUMENTS": { "description": "Allows the app to manage document storage.", "description_ptr": "permdesc_manageDocs", "label": "manage document storage", "label_ptr": "permlab_manageDocs", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows the app to manage network policies and define app-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the app to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.MANAGE_USERS": { "description": "Allows apps to manage users on the device, including query, creation and deletion.", "description_ptr": "permdesc_manageUsers", "label": "manage users", "label_ptr": "permlab_manageUsers", "name": "android.permission.MANAGE_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MARK_NETWORK_SOCKET": { "description": "Allows the app to modify socket marks for routing", "description_ptr": "permdesc_markNetworkSocket", "label": "modify socket marks", "label_ptr": "permlab_markNetworkSocket", "name": "android.permission.MARK_NETWORK_SOCKET", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MASTER_CLEAR": { "description": "Allows the app to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed apps.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "Allows the app to control media playback and access the media information (title, author...).", "description_ptr": "permdesc_mediaContentControl", "label": "control media playback and metadata access", "label_ptr": "permlab_mediaContentControl", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.AUDIO_SETTINGS", "protectionLevel": "normal" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows the app to modify how network usage is accounted against apps. Not for use by normal apps.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the app to control the\n phone features of the device. An app with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the app to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "erase SD Card", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the app to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "access SD Card filesystem", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOVE_PACKAGE": { "description": "Allows the app to move app resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "move app resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the app to modify collected component usage statistics. Not for use by normal apps.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the app to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the app to start CDMA provisioning.\n Malicious apps may unnecessarily start CDMA provisioning.", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "normal" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows the app to read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_INPUT_STATE": { "description": "Allows the app to watch the\n keys you press even when interacting with another app (such\n as typing a password). Should never be needed for normal apps.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows the app to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows the app to read historical network usage for specific networks and apps.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PROFILE": { "description": "Allows the app to read\n personal profile information stored on your device, such as your name and\n contact information. This means the app can identify you and may send your\n profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your own contact card", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the app\n to access and sync social updates from you and your friends. Be careful\n when sharing information -- this allows the app to read communications\n between you and your friends on social networks, regardless of\n confidentiality. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows the app to read all words,\n names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read terms you added to the dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.USER_DICTIONARY", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the app to force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows the app to receive\n and process emergency broadcast messages. This permission is only available\n to system apps.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REMOVE_TASKS": { "description": "Allows the app to remove\n tasks and kill their apps. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_removeTasks", "label": "stop running apps", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows the app to retrieve\n the content of the active window. Malicious apps may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.RETRIEVE_WINDOW_INFO": { "description": "Allows an application to retrieve\n information about the the windows from the window manager. Malicious apps may\n retrieve information that is intended for internal system usage.", "description_ptr": "permdesc_retrieve_window_info", "label": "retrieve window info", "label_ptr": "permlab_retrieve_window_info", "name": "android.permission.RETRIEVE_WINDOW_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "Allows the app to send\n requests to other messaging apps to handle respond-via-message events for incoming\n calls.", "description_ptr": "permdesc_sendRespondViaMessageRequest", "label": "send respond-via-message events", "label_ptr": "permlab_sendRespondViaMessageRequest", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.SERIAL_PORT": { "description": "Allows the holder to access serial ports using the SerialManager API.", "description_ptr": "permdesc_serialPort", "label": "access serial ports", "label_ptr": "permlab_serialPort", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows the app to\n monitor and control how the system launches activities.\n Malicious apps may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all app launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows the app\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal apps.", "description_ptr": "permdesc_setAlwaysFinish", "label": "force background apps to close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows the app to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_DEBUG_APP": { "description": "Allows the app to turn\n on debugging for another app. Malicious apps may use this\n to kill other apps.", "description_ptr": "permdesc_setDebugApp", "label": "enable app debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "Allows the app to change\n the keyboard layout. Should never be needed for normal apps.", "description_ptr": "permdesc_setKeyboardLayout", "label": "change keyboard layout", "label_ptr": "permlab_setKeyboardLayout", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "Allows the app to change\n the rotation of the screen at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows the app to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows the app to\n modify your preferred apps. Malicious apps may\n silently change the apps that are run, spoofing your\n existing apps to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred apps", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows the app\n to control the maximum number of processes that will run. Never\n needed for normal apps.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "Allows the app to control the\n screen compatibility mode of other applications. Malicious applications may\n break the behavior of other applications.", "description_ptr": "permdesc_setScreenCompatibility", "label": "set screen compatibility", "label_ptr": "permlab_setScreenCompatibility", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "Allows the app to change the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_CLOCK", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows the app to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to apps", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "Allows the app to start any activity, regardless of permission protection or exported state.", "description_ptr": "permdesc_startAnyActivity", "label": "start any activity", "label_ptr": "permlab_startAnyActivity", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "Allows the app to disable the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the app to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another app.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows the app to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows the app to modify\n your currently synced feeds. Malicious apps may change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.DISPLAY", "protectionLevel": "dangerous" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "Allows an application to temporarily\n enable accessibility on the device. Malicious apps may enable accessibility without\n user consent.", "description_ptr": "permdesc_temporary_enable_accessibility", "label": "temporary enable accessibility", "label_ptr": "permlab_temporary_enable_accessibility", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "Allows the app to modify\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateAppOpsStats", "label": "modify app ops statistics", "label_ptr": "permlab_updateAppOpsStats", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the app to modify\n collected battery statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateBatteryStats", "label": "modify battery statistics", "label_ptr": "permlab_updateBatteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_LOCK": { "description": "Allows the holder to offer information to the system about when would be a good time for a noninteractive reboot to upgrade the device.", "description_ptr": "permdesc_updateLock", "label": "discourage automatic device updates", "label_ptr": "permlab_updateLock", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows the app to request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use accounts on the device", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows the app to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows the app to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious apps may monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows the app to modify the\n Google services map. Not for use by normal apps.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows the app to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature|system" }, "android.permission.WRITE_PROFILE": { "description": "Allows the app to\n change or add to personal profile information stored on your device, such\n as your name and contact information. This means the app can identify you\n and may send your profile information to others.", "description_ptr": "permdesc_writeProfile", "label": "modify your own contact card", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows the app to modify the\n system's secure settings data. Not for use by normal apps.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.WRITE_SMS": { "description": "Allows the app to write\n to SMS messages stored on your phone or SIM card. Malicious apps\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit your text messages (SMS or MMS)", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the app to\n display social updates from your friends. Be careful when sharing\n information -- this allows the app to produce messages that may appear to\n come from a friend. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows the app to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "add words to user-defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.WRITE_USER_DICTIONARY", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.DEVICE_ALARMS", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the app to read the\n history of all URLs that the Browser has visited, and all of the Browser's\n bookmarks. Note: this permission may not be enforced by third-party\n browsers or other applications with web browsing capabilities.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read your Web bookmarks and history", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows the\n app to modify the Browser's history or bookmarks stored on your phone.\n This may allow the app to erase or modify Browser data. Note:\n this permission may note be enforced by third-party browsers or other\n applications with web browsing capabilities.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write web bookmarks and history", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_21.json ================================================ { "groups": { "android.permission-group.ACCESSIBILITY_FEATURES": { "description": "Features that assistive technology can request.", "description_ptr": "permgroupdesc_accessibilityFeatures", "icon": "", "icon_ptr": "perm_group_accessibility_features", "label": "Accessibility features", "label_ptr": "permgrouplab_accessibilityFeatures", "name": "android.permission-group.ACCESSIBILITY_FEATURES" }, "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "perm_group_accounts", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.AFFECTS_BATTERY": { "description": "Use features that can quickly drain battery.", "description_ptr": "permgroupdesc_affectsBattery", "icon": "", "icon_ptr": "perm_group_affects_battery", "label": "Affects Battery", "label_ptr": "permgrouplab_affectsBattery", "name": "android.permission-group.AFFECTS_BATTERY" }, "android.permission-group.APP_INFO": { "description": "Ability to affect behavior of other applications on your device.", "description_ptr": "permgroupdesc_appInfo", "icon": "", "icon_ptr": "perm_group_app_info", "label": "Your applications information", "label_ptr": "permgrouplab_appInfo", "name": "android.permission-group.APP_INFO" }, "android.permission-group.AUDIO_SETTINGS": { "description": "Change audio settings.", "description_ptr": "permgroupdesc_audioSettings", "icon": "", "icon_ptr": "perm_group_audio_settings", "label": "Audio Settings", "label_ptr": "permgrouplab_audioSettings", "name": "android.permission-group.AUDIO_SETTINGS" }, "android.permission-group.BLUETOOTH_NETWORK": { "description": "Access devices and networks through Bluetooth.", "description_ptr": "permgroupdesc_bluetoothNetwork", "icon": "", "icon_ptr": "perm_group_bluetooth", "label": "Bluetooth", "label_ptr": "permgrouplab_bluetoothNetwork", "name": "android.permission-group.BLUETOOTH_NETWORK" }, "android.permission-group.BOOKMARKS": { "description": "Direct access to bookmarks and browser history.", "description_ptr": "permgroupdesc_bookmarks", "icon": "", "icon_ptr": "perm_group_bookmarks", "label": "Bookmarks and History", "label_ptr": "permgrouplab_bookmarks", "name": "android.permission-group.BOOKMARKS" }, "android.permission-group.CALENDAR": { "description": "Direct access to calendar and events.", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "Direct access to camera for image or video capture.", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.COST_MONEY": { "description": "Do things that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for app developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.DEVICE_ALARMS": { "description": "Set the alarm clock.", "description_ptr": "permgroupdesc_deviceAlarms", "icon": "", "icon_ptr": "perm_group_device_alarms", "label": "Alarm", "label_ptr": "permgrouplab_deviceAlarms", "name": "android.permission-group.DEVICE_ALARMS" }, "android.permission-group.DISPLAY": { "description": "Effect the UI of other applications.", "description_ptr": "permgroupdesc_display", "icon": "", "icon_ptr": "perm_group_display", "label": "Other Application UI", "label_ptr": "permgrouplab_display", "name": "android.permission-group.DISPLAY" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location.", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS, email, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "perm_group_messages", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.MICROPHONE": { "description": "Direct access to the microphone to record audio.", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NETWORK": { "description": "Access various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "perm_group_network", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to information about you, stored in on your contact card.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "perm_group_personal_info", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.SCREENLOCK": { "description": "Ability to affect behavior of the lock screen on your device.", "description_ptr": "permgroupdesc_screenlock", "icon": "", "icon_ptr": "perm_group_screenlock", "label": "Lock screen", "label_ptr": "permgrouplab_screenlock", "name": "android.permission-group.SCREENLOCK" }, "android.permission-group.SOCIAL_INFO": { "description": "Direct access to information about your contacts and social connections.", "description_ptr": "permgroupdesc_socialInfo", "icon": "", "icon_ptr": "perm_group_social_info", "label": "Your social information", "label_ptr": "permgrouplab_socialInfo", "name": "android.permission-group.SOCIAL_INFO" }, "android.permission-group.STATUS_BAR": { "description": "Change the device status bar settings.", "description_ptr": "permgroupdesc_statusBar", "icon": "", "icon_ptr": "perm_group_status_bar", "label": "Status Bar", "label_ptr": "permgrouplab_statusBar", "name": "android.permission-group.STATUS_BAR" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYNC_SETTINGS": { "description": "Access to the sync settings.", "description_ptr": "permgroupdesc_syncSettings", "icon": "", "icon_ptr": "perm_group_sync_settings", "label": "Sync Settings", "label_ptr": "permgrouplab_syncSettings", "name": "android.permission-group.SYNC_SETTINGS" }, "android.permission-group.SYSTEM_CLOCK": { "description": "Change the device time or timezone.", "description_ptr": "permgroupdesc_systemClock", "icon": "", "icon_ptr": "perm_group_system_clock", "label": "Clock", "label_ptr": "permgrouplab_systemClock", "name": "android.permission-group.SYSTEM_CLOCK" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "perm_group_system_tools", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" }, "android.permission-group.USER_DICTIONARY": { "description": "Read words in user dictionary.", "description_ptr": "permgroupdesc_dictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary", "label": "Read User Dictionary", "label_ptr": "permgrouplab_dictionary", "name": "android.permission-group.USER_DICTIONARY" }, "android.permission-group.VOICEMAIL": { "description": "Direct access to voicemail.", "description_ptr": "permgroupdesc_voicemail", "icon": "", "icon_ptr": "perm_group_voicemail", "label": "Voicemail", "label_ptr": "permgrouplab_voicemail", "name": "android.permission-group.VOICEMAIL" }, "android.permission-group.WALLPAPER": { "description": "Change the device wallpaper settings.", "description_ptr": "permgroupdesc_wallpaper", "icon": "", "icon_ptr": "perm_group_wallpaper", "label": "Wallpaper", "label_ptr": "permgrouplab_wallpaper", "name": "android.permission-group.WALLPAPER" }, "android.permission-group.WRITE_USER_DICTIONARY": { "description": "Add words to the user dictionary.", "description_ptr": "permgroupdesc_writeDictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary_write", "label": "Write User Dictionary", "label_ptr": "permgrouplab_writeDictionary", "name": "android.permission-group.WRITE_USER_DICTIONARY" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_ALL_EXTERNAL_STORAGE": { "description": "Allows the app to access external storage for all users.", "description_ptr": "permdesc_sdcardAccessAll", "label": "access external storage of all users", "label_ptr": "permlab_sdcardAccessAll", "name": "android.permission.ACCESS_ALL_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows the app to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows the app read/write access to\n properties uploaded by the checkin service. Not for use by normal\n apps.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "Allows the holder to access content\n providers from the shell. Should never be needed for normal apps.", "description_ptr": "permdesc_accessContentProvidersExternally", "label": "access content providers externally", "label_ptr": "permlab_accessContentProvidersExternally", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "Allows an application to provision and use DRM certficates. Should never be needed for normal apps.", "description_ptr": "permdesc_accessDrmCertificates", "label": "access DRM certificates", "label_ptr": "permlab_accessDrmCertificates", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "Allows the app to use InputFlinger low-level features.", "description_ptr": "permdesc_accessInputFlinger", "label": "access InputFlinger", "label_ptr": "permlab_accessInputFlinger", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "Allows an application to access keguard secure storage.", "description_ptr": "permdesc_access_keyguard_secure_storage", "label": "Access keyguard secure storage", "label_ptr": "permlab_access_keyguard_secure_storage", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for\n testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "Allows an application to listen for observations on network conditions. Should never be needed for normal apps.", "description_ptr": "permdesc_accessNetworkConditions", "label": "listen for observations on network conditions", "label_ptr": "permlab_accessNetworkConditions", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "Allows the app to retrieve, examine, and clear notifications, including those posted by other apps.", "description_ptr": "permdesc_accessNotifications", "label": "access notifications", "label_ptr": "permlab_accessNotifications", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows the app to use SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows the app to make calls to AccountAuthenticators.", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "Allows the app to use any installed\n media decoder to decode for playback.", "description_ptr": "permdesc_anyCodecForPlayback", "label": "use any media decoder for playback", "label_ptr": "permlab_anyCodecForPlayback", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ASEC_ACCESS": { "description": "Allows the app to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the app to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the app to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the app to mount/unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount/unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the app to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows the app\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "create accounts and set passwords", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the app to control the system's backup and restore mechanism. Not for use by normal apps.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BATTERY_STATS": { "description": "Allows an application to read the current low-level\n battery use data. May allow the application to find out detailed information about\n which apps you use.", "description_ptr": "permdesc_batteryStats", "label": "read battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of an accessibility service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindAccessibilityService", "label": "bind to an accessibility service", "label_ptr": "permlab_bindAccessibilityService", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the app to tell the system\n which widgets can be used by which app. An app with this permission\n can give access to personal data to other apps.\n Not for use by normal apps.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a condition provider service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindConditionProviderService", "label": "bind to a condition provider service", "label_ptr": "permlab_bindConditionProviderService", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "Allows the app to interact with telephony services to make/receive calls.", "description_ptr": "permdesc_bind_connection_service", "label": "interact with telephony services", "label_ptr": "permlab_bind_connection_service", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_DREAM_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a dream service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDreamService", "label": "bind to a dream service", "label_ptr": "permlab_bindDreamService", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INCALL_SERVICE": { "description": "Allows the app to control when and how the user sees the in-call screen.", "description_ptr": "permdesc_bind_incall_service", "label": "interact with in-call screen", "label_ptr": "permlab_bind_incall_service", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal apps.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "This permission allows the Android system to run the application in the background when requested.", "description_ptr": "permdesc_bindJobService", "label": "run the application's scheduled background work", "label_ptr": "permlab_bindJobService", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_NFC_SERVICE": { "description": "Allows the holder to bind to applications\n that are emulating NFC cards. Should never be needed for normal apps.", "description_ptr": "permdesc_bindNfcService", "label": "bind to NFC service", "label_ptr": "permlab_bindNfcService", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a notification listener service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindNotificationListenerService", "label": "bind to a notification listener service", "label_ptr": "permlab_bindNotificationListenerService", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a print service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPrintService", "label": "bind to a print service", "label_ptr": "permlab_bindPrintService", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a print spooler service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPrintSpoolerService", "label": "bind to a print spooler service", "label_ptr": "permlab_bindPrintSpoolerService", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "Allows the holder to bind to the top-level\n interface of a remote display. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteDisplay", "label": "bind to a remote display", "label_ptr": "permlab_bindRemoteDisplay", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal apps.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "Allows an application to bind to a trust agent service.", "description_ptr": "permdesc_bind_trust_agent_service", "label": "Bind to a trust agent service", "label_ptr": "permlab_bind_trust_agent_service", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "Allows the holder to bind to the top-level\n interface of a TV input. Should never be needed for normal apps.", "description_ptr": "permdesc_bindTvInput", "label": "bind to a TV input", "label_ptr": "permlab_bindTvInput", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "Allows the holder to bind to the top-level\n interface of a voice interaction service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVoiceInteraction", "label": "bind to a voice interactor", "label_ptr": "permlab_bindVoiceInteraction", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal apps.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_MAP": { "description": "Allows the app to access Bluetooth MAP data.", "description_ptr": "permdesc_bluetoothMap", "label": "access Bluetooth MAP data", "label_ptr": "permlab_bluetoothMap", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "Allows the app to\n pair with remote devices without user interaction.", "description_ptr": "permdesc_bluetoothPriv", "label": "allow Bluetooth pairing by Application", "label_ptr": "permlab_bluetoothPriv", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "system|signature" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to\n access data from sensors you use to measure what’s happening inside your\n body, such as heart rate.", "description_ptr": "permdesc_bodySensors", "label": "body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "" }, "android.permission.BRICK": { "description": "Allows the app to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows the app to\n broadcast a notification that an app package has been removed.\n Malicious apps may use this to kill any other running\n app.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SCORE_NETWORKS": { "description": "Allows the app\n to broadcast a notification that networks need to be scored.\n Never needed for normal apps.\n ", "description_ptr": "permdesc_broadcastScoreNetworks", "label": "send score networks broadcast", "label_ptr": "permlab_broadcastScoreNetworks", "name": "android.permission.BROADCAST_SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BROADCAST_SMS": { "description": "Allows the app to\n broadcast a notification that an SMS message has been received.\n Malicious apps may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows the app to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious apps may use this to forge MMS message receipt or to\n silently replace the content of any webpage with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the app to call\n any phone number, including emergency numbers, without your intervention.\n Malicious apps may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "Allows a pre-installed system application to disable the camera use indicator LED.", "description_ptr": "permdesc_cameraDisableTransmitLed", "label": "disable transmit indicator LED when camera is in use", "label_ptr": "permlab_cameraDisableTransmitLed", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "Allows the app to capture audio for Hotword detection. The capture can\n happen in the background but does not prevent other audio capture (e.g. Camcorder).", "description_ptr": "permdesc_captureAudioHotword", "label": "Hotword detection", "label_ptr": "permlab_captureAudioHotword", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "Allows the app to capture and redirect audio output.", "description_ptr": "permdesc_captureAudioOutput", "label": "capture audio output", "label_ptr": "permlab_captureAudioOutput", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "Allows the app to capture and redirect secure video output.", "description_ptr": "permdesc_captureSecureVideoOutput", "label": "capture secure video output", "label_ptr": "permlab_captureSecureVideoOutput", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "Allows the app to capture and redirect video output.", "description_ptr": "permdesc_captureVideoOutput", "label": "capture video output", "label_ptr": "permlab_captureVideoOutput", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows the app to change the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows the app to change whether a\n component of another app is enabled or not. Malicious apps may use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get app components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable app components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows the app to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change system display settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "Change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows the app to free phone storage\n by deleting files in the cache directories of other applications. This may cause other\n applications to start up more slowly as they need to re-retrieve their data.", "description_ptr": "permdesc_clearAppCache", "label": "delete all app cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows the app to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other apps' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "Allows the app to configure and connect to Wifi displays.", "description_ptr": "permdesc_configureWifiDisplay", "label": "configure Wifi displays", "label_ptr": "permlab_configureWifiDisplay", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the app to launch the full backup confirmation UI. Not to be used by any app.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "Allows the app to provide an in-call user experience.", "description_ptr": "permdesc_control_incall_experience", "label": "provide an in-call user experience", "label_ptr": "permlab_control_incall_experience", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.CONTROL_KEYGUARD": { "description": "Allows an application to control keguard.", "description_ptr": "permdesc_control_keyguard", "label": "Control displaying and hiding keyguard", "label_ptr": "permlab_control_keyguard", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows the app to enable/disable location\n update notifications from the radio. Not for use by normal apps.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "Allows the app to control low-level features of Wifi displays.", "description_ptr": "permdesc_controlWifiDisplay", "label": "control Wifi displays", "label_ptr": "permlab_controlWifiDisplay", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "copy content", "description_ptr": "permlab_copyProtectedData", "label": "copy content", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows the app to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other apps' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_PACKAGES": { "description": "Allows the app to delete\n Android packages. Malicious apps may use this to delete important apps.", "description_ptr": "permdesc_deletePackages", "label": "delete apps", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DEVICE_POWER": { "description": "Allows the app to turn the phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows the app to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SCREENLOCK", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows the app to retrieve\n internal state of the system. Malicious apps may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.STATUS_BAR", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "Allows an application to register an input filter\n which filters the stream of all user events before they are dispatched. Malicious app\n may control the system UI whtout user intervention.", "description_ptr": "permdesc_filter_events", "label": "filter events", "label_ptr": "permlab_filter_events", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the app to control the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows the app to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal apps.", "description_ptr": "permdesc_forceBack", "label": "force app to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows the app to forcibly stop other apps.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other apps", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.FRAME_STATS": { "description": "Allows an application to collect\n frame statistics. Malicious apps may observe the frame statistics\n of windows from other apps.", "description_ptr": "permdesc_frameStats", "label": "retrieve frame statistics", "label_ptr": "permlab_frameStats", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "Allows the application to temporarily freeze\n the screen for a full-screen transition.", "description_ptr": "permdesc_freezeScreen", "label": "freeze screen", "label_ptr": "permlab_freezeScreen", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_APP_OPS_STATS": { "description": "Allows the app to retrieve\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_getAppOpsStats", "label": "retrieve app ops statistics", "label_ptr": "permlab_getAppOpsStats", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "Allows the app to retrieve\n detailed information about currently and recently running tasks. Malicious apps may\n discover private information about other apps.", "description_ptr": "permdesc_getDetailedTasks", "label": "retrieve details of running apps", "label_ptr": "permlab_getDetailedTasks", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "Allows the holder to retrieve private information\n about the current application in the foreground of the screen.", "description_ptr": "permdesc_getTopActivityInfo", "label": "get current app info", "label_ptr": "permlab_getTopActivityInfo", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GRANT_REVOKE_PERMISSIONS": { "description": "Allows an application to grant or revoke\n specific permissions for it or other applications. Malicious applications may use this\n to access features you have not granted them.\n ", "description_ptr": "permdesc_grantRevokePermissions", "label": "grant or revoke permissions", "label_ptr": "permlab_grantRevokePermissions", "name": "android.permission.GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the app to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INJECT_EVENTS": { "description": "Allows the app to deliver\n its own input events (key presses, etc.) to other apps. Malicious\n apps may use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources\n for testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows the app to install new or updated\n Android packages. Malicious apps may use this to add new apps with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install apps", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "Allows the app to perform actions\n across different users on the device. Malicious apps may use this to violate\n the protection between users.", "description_ptr": "permdesc_interactAcrossUsers", "label": "interact across users", "label_ptr": "permlab_interactAcrossUsers", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "Allows all possible interactions across\n users.", "description_ptr": "permdesc_interactAcrossUsersFull", "label": "full license to interact across users", "label_ptr": "permlab_interactAcrossUsersFull", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the app to create\n windows that are intended to be used by the internal system\n user interface. Not for use by normal apps.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "Allows the holder to invoke the carrier-provided configuration app. Should never be needed for normal apps.", "description_ptr": "permdesc_invokeCarrierSetup", "label": "invoke the carrier-provided configuration app", "label_ptr": "permlab_invokeCarrierSetup", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "Allows an application to launch an activity that changes the trust agent behavior.", "description_ptr": "permdesc_launch_trust_agent_settings", "label": "Launch trust agent settings menu.", "label_ptr": "permlab_launch_trust_agent_settings", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "signature|system" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows the app to\n perform operations like adding and removing accounts, and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "add or remove accounts", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "Allows the app to add, remove, and\n modify the activity stacks in which other apps run. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_manageActivityStacks", "label": "manage activity stacks", "label_ptr": "permlab_manageActivityStacks", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature|system" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows the app to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal apps.", "description_ptr": "permdesc_manageAppTokens", "label": "manage app tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "Allows the app to install and uninstall CA certificates as trusted credentials.", "description_ptr": "permdesc_manageCaCertificates", "label": "manage trusted credentials", "label_ptr": "permlab_manageCaCertificates", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "Allows the holder to add or remove active device\n administrators. Should never be needed for normal apps.", "description_ptr": "permdesc_manageDeviceAdmins", "label": "add or remove a device admin", "label_ptr": "permlab_manageDeviceAdmins", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MANAGE_DOCUMENTS": { "description": "Allows the app to manage document storage.", "description_ptr": "permdesc_manageDocs", "label": "manage document storage", "label_ptr": "permlab_manageDocs", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "Allows an application to manage media projection sessions. These sessions can provide applications the ability to capture display and audio contents. Should never be needed by normal apps.", "description_ptr": "permdesc_manageMediaProjection", "label": "Manage media projection sessions", "label_ptr": "permlab_manageMediaProjection", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows the app to manage network policies and define app-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the app to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.MANAGE_USERS": { "description": "Allows apps to manage users on the device, including query, creation and deletion.", "description_ptr": "permdesc_manageUsers", "label": "manage users", "label_ptr": "permlab_manageUsers", "name": "android.permission.MANAGE_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "Allows the holder to manage the keyphrases for voice hotword detection.\n Should never be needed for normal apps.", "description_ptr": "permdesc_manageVoiceKeyphrases", "label": "manage voice keyphrases", "label_ptr": "permlab_manageVoiceKeyphrases", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MASTER_CLEAR": { "description": "Allows the app to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed apps.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "Allows the app to control media playback and access the media information (title, author...).", "description_ptr": "permdesc_mediaContentControl", "label": "control media playback and metadata access", "label_ptr": "permlab_mediaContentControl", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "Allows the app to directly control audio routing and\n override audio policy decisions.", "description_ptr": "permdesc_modifyAudioRouting", "label": "Audio Routing", "label_ptr": "permlab_modifyAudioRouting", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.AUDIO_SETTINGS", "protectionLevel": "normal" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows the app to modify how network usage is accounted against apps. Not for use by normal apps.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "Allows the holder to modify the system's\n parental controls data. Should never be needed for normal apps.", "description_ptr": "permdesc_modifyParentalControls", "label": "modify parental controls", "label_ptr": "permlab_modifyParentalControls", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the app to control the\n phone features of the device. An app with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the app to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "erase SD Card", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the app to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "access SD Card filesystem", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOVE_PACKAGE": { "description": "Allows the app to move app resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "move app resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "Allows this application to receive information about current Android Beam transfers", "description_ptr": "permdesc_handoverStatus", "label": "Receive Android Beam transfer status", "label_ptr": "permlab_handoverStatus", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the app to modify collected component usage statistics. Not for use by normal apps.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the app to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the app to start CDMA provisioning.\n Malicious apps may unnecessarily start CDMA provisioning.", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "Allows an application to provide a trust agent.", "description_ptr": "permdesc_provide_trust_agent", "label": "Provide a trust agent.", "label_ptr": "permlab_provide_trust_agent", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "normal" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows the app to read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_INPUT_STATE": { "description": "Allows the app to watch the\n keys you press even when interacting with another app (such\n as typing a password). Should never be needed for normal apps.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "Read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "" }, "android.permission.READ_LOGS": { "description": "Allows the app to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows the app to read historical network usage for specific networks and apps.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "Allows the app to access the precise\n phone states. This permission allows the app to determine the real\n call status, whether a call is active or in the background, call fails,\n precise data connection status and data connection fails.", "description_ptr": "permdesc_readPrecisePhoneState", "label": "read precise phone states", "label_ptr": "permlab_readPrecisePhoneState", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PROFILE": { "description": "Allows the app to read\n personal profile information stored on your device, such as your name and\n contact information. This means the app can identify you and may send your\n profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your own contact card", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the app\n to access and sync social updates from you and your friends. Be careful\n when sharing information -- this allows the app to read communications\n between you and your friends on social networks, regardless of\n confidentiality. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows the app to read all words,\n names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read terms you added to the dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.USER_DICTIONARY", "protectionLevel": "dangerous" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.REAL_GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature|system" }, "android.permission.REBOOT": { "description": "Allows the app to force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "Allows the app to receive and process Bluetooth MAP\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveBluetoothMap", "label": "receive Bluetooth messages (MAP)", "label_ptr": "permlab_receiveBluetoothMap", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows the app to receive\n and process emergency broadcast messages. This permission is only available\n to system apps.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.RECOVERY": { "description": "Allows an application to interact with the recovery system and system updates.", "description_ptr": "permdesc_recovery", "label": "Interact with update and recovery system", "label_ptr": "permlab_recovery", "name": "android.permission.RECOVERY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "Allows an application to remove DRM certficates. Should never be needed for normal apps.", "description_ptr": "permdesc_removeDrmCertificates", "label": "remove DRM certificates", "label_ptr": "permlab_removeDrmCertificates", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.REMOVE_TASKS": { "description": "Allows the app to remove\n tasks and kill their apps. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_removeTasks", "label": "stop running apps", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows the app to retrieve\n the content of the active window. Malicious apps may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "Allows an application to retrieve\n the window token. Malicious apps may perfrom unauthorized interaction with\n the application window impersonating the system.", "description_ptr": "permdesc_retrieveWindowToken", "label": "retrieve window token", "label_ptr": "permlab_retrieveWindowToken", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCORE_NETWORKS": { "description": "Allows the app to\n rank networks and influence which networks the phone should prefer.", "description_ptr": "permdesc_scoreNetworks", "label": "score networks", "label_ptr": "permlab_scoreNetworks", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "Allows the app to send\n requests to other messaging apps to handle respond-via-message events for incoming\n calls.", "description_ptr": "permdesc_sendRespondViaMessageRequest", "label": "send respond-via-message events", "label_ptr": "permlab_sendRespondViaMessageRequest", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.SERIAL_PORT": { "description": "Allows the holder to access serial ports using the SerialManager API.", "description_ptr": "permdesc_serialPort", "label": "access serial ports", "label_ptr": "permlab_serialPort", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows the app to\n monitor and control how the system launches activities.\n Malicious apps may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all app launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows the app\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal apps.", "description_ptr": "permdesc_setAlwaysFinish", "label": "force background apps to close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows the app to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_DEBUG_APP": { "description": "Allows the app to turn\n on debugging for another app. Malicious apps may use this\n to kill other apps.", "description_ptr": "permdesc_setDebugApp", "label": "enable app debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "Allows the app to modify the calibration parameters of the touch screen. Should never be needed for normal apps.", "description_ptr": "permdesc_setInputCalibration", "label": "change input device calibration", "label_ptr": "permlab_setInputCalibration", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "Allows the app to change\n the keyboard layout. Should never be needed for normal apps.", "description_ptr": "permdesc_setKeyboardLayout", "label": "change keyboard layout", "label_ptr": "permlab_setKeyboardLayout", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "Allows the app to change\n the rotation of the screen at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows the app to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows the app to\n modify your preferred apps. Malicious apps may\n silently change the apps that are run, spoofing your\n existing apps to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred apps", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows the app\n to control the maximum number of processes that will run. Never\n needed for normal apps.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "Allows the app to control the\n screen compatibility mode of other applications. Malicious applications may\n break the behavior of other applications.", "description_ptr": "permdesc_setScreenCompatibility", "label": "set screen compatibility", "label_ptr": "permlab_setScreenCompatibility", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "Allows the app to change the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_CLOCK", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows the app to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to apps", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "Allows the app to start any activity, regardless of permission protection or exported state.", "description_ptr": "permdesc_startAnyActivity", "label": "start any activity", "label_ptr": "permlab_startAnyActivity", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "Allows the app to use an ActivityManager.RecentTaskInfo\n object to launch a defunct task that was returned from ActivityManager.getRecentTaskList().", "description_ptr": "permdesc_startTasksFromRecents", "label": "start a task from recents", "label_ptr": "permlab_startTasksFromRecents", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR": { "description": "Allows the app to disable the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the app to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another app.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows the app to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows the app to modify\n your currently synced feeds. Malicious apps may change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.DISPLAY", "protectionLevel": "dangerous" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "Allows an application to temporarily\n enable accessibility on the device. Malicious apps may enable accessibility without\n user consent.", "description_ptr": "permdesc_temporary_enable_accessibility", "label": "temporary enable accessibility", "label_ptr": "permlab_temporary_enable_accessibility", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.TRUST_LISTENER": { "description": "Allows an application to listen for changes in trust state.", "description_ptr": "permdesc_trust_listener", "label": "Listen to trust state changes.", "label_ptr": "permlab_trust_listener", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "Allows the app to modify\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateAppOpsStats", "label": "modify app ops statistics", "label_ptr": "permlab_updateAppOpsStats", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the app to modify\n collected battery statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateBatteryStats", "label": "modify battery statistics", "label_ptr": "permlab_updateBatteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_LOCK": { "description": "Allows the holder to offer information to the system about when would be a good time for a noninteractive reboot to upgrade the device.", "description_ptr": "permdesc_updateLock", "label": "discourage automatic device updates", "label_ptr": "permlab_updateLock", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USER_ACTIVITY": { "description": "Allows the app to reset the display timeout.", "description_ptr": "permdesc_userActivity", "label": "reset display timeout", "label_ptr": "permlab_userActivity", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.USE_CREDENTIALS": { "description": "Allows the app to request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use accounts on the device", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows the app to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious apps may monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows the app to modify the\n Google services map. Not for use by normal apps.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows the app to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature|system" }, "android.permission.WRITE_PROFILE": { "description": "Allows the app to\n change or add to personal profile information stored on your device, such\n as your name and contact information. This means the app can identify you\n and may send your profile information to others.", "description_ptr": "permdesc_writeProfile", "label": "modify your own contact card", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows the app to modify the\n system's secure settings data. Not for use by normal apps.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.WRITE_SMS": { "description": "Allows the app to write\n to SMS messages stored on your phone or SIM card. Malicious apps\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit your text messages (SMS or MMS)", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the app to\n display social updates from your friends. Be careful when sharing\n information -- this allows the app to produce messages that may appear to\n come from a friend. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows the app to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "add words to user-defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.WRITE_USER_DICTIONARY", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.DEVICE_ALARMS", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the app to read the\n history of all URLs that the Browser has visited, and all of the Browser's\n bookmarks. Note: this permission may not be enforced by third-party\n browsers or other applications with web browsing capabilities.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read your Web bookmarks and history", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows the\n app to modify the Browser's history or bookmarks stored on your phone.\n This may allow the app to erase or modify Browser data. Note:\n this permission may note be enforced by third-party browsers or other\n applications with web browsing capabilities.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write web bookmarks and history", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "Allows the app to read your voicemails.", "description_ptr": "permdesc_readVoicemail", "label": "read voicemail", "label_ptr": "permlab_readVoicemail", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "system|signature" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "Allows the app to modify and remove messages from your voicemail inbox.", "description_ptr": "permdesc_writeVoicemail", "label": "write voicemails", "label_ptr": "permlab_writeVoicemail", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "system|signature" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_22.json ================================================ { "groups": { "android.permission-group.ACCESSIBILITY_FEATURES": { "description": "Features that assistive technology can request.", "description_ptr": "permgroupdesc_accessibilityFeatures", "icon": "", "icon_ptr": "perm_group_accessibility_features", "label": "Accessibility features", "label_ptr": "permgrouplab_accessibilityFeatures", "name": "android.permission-group.ACCESSIBILITY_FEATURES" }, "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "perm_group_accounts", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.AFFECTS_BATTERY": { "description": "Use features that can quickly drain battery.", "description_ptr": "permgroupdesc_affectsBattery", "icon": "", "icon_ptr": "perm_group_affects_battery", "label": "Affects Battery", "label_ptr": "permgrouplab_affectsBattery", "name": "android.permission-group.AFFECTS_BATTERY" }, "android.permission-group.APP_INFO": { "description": "Ability to affect behavior of other applications on your device.", "description_ptr": "permgroupdesc_appInfo", "icon": "", "icon_ptr": "perm_group_app_info", "label": "Your applications information", "label_ptr": "permgrouplab_appInfo", "name": "android.permission-group.APP_INFO" }, "android.permission-group.AUDIO_SETTINGS": { "description": "Change audio settings.", "description_ptr": "permgroupdesc_audioSettings", "icon": "", "icon_ptr": "perm_group_audio_settings", "label": "Audio Settings", "label_ptr": "permgrouplab_audioSettings", "name": "android.permission-group.AUDIO_SETTINGS" }, "android.permission-group.BLUETOOTH_NETWORK": { "description": "Access devices and networks through Bluetooth.", "description_ptr": "permgroupdesc_bluetoothNetwork", "icon": "", "icon_ptr": "perm_group_bluetooth", "label": "Bluetooth", "label_ptr": "permgrouplab_bluetoothNetwork", "name": "android.permission-group.BLUETOOTH_NETWORK" }, "android.permission-group.BOOKMARKS": { "description": "Direct access to bookmarks and browser history.", "description_ptr": "permgroupdesc_bookmarks", "icon": "", "icon_ptr": "perm_group_bookmarks", "label": "Bookmarks and History", "label_ptr": "permgrouplab_bookmarks", "name": "android.permission-group.BOOKMARKS" }, "android.permission-group.CALENDAR": { "description": "Direct access to calendar and events.", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "Direct access to camera for image or video capture.", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.COST_MONEY": { "description": "Do things that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for app developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.DEVICE_ALARMS": { "description": "Set the alarm clock.", "description_ptr": "permgroupdesc_deviceAlarms", "icon": "", "icon_ptr": "perm_group_device_alarms", "label": "Alarm", "label_ptr": "permgrouplab_deviceAlarms", "name": "android.permission-group.DEVICE_ALARMS" }, "android.permission-group.DISPLAY": { "description": "Effect the UI of other applications.", "description_ptr": "permgroupdesc_display", "icon": "", "icon_ptr": "perm_group_display", "label": "Other Application UI", "label_ptr": "permgrouplab_display", "name": "android.permission-group.DISPLAY" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location.", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS, email, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "perm_group_messages", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.MICROPHONE": { "description": "Direct access to the microphone to record audio.", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NETWORK": { "description": "Access various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "perm_group_network", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to information about you, stored in on your contact card.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "perm_group_personal_info", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.SCREENLOCK": { "description": "Ability to affect behavior of the lock screen on your device.", "description_ptr": "permgroupdesc_screenlock", "icon": "", "icon_ptr": "perm_group_screenlock", "label": "Lock screen", "label_ptr": "permgrouplab_screenlock", "name": "android.permission-group.SCREENLOCK" }, "android.permission-group.SOCIAL_INFO": { "description": "Direct access to information about your contacts and social connections.", "description_ptr": "permgroupdesc_socialInfo", "icon": "", "icon_ptr": "perm_group_social_info", "label": "Your social information", "label_ptr": "permgrouplab_socialInfo", "name": "android.permission-group.SOCIAL_INFO" }, "android.permission-group.STATUS_BAR": { "description": "Change the device status bar settings.", "description_ptr": "permgroupdesc_statusBar", "icon": "", "icon_ptr": "perm_group_status_bar", "label": "Status Bar", "label_ptr": "permgrouplab_statusBar", "name": "android.permission-group.STATUS_BAR" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYNC_SETTINGS": { "description": "Access to the sync settings.", "description_ptr": "permgroupdesc_syncSettings", "icon": "", "icon_ptr": "perm_group_sync_settings", "label": "Sync Settings", "label_ptr": "permgrouplab_syncSettings", "name": "android.permission-group.SYNC_SETTINGS" }, "android.permission-group.SYSTEM_CLOCK": { "description": "Change the device time or timezone.", "description_ptr": "permgroupdesc_systemClock", "icon": "", "icon_ptr": "perm_group_system_clock", "label": "Clock", "label_ptr": "permgrouplab_systemClock", "name": "android.permission-group.SYSTEM_CLOCK" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "perm_group_system_tools", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" }, "android.permission-group.USER_DICTIONARY": { "description": "Read words in user dictionary.", "description_ptr": "permgroupdesc_dictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary", "label": "Read User Dictionary", "label_ptr": "permgrouplab_dictionary", "name": "android.permission-group.USER_DICTIONARY" }, "android.permission-group.VOICEMAIL": { "description": "Direct access to voicemail.", "description_ptr": "permgroupdesc_voicemail", "icon": "", "icon_ptr": "perm_group_voicemail", "label": "Voicemail", "label_ptr": "permgrouplab_voicemail", "name": "android.permission-group.VOICEMAIL" }, "android.permission-group.WALLPAPER": { "description": "Change the device wallpaper settings.", "description_ptr": "permgroupdesc_wallpaper", "icon": "", "icon_ptr": "perm_group_wallpaper", "label": "Wallpaper", "label_ptr": "permgrouplab_wallpaper", "name": "android.permission-group.WALLPAPER" }, "android.permission-group.WRITE_USER_DICTIONARY": { "description": "Add words to the user dictionary.", "description_ptr": "permgroupdesc_writeDictionary", "icon": "", "icon_ptr": "perm_group_user_dictionary_write", "label": "Write User Dictionary", "label_ptr": "permgrouplab_writeDictionary", "name": "android.permission-group.WRITE_USER_DICTIONARY" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_ALL_EXTERNAL_STORAGE": { "description": "Allows the app to access external storage for all users.", "description_ptr": "permdesc_sdcardAccessAll", "label": "access external storage of all users", "label_ptr": "permlab_sdcardAccessAll", "name": "android.permission.ACCESS_ALL_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows the app to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows the app read/write access to\n properties uploaded by the checkin service. Not for use by normal\n apps.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "Allows the holder to access content\n providers from the shell. Should never be needed for normal apps.", "description_ptr": "permdesc_accessContentProvidersExternally", "label": "access content providers externally", "label_ptr": "permlab_accessContentProvidersExternally", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "Allows an application to provision and use DRM certficates. Should never be needed for normal apps.", "description_ptr": "permdesc_accessDrmCertificates", "label": "access DRM certificates", "label_ptr": "permlab_accessDrmCertificates", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FM_RADIO": { "description": "Allows the app to access FM radio to listen to programs.", "description_ptr": "permdesc_fm", "label": "access FM radio", "label_ptr": "permlab_fm", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "Allows the app to use InputFlinger low-level features.", "description_ptr": "permdesc_accessInputFlinger", "label": "access InputFlinger", "label_ptr": "permlab_accessInputFlinger", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "Allows an application to access keguard secure storage.", "description_ptr": "permdesc_access_keyguard_secure_storage", "label": "Access keyguard secure storage", "label_ptr": "permlab_access_keyguard_secure_storage", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for\n testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MTP": { "description": "Allows access to the kernel MTP driver to implement the MTP USB protocol.", "description_ptr": "permdesc_accessMtp", "label": "implement MTP protocol", "label_ptr": "permlab_accessMtp", "name": "android.permission.ACCESS_MTP", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "Allows an application to listen for observations on network conditions. Should never be needed for normal apps.", "description_ptr": "permdesc_accessNetworkConditions", "label": "listen for observations on network conditions", "label_ptr": "permlab_accessNetworkConditions", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "Allows the app to retrieve, examine, and clear notifications, including those posted by other apps.", "description_ptr": "permdesc_accessNotifications", "label": "access notifications", "label_ptr": "permlab_accessNotifications", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows the app to use SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows the app to make calls to AccountAuthenticators.", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "Allows the app to use any installed\n media decoder to decode for playback.", "description_ptr": "permdesc_anyCodecForPlayback", "label": "use any media decoder for playback", "label_ptr": "permlab_anyCodecForPlayback", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.ASEC_ACCESS": { "description": "Allows the app to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the app to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the app to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the app to mount/unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount/unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the app to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows the app\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "create accounts and set passwords", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the app to control the system's backup and restore mechanism. Not for use by normal apps.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BATTERY_STATS": { "description": "Allows an application to read the current low-level\n battery use data. May allow the application to find out detailed information about\n which apps you use.", "description_ptr": "permdesc_batteryStats", "label": "read battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of an accessibility service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindAccessibilityService", "label": "bind to an accessibility service", "label_ptr": "permlab_bindAccessibilityService", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the app to tell the system\n which widgets can be used by which app. An app with this permission\n can give access to personal data to other apps.\n Not for use by normal apps.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a carrier messaging service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierMessagingService", "label": "bind to a carrier messaging service", "label_ptr": "permlab_bindCarrierMessagingService", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a condition provider service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindConditionProviderService", "label": "bind to a condition provider service", "label_ptr": "permlab_bindConditionProviderService", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "Allows the app to interact with telephony services to make/receive calls.", "description_ptr": "permdesc_bind_connection_service", "label": "interact with telephony services", "label_ptr": "permlab_bind_connection_service", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_DREAM_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a dream service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindDreamService", "label": "bind to a dream service", "label_ptr": "permlab_bindDreamService", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INCALL_SERVICE": { "description": "Allows the app to control when and how the user sees the in-call screen.", "description_ptr": "permdesc_bind_incall_service", "label": "interact with in-call screen", "label_ptr": "permlab_bind_incall_service", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal apps.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "This permission allows the Android system to run the application in the background when requested.", "description_ptr": "permdesc_bindJobService", "label": "run the application's scheduled background work", "label_ptr": "permlab_bindJobService", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.BIND_NFC_SERVICE": { "description": "Allows the holder to bind to applications\n that are emulating NFC cards. Should never be needed for normal apps.", "description_ptr": "permdesc_bindNfcService", "label": "bind to NFC service", "label_ptr": "permlab_bindNfcService", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "Allows the holder to bind to the top-level interface of a notification listener service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindNotificationListenerService", "label": "bind to a notification listener service", "label_ptr": "permlab_bindNotificationListenerService", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "Allows the holder to make requests of\n package verifiers. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPackageVerifier", "label": "bind to a package verifier", "label_ptr": "permlab_bindPackageVerifier", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a print service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPrintService", "label": "bind to a print service", "label_ptr": "permlab_bindPrintService", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a print spooler service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindPrintSpoolerService", "label": "bind to a print spooler service", "label_ptr": "permlab_bindPrintSpoolerService", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "Allows the holder to bind to the top-level\n interface of a widget service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteViews", "label": "bind to a widget service", "label_ptr": "permlab_bindRemoteViews", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "Allows the holder to bind to the top-level\n interface of a remote display. Should never be needed for normal apps.", "description_ptr": "permdesc_bindRemoteDisplay", "label": "bind to a remote display", "label_ptr": "permlab_bindRemoteDisplay", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a text service(e.g. SpellCheckerService). Should never be needed for normal apps.", "description_ptr": "permdesc_bindTextService", "label": "bind to a text service", "label_ptr": "permlab_bindTextService", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "Allows an application to bind to a trust agent service.", "description_ptr": "permdesc_bind_trust_agent_service", "label": "Bind to a trust agent service", "label_ptr": "permlab_bind_trust_agent_service", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "Allows the holder to bind to the top-level\n interface of a TV input. Should never be needed for normal apps.", "description_ptr": "permdesc_bindTvInput", "label": "bind to a TV input", "label_ptr": "permlab_bindTvInput", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "Allows the holder to bind to the top-level\n interface of a voice interaction service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVoiceInteraction", "label": "bind to a voice interactor", "label_ptr": "permlab_bindVoiceInteraction", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "Allows the holder to bind to the top-level\n interface of a Vpn service. Should never be needed for normal apps.", "description_ptr": "permdesc_bindVpnService", "label": "bind to a VPN service", "label_ptr": "permlab_bindVpnService", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal apps.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_MAP": { "description": "Allows the app to access Bluetooth MAP data.", "description_ptr": "permdesc_bluetoothMap", "label": "access Bluetooth MAP data", "label_ptr": "permlab_bluetoothMap", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "Allows the app to\n pair with remote devices without user interaction.", "description_ptr": "permdesc_bluetoothPriv", "label": "allow Bluetooth pairing by Application", "label_ptr": "permlab_bluetoothPriv", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "android.permission-group.BLUETOOTH_NETWORK", "protectionLevel": "system|signature" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "" }, "android.permission.BRICK": { "description": "Allows the app to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "Allows the app\n to send privileged network broadcasts.\n Never needed for normal apps.\n ", "description_ptr": "permdesc_broadcastNetworkPrivileged", "label": "send privileged network broadcasts", "label_ptr": "permlab_broadcastNetworkPrivileged", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows the app to\n broadcast a notification that an app package has been removed.\n Malicious apps may use this to kill any other running\n app.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows the app to\n broadcast a notification that an SMS message has been received.\n Malicious apps may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows the app to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious apps may use this to forge MMS message receipt or to\n silently replace the content of any webpage with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the app to call\n any phone number, including emergency numbers, without your intervention.\n Malicious apps may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "Allows a pre-installed system application to disable the camera use indicator LED.", "description_ptr": "permdesc_cameraDisableTransmitLed", "label": "disable transmit indicator LED when camera is in use", "label_ptr": "permlab_cameraDisableTransmitLed", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "Allows the app to capture audio for Hotword detection. The capture can\n happen in the background but does not prevent other audio capture (e.g. Camcorder).", "description_ptr": "permdesc_captureAudioHotword", "label": "Hotword detection", "label_ptr": "permlab_captureAudioHotword", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "Allows the app to capture and redirect audio output.", "description_ptr": "permdesc_captureAudioOutput", "label": "capture audio output", "label_ptr": "permlab_captureAudioOutput", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "Allows the app to capture and redirect secure video output.", "description_ptr": "permdesc_captureSecureVideoOutput", "label": "capture secure video output", "label_ptr": "permlab_captureSecureVideoOutput", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "Allows the app to capture and redirect video output.", "description_ptr": "permdesc_captureVideoOutput", "label": "capture video output", "label_ptr": "permlab_captureVideoOutput", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows the app to change the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows the app to change whether a\n component of another app is enabled or not. Malicious apps may use this\n to disable important phone capabilities. Care must be used with this permission, as it is\n possible to get app components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable app components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows the app to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change system display settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "Change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows the app to free phone storage\n by deleting files in the cache directories of other applications. This may cause other\n applications to start up more slowly as they need to re-retrieve their data.", "description_ptr": "permdesc_clearAppCache", "label": "delete all app cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows the app to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other apps' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "Allows the app to configure and connect to Wifi displays.", "description_ptr": "permdesc_configureWifiDisplay", "label": "configure Wifi displays", "label_ptr": "permlab_configureWifiDisplay", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "Allows the app to launch the full backup confirmation UI. Not to be used by any app.", "description_ptr": "permdesc_confirm_full_backup", "label": "confirm a full backup or restore operation", "label_ptr": "permlab_confirm_full_backup", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "Allows the app to provide an in-call user experience.", "description_ptr": "permdesc_control_incall_experience", "label": "provide an in-call user experience", "label_ptr": "permlab_control_incall_experience", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.CONTROL_KEYGUARD": { "description": "Allows an application to control keguard.", "description_ptr": "permdesc_control_keyguard", "label": "Control displaying and hiding keyguard", "label_ptr": "permlab_control_keyguard", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows the app to enable/disable location\n update notifications from the radio. Not for use by normal apps.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CONTROL_VPN": { "description": "Allows the app to control low-level features of Virtual Private Networks.", "description_ptr": "permdesc_controlVpn", "label": "control Virtual Private Networks", "label_ptr": "permlab_controlVpn", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "Allows the app to control low-level features of Wifi displays.", "description_ptr": "permdesc_controlWifiDisplay", "label": "control Wifi displays", "label_ptr": "permlab_controlWifiDisplay", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "copy content", "description_ptr": "permlab_copyProtectedData", "label": "copy content", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows the app to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other apps' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DELETE_PACKAGES": { "description": "Allows the app to delete\n Android packages. Malicious apps may use this to delete important apps.", "description_ptr": "permdesc_deletePackages", "label": "delete apps", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.DEVICE_POWER": { "description": "Allows the app to turn the phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows the app to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SCREENLOCK", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows the app to retrieve\n internal state of the system. Malicious apps may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.STATUS_BAR", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "Allows an application to register an input filter\n which filters the stream of all user events before they are dispatched. Malicious app\n may control the system UI whtout user intervention.", "description_ptr": "permdesc_filter_events", "label": "filter events", "label_ptr": "permlab_filter_events", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the app to control the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows the app to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal apps.", "description_ptr": "permdesc_forceBack", "label": "force app to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows the app to forcibly stop other apps.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other apps", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.FRAME_STATS": { "description": "Allows an application to collect\n frame statistics. Malicious apps may observe the frame statistics\n of windows from other apps.", "description_ptr": "permdesc_frameStats", "label": "retrieve frame statistics", "label_ptr": "permlab_frameStats", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "Allows the application to temporarily freeze\n the screen for a full-screen transition.", "description_ptr": "permdesc_freezeScreen", "label": "freeze screen", "label_ptr": "permlab_freezeScreen", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_APP_OPS_STATS": { "description": "Allows the app to retrieve\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_getAppOpsStats", "label": "retrieve app ops statistics", "label_ptr": "permlab_getAppOpsStats", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "Allows the app to retrieve\n detailed information about currently and recently running tasks. Malicious apps may\n discover private information about other apps.", "description_ptr": "permdesc_getDetailedTasks", "label": "retrieve details of running apps", "label_ptr": "permlab_getDetailedTasks", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "Allows the holder to retrieve private information\n about the current application in the foreground of the screen.", "description_ptr": "permdesc_getTopActivityInfo", "label": "get current app info", "label_ptr": "permlab_getTopActivityInfo", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GRANT_REVOKE_PERMISSIONS": { "description": "Allows an application to grant or revoke\n specific permissions for it or other applications. Malicious applications may use this\n to access features you have not granted them.\n ", "description_ptr": "permdesc_grantRevokePermissions", "label": "grant or revoke permissions", "label_ptr": "permlab_grantRevokePermissions", "name": "android.permission.GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the app to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INJECT_EVENTS": { "description": "Allows the app to deliver\n its own input events (key presses, etc.) to other apps. Malicious\n apps may use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources\n for testing or install a new location provider. This allows the app to\n override the location and/or status returned by other location sources\n such as GPS or location providers.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows the app to install new or updated\n Android packages. Malicious apps may use this to add new apps with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install apps", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "Allows the app to perform actions\n across different users on the device. Malicious apps may use this to violate\n the protection between users.", "description_ptr": "permdesc_interactAcrossUsers", "label": "interact across users", "label_ptr": "permlab_interactAcrossUsers", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "Allows all possible interactions across\n users.", "description_ptr": "permdesc_interactAcrossUsersFull", "label": "full license to interact across users", "label_ptr": "permlab_interactAcrossUsersFull", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the app to create\n windows that are intended to be used by the internal system\n user interface. Not for use by normal apps.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "Allows the holder to invoke the carrier-provided configuration app. Should never be needed for normal apps.", "description_ptr": "permdesc_invokeCarrierSetup", "label": "invoke the carrier-provided configuration app", "label_ptr": "permlab_invokeCarrierSetup", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "Allows an application to launch an activity that changes the trust agent behavior.", "description_ptr": "permdesc_launch_trust_agent_settings", "label": "Launch trust agent settings menu.", "label_ptr": "permlab_launch_trust_agent_settings", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "signature|system" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows the app to\n perform operations like adding and removing accounts, and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "add or remove accounts", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "Allows the app to add, remove, and\n modify the activity stacks in which other apps run. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_manageActivityStacks", "label": "manage activity stacks", "label_ptr": "permlab_manageActivityStacks", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature|system" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows the app to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal apps.", "description_ptr": "permdesc_manageAppTokens", "label": "manage app tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "Allows the app to install and uninstall CA certificates as trusted credentials.", "description_ptr": "permdesc_manageCaCertificates", "label": "manage trusted credentials", "label_ptr": "permlab_manageCaCertificates", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "Allows the holder to add or remove active device\n administrators. Should never be needed for normal apps.", "description_ptr": "permdesc_manageDeviceAdmins", "label": "add or remove a device admin", "label_ptr": "permlab_manageDeviceAdmins", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MANAGE_DOCUMENTS": { "description": "Allows the app to manage document storage.", "description_ptr": "permdesc_manageDocs", "label": "manage document storage", "label_ptr": "permlab_manageDocs", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "Allows an application to manage media projection sessions. These sessions can provide applications the ability to capture display and audio contents. Should never be needed by normal apps.", "description_ptr": "permdesc_manageMediaProjection", "label": "Manage media projection sessions", "label_ptr": "permlab_manageMediaProjection", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "Allows the app to manage network policies and define app-specific rules.", "description_ptr": "permdesc_manageNetworkPolicy", "label": "manage network policy", "label_ptr": "permlab_manageNetworkPolicy", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "Allows the app to manage preferences and permissions for USB devices.", "description_ptr": "permdesc_manageUsb", "label": "manage preferences and permissions for USB devices", "label_ptr": "permlab_manageUsb", "name": "android.permission.MANAGE_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature|system" }, "android.permission.MANAGE_USERS": { "description": "Allows apps to manage users on the device, including query, creation and deletion.", "description_ptr": "permdesc_manageUsers", "label": "manage users", "label_ptr": "permlab_manageUsers", "name": "android.permission.MANAGE_USERS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "Allows the holder to manage the keyphrases for voice hotword detection.\n Should never be needed for normal apps.", "description_ptr": "permdesc_manageVoiceKeyphrases", "label": "manage voice keyphrases", "label_ptr": "permlab_manageVoiceKeyphrases", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MASTER_CLEAR": { "description": "Allows the app to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed apps.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "Allows the app to control media playback and access the media information (title, author...).", "description_ptr": "permdesc_mediaContentControl", "label": "control media playback and metadata access", "label_ptr": "permlab_mediaContentControl", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "Allows the app to directly control audio routing and\n override audio policy decisions.", "description_ptr": "permdesc_modifyAudioRouting", "label": "Audio Routing", "label_ptr": "permlab_modifyAudioRouting", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.AUDIO_SETTINGS", "protectionLevel": "normal" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "Allows the app to modify how network usage is accounted against apps. Not for use by normal apps.", "description_ptr": "permdesc_modifyNetworkAccounting", "label": "modify network usage accounting", "label_ptr": "permlab_modifyNetworkAccounting", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "Allows the holder to modify the system's\n parental controls data. Should never be needed for normal apps.", "description_ptr": "permdesc_modifyParentalControls", "label": "modify parental controls", "label_ptr": "permlab_modifyParentalControls", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the app to control the\n phone features of the device. An app with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the app to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "erase SD Card", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the app to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "access SD Card filesystem", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "system|signature" }, "android.permission.MOVE_PACKAGE": { "description": "Allows the app to move app resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "move app resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "Allows this application to receive information about current Android Beam transfers", "description_ptr": "permdesc_handoverStatus", "label": "Receive Android Beam transfer status", "label_ptr": "permlab_handoverStatus", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the app to modify collected component usage statistics. Not for use by normal apps.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "Allows the app to verify a package is\n installable.", "description_ptr": "permdesc_packageVerificationAgent", "label": "verify packages", "label_ptr": "permlab_packageVerificationAgent", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the app to start CDMA provisioning.\n Malicious apps may unnecessarily start CDMA provisioning.", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "Allows an application to provide a trust agent.", "description_ptr": "permdesc_provide_trust_agent", "label": "Provide a trust agent.", "label_ptr": "permlab_provide_trust_agent", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "normal" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows the app to read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_INPUT_STATE": { "description": "Allows the app to watch the\n keys you press even when interacting with another app (such\n as typing a password). Should never be needed for normal apps.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "Read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "" }, "android.permission.READ_LOGS": { "description": "Allows the app to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "Allows the app to read historical network usage for specific networks and apps.", "description_ptr": "permdesc_readNetworkUsageHistory", "label": "read historical network usage", "label_ptr": "permlab_readNetworkUsageHistory", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "Allows the app to access the precise\n phone states. This permission allows the app to determine the real\n call status, whether a call is active or in the background, call fails,\n precise data connection status and data connection fails.", "description_ptr": "permdesc_readPrecisePhoneState", "label": "read precise phone states", "label_ptr": "permlab_readPrecisePhoneState", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signature|system" }, "android.permission.READ_PROFILE": { "description": "Allows the app to read\n personal profile information stored on your device, such as your name and\n contact information. This means the app can identify you and may send your\n profile information to others.", "description_ptr": "permdesc_readProfile", "label": "read your own contact card", "label_ptr": "permlab_readProfile", "name": "android.permission.READ_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "Allows the app\n to access and sync social updates from you and your friends. Be careful\n when sharing information -- this allows the app to read communications\n between you and your friends on social networks, regardless of\n confidentiality. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_readSocialStream", "label": "read your social stream", "label_ptr": "permlab_readSocialStream", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows the app to read all words,\n names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read terms you added to the dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.USER_DICTIONARY", "protectionLevel": "dangerous" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.REAL_GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature|system" }, "android.permission.REBOOT": { "description": "Allows the app to force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "Allows the app to receive and process Bluetooth MAP\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveBluetoothMap", "label": "receive Bluetooth messages (MAP)", "label_ptr": "permlab_receiveBluetoothMap", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "Allows the app to receive\n and process emergency broadcast messages. This permission is only available\n to system apps.", "description_ptr": "permdesc_receiveEmergencyBroadcast", "label": "receive emergency broadcasts", "label_ptr": "permlab_receiveEmergencyBroadcast", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.RECOVERY": { "description": "Allows an application to interact with the recovery system and system updates.", "description_ptr": "permdesc_recovery", "label": "Interact with update and recovery system", "label_ptr": "permlab_recovery", "name": "android.permission.RECOVERY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "Allows the app to register new telecom connections.", "description_ptr": "permdesc_register_call_provider", "label": "register new telecom connections", "label_ptr": "permlab_register_call_provider", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "Allows the app to manage telecom connections.", "description_ptr": "permdesc_connection_manager", "label": "manage telecom connections", "label_ptr": "permlab_connection_manager", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "Allows the app to register new telecom SIM connections.", "description_ptr": "permdesc_register_sim_subscription", "label": "register new telecom SIM connections", "label_ptr": "permlab_register_sim_subscription", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "system|signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "Allows an application to remove DRM certficates. Should never be needed for normal apps.", "description_ptr": "permdesc_removeDrmCertificates", "label": "remove DRM certificates", "label_ptr": "permlab_removeDrmCertificates", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.REMOVE_TASKS": { "description": "Allows the app to remove\n tasks and kill their apps. Malicious apps may disrupt\n the behavior of other apps.", "description_ptr": "permdesc_removeTasks", "label": "stop running apps", "label_ptr": "permlab_removeTasks", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.APP_INFO", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "Allows the app to retrieve\n the content of the active window. Malicious apps may retrieve\n the entire window content and examine all its text except passwords.", "description_ptr": "permdesc_retrieve_window_content", "label": "retrieve screen content", "label_ptr": "permlab_retrieve_window_content", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signature|system" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "Allows an application to retrieve\n the window token. Malicious apps may perfrom unauthorized interaction with\n the application window impersonating the system.", "description_ptr": "permdesc_retrieveWindowToken", "label": "retrieve window token", "label_ptr": "permlab_retrieveWindowToken", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCORE_NETWORKS": { "description": "Allows the app to\n rank networks and influence which networks the phone should prefer.", "description_ptr": "permdesc_scoreNetworks", "label": "score networks", "label_ptr": "permlab_scoreNetworks", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "signature|system" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "Allows the app to send\n requests to other messaging apps to handle respond-via-message events for incoming\n calls.", "description_ptr": "permdesc_sendRespondViaMessageRequest", "label": "send respond-via-message events", "label_ptr": "permlab_sendRespondViaMessageRequest", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature|system" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.SERIAL_PORT": { "description": "Allows the holder to access serial ports using the SerialManager API.", "description_ptr": "permdesc_serialPort", "label": "access serial ports", "label_ptr": "permlab_serialPort", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows the app to\n monitor and control how the system launches activities.\n Malicious apps may completely compromise the system. This\n permission is only needed for development, never for normal\n use.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all app launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows the app\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal apps.", "description_ptr": "permdesc_setAlwaysFinish", "label": "force background apps to close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows the app to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_DEBUG_APP": { "description": "Allows the app to turn\n on debugging for another app. Malicious apps may use this\n to kill other apps.", "description_ptr": "permdesc_setDebugApp", "label": "enable app debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "Allows the app to modify the calibration parameters of the touch screen. Should never be needed for normal apps.", "description_ptr": "permdesc_setInputCalibration", "label": "change input device calibration", "label_ptr": "permlab_setInputCalibration", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "Allows the app to change\n the keyboard layout. Should never be needed for normal apps.", "description_ptr": "permdesc_setKeyboardLayout", "label": "change keyboard layout", "label_ptr": "permlab_setKeyboardLayout", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "Allows the app to change\n the rotation of the screen at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "Allows the app to change\n the mouse or trackpad pointer speed at any time. Should never be needed for\n normal apps.", "description_ptr": "permdesc_setPointerSpeed", "label": "change pointer speed", "label_ptr": "permlab_setPointerSpeed", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows the app to\n modify your preferred apps. Malicious apps may\n silently change the apps that are run, spoofing your\n existing apps to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred apps", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows the app\n to control the maximum number of processes that will run. Never\n needed for normal apps.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "Allows the app to control the\n screen compatibility mode of other applications. Malicious applications may\n break the behavior of other applications.", "description_ptr": "permdesc_setScreenCompatibility", "label": "set screen compatibility", "label_ptr": "permlab_setScreenCompatibility", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "Allows the app to change the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_CLOCK", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.WALLPAPER", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows the app to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to apps", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "Allows the app to start any activity, regardless of permission protection or exported state.", "description_ptr": "permdesc_startAnyActivity", "label": "start any activity", "label_ptr": "permlab_startAnyActivity", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "Allows the app to use an ActivityManager.RecentTaskInfo\n object to launch a defunct task that was returned from ActivityManager.getRecentTaskList().", "description_ptr": "permdesc_startTasksFromRecents", "label": "start a task from recents", "label_ptr": "permlab_startTasksFromRecents", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR": { "description": "Allows the app to disable the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the app to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another app.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows the app to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows the app to modify\n your currently synced feeds. Malicious apps may change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.DISPLAY", "protectionLevel": "dangerous" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "Allows an application to temporarily\n enable accessibility on the device. Malicious apps may enable accessibility without\n user consent.", "description_ptr": "permdesc_temporary_enable_accessibility", "label": "temporary enable accessibility", "label_ptr": "permlab_temporary_enable_accessibility", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.TRUST_LISTENER": { "description": "Allows an application to listen for changes in trust state.", "description_ptr": "permdesc_trust_listener", "label": "Listen to trust state changes.", "label_ptr": "permlab_trust_listener", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "Allows the app to modify\n collected application operation statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateAppOpsStats", "label": "modify app ops statistics", "label_ptr": "permlab_updateAppOpsStats", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the app to modify\n collected battery statistics. Not for use by normal apps.", "description_ptr": "permdesc_updateBatteryStats", "label": "modify battery statistics", "label_ptr": "permlab_updateBatteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.UPDATE_LOCK": { "description": "Allows the holder to offer information to the system about when would be a good time for a noninteractive reboot to upgrade the device.", "description_ptr": "permdesc_updateLock", "label": "discourage automatic device updates", "label_ptr": "permlab_updateLock", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USER_ACTIVITY": { "description": "Allows the app to reset the display timeout.", "description_ptr": "permdesc_userActivity", "label": "reset display timeout", "label_ptr": "permlab_userActivity", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.USE_CREDENTIALS": { "description": "Allows the app to request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use accounts on the device", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.AFFECTS_BATTERY", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows the app to change network settings and to intercept and inspect all network traffic,\n for example to change the proxy and port of any APN. Malicious apps may monitor, redirect, or modify network\n packets without your knowledge.", "description_ptr": "permdesc_writeApnSettings", "label": "change/intercept network settings and traffic", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature|system" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows the app to modify the\n Google services map. Not for use by normal apps.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|system" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "Allows the app to modify the contents of the internal media storage.", "description_ptr": "permdesc_mediaStorageWrite", "label": "modify/delete internal media storage contents", "label_ptr": "permlab_mediaStorageWrite", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "signature|system" }, "android.permission.WRITE_PROFILE": { "description": "Allows the app to\n change or add to personal profile information stored on your device, such\n as your name and contact information. This means the app can identify you\n and may send your profile information to others.", "description_ptr": "permdesc_writeProfile", "label": "modify your own contact card", "label_ptr": "permlab_writeProfile", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows the app to modify the\n system's secure settings data. Not for use by normal apps.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "signature|system|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.WRITE_SMS": { "description": "Allows the app to write\n to SMS messages stored on your phone or SIM card. Malicious apps\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit your text messages (SMS or MMS)", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "Allows the app to\n display social updates from your friends. Be careful when sharing\n information -- this allows the app to produce messages that may appear to\n come from a friend. Note: this permission may not be enforced on all social\n networks.", "description_ptr": "permdesc_writeSocialStream", "label": "write to your social stream", "label_ptr": "permlab_writeSocialStream", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "android.permission-group.SOCIAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYNC_SETTINGS", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows the app to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "add words to user-defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.WRITE_USER_DICTIONARY", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.DEVICE_ALARMS", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the app to read the\n history of all URLs that the Browser has visited, and all of the Browser's\n bookmarks. Note: this permission may not be enforced by third-party\n browsers or other applications with web browsing capabilities.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read your Web bookmarks and history", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows the\n app to modify the Browser's history or bookmarks stored on your phone.\n This may allow the app to erase or modify Browser data. Note:\n this permission may note be enforced by third-party browsers or other\n applications with web browsing capabilities.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write web bookmarks and history", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.BOOKMARKS", "protectionLevel": "dangerous" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "Allows the app to read your voicemails.", "description_ptr": "permdesc_readVoicemail", "label": "read voicemail", "label_ptr": "permlab_readVoicemail", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "system|signature" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "Allows the app to modify and remove messages from your voicemail inbox.", "description_ptr": "permdesc_writeVoicemail", "label": "write voicemails", "label_ptr": "permlab_writeVoicemail", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "android.permission-group.VOICEMAIL", "protectionLevel": "system|signature" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_23.json ================================================ { "groups": { "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body Sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|system" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "Change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the app to control the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_IMPORTANCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PACKAGE_IMPORTANCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "Manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "Read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "system|signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "Request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "system|signature" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "system|signature" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_24.json ================================================ { "groups": { "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body Sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_EPHEMERAL_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_EPHEMERAL_APPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_IMPORTANCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PACKAGE_IMPORTANCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_25.json ================================================ { "groups": { "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body Sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Allows the app to get your\n approximate location. This location is derived by location services using\n network location sources such as cell towers and Wi-Fi. These location\n services must be turned on and available to your device for the app to\n use them. Apps may use this to determine approximately where you\n are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_EPHEMERAL_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_EPHEMERAL_APPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Allows the app to get your\n precise location using the Global Positioning System (GPS) or network\n location sources such as cell towers and Wi-Fi. These location services\n must be turned on and available to your device for the app to use them.\n Apps may use this to determine where you are, and may consume additional\n battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "Allows the app to take pictures and videos\n with the camera. This permission allows the app to use the camera at any\n time without your confirmation.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_IMPORTANCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PACKAGE_IMPORTANCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "Allows the app to\n read all calendar events stored on your phone, including those of friends\n or co-workers. This may allow the app to share or save your calendar data,\n regardless of confidentiality or sensitivity.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events plus confidential information", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "Allows the app to read\n your phone's call log, including data about incoming and outgoing calls.\n This permission allows apps to save your call log data, and malicious apps\n may share call log data without your knowledge.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "Allows the app to read SMS\n messages stored on your phone or SIM card. This allows the app to read all\n SMS messages, regardless of content or confidentiality.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "Allows the app to record audio with the\n microphone. This permission allows the app to record audio at any time\n without your confirmation.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows the app to draw on top of other\n applications or parts of the user interface. They may interfere with your\n use of the interface in any application, or change what you think you are\n seeing in other applications.", "description_ptr": "permdesc_systemAlertWindow", "label": "draw over other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "Allows the app to\n add, remove, change events that you can modify on your phone, including\n those of friends or co-workers. This may allow the app to send messages\n that appear to come from calendar owners, or modify events without the\n owners' knowledge.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_26.json ================================================ { "groups": { "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body Sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your location based on network sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous|ephemeral" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your location based on GPS or network location sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them. This may increase battery consumption.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous|ephemeral" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|ephemeral" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous|runtime" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous|ephemeral" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|ephemeral|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|ephemeral" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous|ephemeral" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|ephemeral" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|ephemeral" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_27.json ================================================ { "groups": { "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body Sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your location based on network sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your location based on GPS or network location sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them. This may increase battery consumption.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous|runtime" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous|instant" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "com.android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_28.json ================================================ { "groups": { "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CALL_LOG": { "description": "read and write phone call log", "description_ptr": "permgroupdesc_calllog", "icon": "", "icon_ptr": "perm_group_call_log", "label": "Call logs", "label_ptr": "permgrouplab_calllog", "name": "android.permission-group.CALL_LOG" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body Sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCEPT_HANDOVER": { "description": "Allows the app to continue a call which was started in another app.", "description_ptr": "permdesc_acceptHandovers", "label": "", "label_ptr": "", "name": "android.permission.ACCEPT_HANDOVER", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.ACCESS_AMBIENT_LIGHT_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_LIGHT_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your location based on network sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location\n (network-based)", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your location based on GPS or network location sources such as cell towers and Wi-Fi networks. These location services must be turned on and available on your phone for the app to be able to use them. This may increase battery consumption.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location (GPS and\n network-based)", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SHORTCUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHORTCUTS", "permissionGroup": "", "protectionLevel": "signature|textClassifier" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous|runtime" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELEPHONY_DATA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_DATA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELEPHONY_NETWORK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_NETWORK_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXTCLASSIFIER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXTCLASSIFIER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BRIGHTNESS_SLIDER_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRIGHTNESS_SLIDER_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.CAMERA", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_SATURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_SATURATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_HIDDEN_API_CHECKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_HIDDEN_API_CHECKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FOREGROUND_SERVICE": { "description": "Allows the app to make use of foreground services.", "description_ptr": "permdesc_foregroundService", "label": "run foreground service", "label_ptr": "permlab_foregroundService", "name": "android.permission.FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGE_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGE_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_SELF_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_SELF_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.MANAGE_APP_OPS_MODES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_MODES", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUDIO_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUDIO_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIND_INSTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIND_INSTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BLUETOOTH_WHEN_PERMISSION_REVIEW_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BLUETOOTH_WHEN_PERMISSION_REVIEW_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_IPSEC_TUNNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_IPSEC_TUNNELS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SLICE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SLICE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WIFI_WHEN_PERMISSION_REVIEW_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_WHEN_PERMISSION_REVIEW_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_QUIET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_QUIET_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_BYPASS_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_BYPASS_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETUP_WIZARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETUP_WIZARD", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_TRANSACTION_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_TRANSACTION_EVENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_APP_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_APP_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OPEN_APPLICATION_DETAILS_OPEN_BY_DEFAULT_PAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_APPLICATION_DETAILS_OPEN_BY_DEFAULT_PAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.CALL_LOG", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.CALL_LOG", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to\n read data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific individuals. This permission allows apps to save your\n contact data, and malicious apps may share contact data without your\n knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your SD card.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your SD card", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_RUNTIME_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RUNTIME_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYSTEM_UPDATE_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SYSTEM_UPDATE_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.MICROPHONE", "protectionLevel": "dangerous|instant" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECOVER_KEYSTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVER_KEYSTORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.SMS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_HARMFUL_APP_WARNINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_HARMFUL_APP_WARNINGS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHOW_KEYGUARD_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHOW_KEYGUARD_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATSCOMPANION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATSCOMPANION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUSPEND_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUSPEND_APPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BLACKLISTED_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BLACKLISTED_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UNLIMITED_SHORTCUTS_API_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_SHORTCUTS_API_CALLS", "permissionGroup": "", "protectionLevel": "signature|textClassifier" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_BIOMETRIC": { "description": "Allows the app to use biometric hardware for authentication", "description_ptr": "permdesc_useBiometric", "label": "use biometric hardware", "label_ptr": "permlab_useBiometric", "name": "android.permission.USE_BIOMETRIC", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_RESERVED_DISK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_RESERVED_DISK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WATCH_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WATCH_APPOPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.CALENDAR", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.CALL_LOG", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to\n modify the data about your contacts stored on your phone, including the\n frequency with which you've called, emailed, or communicated in other ways\n with specific contacts. This permission allows apps to delete contact\n data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.CONTACTS", "protectionLevel": "dangerous" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your SD card", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.INSTALL_EXISTING_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.INSTALL_EXISTING_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_29.json ================================================ { "groups": { "android.permission-group.ACTIVITY_RECOGNITION": { "description": "access your physical activity", "description_ptr": "permgroupdesc_activityRecognition", "icon": "", "icon_ptr": "perm_group_activity_recognition", "label": "Physical activity", "label_ptr": "permgrouplab_activityRecognition", "name": "android.permission-group.ACTIVITY_RECOGNITION", "request_ptr": "permgrouprequest_activityRecognition" }, "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR", "request_ptr": "permgrouprequest_calendar" }, "android.permission-group.CALL_LOG": { "description": "read and write phone call log", "description_ptr": "permgroupdesc_calllog", "icon": "", "icon_ptr": "perm_group_call_log", "label": "Call logs", "label_ptr": "permgrouplab_calllog", "name": "android.permission-group.CALL_LOG", "request_ptr": "permgrouprequest_calllog" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA", "request_ptr": "permgrouprequest_camera" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS", "request_ptr": "permgrouprequest_contacts" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION", "request_ptr": "permgrouprequest_location" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE", "request_ptr": "permgrouprequest_microphone" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE", "request_ptr": "permgrouprequest_phone" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS", "request_ptr": "permgrouprequest_sensors" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS", "request_ptr": "permgrouprequest_sms" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE", "request_ptr": "permgrouprequest_storage" }, "android.permission-group.UNDEFINED": { "description": "", "description_ptr": "", "icon": "", "icon_ptr": "", "label": "", "label_ptr": "", "name": "android.permission-group.UNDEFINED", "request_ptr": "" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCEPT_HANDOVER": { "description": "Allows the app to continue a call which was started in another app.", "description_ptr": "permdesc_acceptHandovers", "label": "", "label_ptr": "", "name": "android.permission.ACCEPT_HANDOVER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_AMBIENT_LIGHT_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_LIGHT_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_BACKGROUND_LOCATION": { "description": "If this is granted additionally to the approximate or precise location access the app can access the location while running in the background.", "description_ptr": "permdesc_accessBackgroundLocation", "label": "access location in the background", "label_ptr": "permlab_accessBackgroundLocation", "name": "android.permission.ACCESS_BACKGROUND_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your location based on network sources such as cell towers and Wi-Fi networks, but only when the app is in the foreground. These location services must be turned on and available on your phone for the app to be able to use them.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location (network-based) only in the foreground", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your exact location only when it is in the foreground. These location services must be turned on and available on your phone for the app to be able to use them. This may increase battery consumption.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location only in the foreground", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|wellbeing" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MEDIA_LOCATION": { "description": "Allows the app to read locations from your media collection.", "description_ptr": "permdesc_mediaLocation", "label": "read locations from your media collection", "label_ptr": "permlab_mediaLocation", "name": "android.permission.ACCESS_MEDIA_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SHARED_LIBRARIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHARED_LIBRARIES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ACCESS_SHORTCUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHORTCUTS", "permissionGroup": "", "protectionLevel": "signature|appPredictor" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_WIMAX_STATE": { "description": "Allows the app to determine whether\n WiMAX is enabled and information about any WiMAX networks that are\n connected. ", "description_ptr": "permdesc_accessWimaxState", "label": "connect and disconnect from WiMAX", "label_ptr": "permlab_accessWimaxState", "name": "android.permission.ACCESS_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACTIVITY_RECOGNITION": { "description": "This app can recognize your physical activity.", "description_ptr": "permdesc_activityRecognition", "label": "recognize physical activity", "label_ptr": "permlab_activityRecognition", "name": "android.permission.ACTIVITY_RECOGNITION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.AMBIENT_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AMBIENT_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|runtime" }, "android.permission.APPROVE_INCIDENT_REPORTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.APPROVE_INCIDENT_REPORTS", "permissionGroup": "", "protectionLevel": "signature|incidentReportApprover" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_ATTENTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTENTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_REDIRECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_REDIRECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CONTENT_CAPTURE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_CAPTURE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_FINANCIAL_SMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_FINANCIAL_SMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELEPHONY_DATA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_DATA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELEPHONY_NETWORK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_NETWORK_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXTCLASSIFIER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXTCLASSIFIER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BRIGHTNESS_SLIDER_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRIGHTNESS_SLIDER_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.CALL_COMPANION_APP": { "description": "Allows the app to see and control ongoing calls on the\n device. This includes information such as call numbers for calls and the state of the\n calls.", "description_ptr": "permdesc_callCompanionApp", "label": "see and control calls through the system.", "label_ptr": "permlab_callCompanionApp", "name": "android.permission.CALL_COMPANION_APP", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_OPEN_CLOSE_LISTENER": { "description": "This app can receive callbacks when any camera device is being opened (by what application) or closed.", "description_ptr": "permdesc_cameraOpenCloseListener", "label": "Allow an application or service to receive callbacks about camera devices being opened or closed.", "label_ptr": "permlab_cameraOpenCloseListener", "name": "android.permission.CAMERA_OPEN_CLOSE_LISTENER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_MEDIA_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_MEDIA_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIMAX_STATE": { "description": "Allows the app to\n connect the phone to and disconnect the phone from WiMAX networks.", "description_ptr": "permdesc_changeWimaxState", "label": "change WiMAX state", "label_ptr": "permlab_changeWimaxState", "name": "android.permission.CHANGE_WIMAX_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_ALWAYS_ON_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_ALWAYS_ON_VPN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_SATURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_SATURATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_HIDDEN_API_CHECKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_HIDDEN_API_CHECKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ENABLE_TEST_HARNESS_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENABLE_TEST_HARNESS_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FOREGROUND_SERVICE": { "description": "Allows the app to make use of foreground services.", "description_ptr": "permdesc_foregroundService", "label": "run foreground service", "label_ptr": "permlab_foregroundService", "name": "android.permission.FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGE_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGE_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_SELF_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_SELF_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCK_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCK_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APPOPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APP_OPS_MODES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_MODES", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_PREDICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_PREDICTIONS", "permissionGroup": "", "protectionLevel": "signature|appPredictor" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUDIO_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUDIO_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIND_INSTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIND_INSTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC_DIALOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC_DIALOG", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_CAPTURE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_CAPTURE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_SUGGESTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_SUGGESTIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DEBUGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEBUGGING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.MANAGE_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_IPSEC_TUNNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_IPSEC_TUNNELS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SLICE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SLICE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TEST_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TEST_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WIFI_WHEN_WIRELESS_CONSENT_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_WHEN_WIRELESS_CONSENT_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_QUIET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_QUIET_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_DEFAULT_SMS_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEFAULT_SMS_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MONITOR_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_INPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_BYPASS_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_BYPASS_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_CARRIER_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_CARRIER_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_MANAGED_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_MANAGED_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SCAN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SCAN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETUP_WIZARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETUP_WIZARD", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_TRANSACTION_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_TRANSACTION_EVENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_APP_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_APP_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OPEN_APP_OPEN_BY_DEFAULT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_APP_OPEN_BY_DEFAULT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_ROLLBACK_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_ROLLBACK_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.POWER_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.POWER_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CLIPBOARD_IN_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CLIPBOARD_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to read data about your contacts stored on your phone.\n This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your shared storage.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your shared storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_RUNTIME_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RUNTIME_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYSTEM_UPDATE_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SYSTEM_UPDATE_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECOVER_KEYSTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVER_KEYSTORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_DISPLAY_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_DISPLAY_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_PASSWORD_COMPLEXITY": { "description": "Allows the app to learn the screen\n lock complexity level (high, medium, low or none), which indicates the possible range of\n length and type of the screen lock. The app can also suggest to users that they update the\n screen lock to a certain level but users can freely ignore and navigate away. Note that the\n screen lock is not stored in plaintext so the app does not know the exact password.\n ", "description_ptr": "permdesc_requestPasswordComplexity", "label": "request screen lock complexity", "label_ptr": "permlab_requestPasswordComplexity", "name": "android.permission.REQUEST_PASSWORD_COMPLEXITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESET_FACE_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FACE_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVIEW_ACCESSIBILITY_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVIEW_ACCESSIBILITY_SERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_HARMFUL_APP_WARNINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_HARMFUL_APP_WARNINGS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHOW_KEYGUARD_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHOW_KEYGUARD_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SMS_FINANCIAL_TRANSACTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SMS_FINANCIAL_TRANSACTIONS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.START_ACTIVITIES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITIES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier" }, "android.permission.START_ACTIVITY_AS_CALLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITY_AS_CALLER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.START_VIEW_PERMISSION_USAGE": { "description": "Allows the holder to start the permission usage for an app. Should never be needed for normal apps.", "description_ptr": "permdesc_startViewPermissionUsage", "label": "start view permission usage", "label_ptr": "permlab_startViewPermissionUsage", "name": "android.permission.START_VIEW_PERMISSION_USAGE", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.STATSCOMPANION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATSCOMPANION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUSPEND_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUSPEND_APPS", "permissionGroup": "", "protectionLevel": "signature|wellbeing" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BLACKLISTED_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BLACKLISTED_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UNLIMITED_SHORTCUTS_API_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_SHORTCUTS_API_CALLS", "permissionGroup": "", "protectionLevel": "signature|appPredictor" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_BIOMETRIC": { "description": "Allows the app to use biometric hardware for authentication", "description_ptr": "permdesc_useBiometric", "label": "use biometric hardware", "label_ptr": "permlab_useBiometric", "name": "android.permission.USE_BIOMETRIC", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_BIOMETRIC_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_BIOMETRIC_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_FULL_SCREEN_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_FULL_SCREEN_INTENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_RESERVED_DISK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_RESERVED_DISK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WATCH_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WATCH_APPOPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WHITELIST_RESTRICTED_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_RESTRICTED_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to modify the data about your contacts stored on your phone.\n This permission allows apps to delete contact data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write the contents of your shared storage.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your shared storage", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_OBB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_OBB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.INSTALL_EXISTING_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.INSTALL_EXISTING_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_30.json ================================================ { "groups": { "android.permission-group.ACTIVITY_RECOGNITION": { "description": "access your physical activity", "description_ptr": "permgroupdesc_activityRecognition", "icon": "", "icon_ptr": "perm_group_activity_recognition", "label": "Physical activity", "label_ptr": "permgrouplab_activityRecognition", "name": "android.permission-group.ACTIVITY_RECOGNITION" }, "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CALL_LOG": { "description": "read and write phone call log", "description_ptr": "permgroupdesc_calllog", "icon": "", "icon_ptr": "perm_group_call_log", "label": "Call logs", "label_ptr": "permgrouplab_calllog", "name": "android.permission-group.CALL_LOG" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Files and media", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.UNDEFINED": { "description": "", "description_ptr": "", "icon": "", "icon_ptr": "", "label": "", "label_ptr": "", "name": "android.permission-group.UNDEFINED" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCEPT_HANDOVER": { "description": "Allows the app to continue a call which was started in another app.", "description_ptr": "permdesc_acceptHandovers", "label": "", "label_ptr": "", "name": "android.permission.ACCEPT_HANDOVER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_AMBIENT_LIGHT_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_LIGHT_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_BACKGROUND_LOCATION": { "description": "This app can access location at any time, even while the app is not in use.", "description_ptr": "permdesc_accessBackgroundLocation", "label": "access location in the background", "label_ptr": "permlab_accessBackgroundLocation", "name": "android.permission.ACCESS_BACKGROUND_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location only in the foreground", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CONTEXT_HUB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTEXT_HUB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location only in the foreground", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|wellbeing" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOCUS_ID_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOCUS_ID_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|appPredictor" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MEDIA_LOCATION": { "description": "Allows the app to read locations from your media collection.", "description_ptr": "permdesc_mediaLocation", "label": "read locations from your media collection", "label_ptr": "permlab_mediaLocation", "name": "android.permission.ACCESS_MEDIA_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MESSAGES_ON_ICC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MESSAGES_ON_ICC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_SHARED_LIBRARIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHARED_LIBRARIES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ACCESS_SHORTCUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHORTCUTS", "permissionGroup": "", "protectionLevel": "signature|appPredictor" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_TV_DESCRAMBLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_DESCRAMBLER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_TUNER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_TUNER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VIBRATOR_STATE": { "description": "Allows the app to access the vibrator state.", "description_ptr": "permdesc_vibrator_state", "label": "Allows the app to access the vibrator state.", "label_ptr": "permdesc_vibrator_state", "name": "android.permission.ACCESS_VIBRATOR_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACTIVITY_RECOGNITION": { "description": "This app can recognize your physical activity.", "description_ptr": "permdesc_activityRecognition", "label": "recognize physical activity", "label_ptr": "permlab_activityRecognition", "name": "android.permission.ACTIVITY_RECOGNITION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADD_TRUSTED_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADD_TRUSTED_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.AMBIENT_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AMBIENT_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|runtime" }, "android.permission.APPROVE_INCIDENT_REPORTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.APPROVE_INCIDENT_REPORTS", "permissionGroup": "", "protectionLevel": "signature|incidentReportApprover" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY_BY_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY_BY_PORT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_ATTENTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTENTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_REDIRECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_REDIRECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CELL_BROADCAST_SERVICE": { "description": "Allows the app to bind to the\n cell broadcast module in order to forward cell broadcast messages\n as they are received. Cell broadcast alerts are delivered in some\n locations to warn you of emergency situations. Malicious apps may\n interfere with the performance or operation of your device when an\n emergency cell broadcast is received.", "description_ptr": "permdesc_bindCellBroadcastService", "label": "Forward cell broadcast messages", "label_ptr": "permlab_bindCellBroadcastService", "name": "android.permission.BIND_CELL_BROADCAST_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CONTENT_CAPTURE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_CAPTURE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTROLS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_EXTERNAL_STORAGE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXTERNAL_STORAGE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELEPHONY_DATA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_DATA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELEPHONY_NETWORK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_NETWORK_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXTCLASSIFIER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXTCLASSIFIER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BRIGHTNESS_SLIDER_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRIGHTNESS_SLIDER_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.CALL_COMPANION_APP": { "description": "Allows the app to see and control ongoing calls on the\n device. This includes information such as call numbers for calls and the state of the\n calls.", "description_ptr": "permdesc_callCompanionApp", "label": "see and control calls through the system.", "label_ptr": "permlab_callCompanionApp", "name": "android.permission.CALL_COMPANION_APP", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_OPEN_CLOSE_LISTENER": { "description": "This app can receive callbacks when any camera device is being opened (by what application) or closed.", "description_ptr": "permdesc_cameraOpenCloseListener", "label": "Allow an application or service to receive callbacks about camera devices being opened or closed.", "label_ptr": "permlab_cameraOpenCloseListener", "name": "android.permission.CAMERA_OPEN_CLOSE_LISTENER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_MEDIA_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_MEDIA_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_ALWAYS_ON_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_ALWAYS_ON_VPN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DEVICE_LIGHTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_LIGHTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_SATURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_SATURATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_HIDDEN_API_CHECKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_HIDDEN_API_CHECKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ENABLE_TEST_HARNESS_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENABLE_TEST_HARNESS_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ENTER_CAR_MODE_PRIORITIZED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENTER_CAR_MODE_PRIORITIZED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS": { "description": "Exempt the app from restrictions to record audio.", "description_ptr": "permdesc_exemptFromAudioRecordRestrictions", "label": "exempt from audio record restrictions", "label_ptr": "permlab_exemptFromAudioRecordRestrictions", "name": "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FOREGROUND_SERVICE": { "description": "Allows the app to make use of foreground services.", "description_ptr": "permdesc_foregroundService", "label": "run foreground service", "label_ptr": "permlab_foregroundService", "name": "android.permission.FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HANDLE_CAR_MODE_CHANGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HANDLE_CAR_MODE_CHANGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGE_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGE_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_SELF_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_SELF_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.LOADER_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOADER_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCK_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCK_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOG_COMPAT_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOG_COMPAT_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APPOPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APP_OPS_MODES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_MODES", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_PREDICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_PREDICTIONS", "permissionGroup": "", "protectionLevel": "signature|appPredictor" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUDIO_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUDIO_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIND_INSTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIND_INSTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC_DIALOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC_DIALOG", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_CAPTURE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_CAPTURE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_SUGGESTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_SUGGESTIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CRATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CRATES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DEBUGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEBUGGING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.MANAGE_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_EXTERNAL_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_FACTORY_RESET_PROTECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FACTORY_RESET_PROTECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_IPSEC_TUNNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_IPSEC_TUNNELS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SLICE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SLICE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TEST_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TEST_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MARK_DEVICE_ORGANIZATION_OWNED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MARK_DEVICE_ORGANIZATION_OWNED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_RESOURCE_OVERRIDE_PID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_RESOURCE_OVERRIDE_PID", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_QUIET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_QUIET_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged|wellbeing|development" }, "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_DEFAULT_SMS_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEFAULT_SMS_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MONITOR_DEVICE_CONFIG_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEVICE_CONFIG_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_INPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_AIRPLANE_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_AIRPLANE_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_BYPASS_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_BYPASS_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_CARRIER_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_CARRIER_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_FACTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_FACTORY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_MANAGED_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_MANAGED_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SCAN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SCAN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETUP_WIZARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETUP_WIZARD", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_STATS_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STATS_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_PREFERRED_PAYMENT_INFO": { "description": "Allows the app to get preferred nfc payment service information like\n registered aids and route destination.", "description_ptr": "permdesc_preferredPaymentInfo", "label": "Preferred NFC Payment Service Information", "label_ptr": "permlab_preferredPaymentInfo", "name": "android.permission.NFC_PREFERRED_PAYMENT_INFO", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_TRANSACTION_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_TRANSACTION_EVENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_APP_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_APP_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OBSERVE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OPEN_APP_OPEN_BY_DEFAULT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_APP_OPEN_BY_DEFAULT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_ROLLBACK_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_ROLLBACK_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop|retailDemo" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEEK_DROPBOX_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEEK_DROPBOX_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.POWER_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.POWER_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_ALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_ALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RADIO_SCAN_WITHOUT_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RADIO_SCAN_WITHOUT_LOCATION", "permissionGroup": "", "protectionLevel": "signature|companion" }, "android.permission.READ_ACTIVE_EMERGENCY_SESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_ACTIVE_EMERGENCY_SESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CARRIER_APP_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CARRIER_APP_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CLIPBOARD_IN_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CLIPBOARD_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to read data about your contacts stored on your phone.\n Apps will also have access to the accounts on your phone that have created contacts.\n This may include accounts created by apps you have installed.\n This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your shared storage.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your shared storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_RUNTIME_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RUNTIME_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYSTEM_UPDATE_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SYSTEM_UPDATE_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECOVER_KEYSTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVER_KEYSTORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_STATS_PULL_ATOM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_STATS_PULL_ATOM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_DISPLAY_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_DISPLAY_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_PASSWORD_COMPLEXITY": { "description": "Allows the app to learn the screen\n lock complexity level (high, medium, low or none), which indicates the possible range of\n length and type of the screen lock. The app can also suggest to users that they update the\n screen lock to a certain level but users can freely ignore and navigate away. Note that the\n screen lock is not stored in plaintext so the app does not know the exact password.\n ", "description_ptr": "permdesc_requestPasswordComplexity", "label": "request screen lock complexity", "label_ptr": "permlab_requestPasswordComplexity", "name": "android.permission.REQUEST_PASSWORD_COMPLEXITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESET_FACE_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FACE_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTORE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTORE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVIEW_ACCESSIBILITY_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVIEW_ACCESSIBILITY_SERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_HARMFUL_APP_WARNINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_HARMFUL_APP_WARNINGS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_INITIAL_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INITIAL_LOCK", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHOW_KEYGUARD_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHOW_KEYGUARD_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SMS_FINANCIAL_TRANSACTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SMS_FINANCIAL_TRANSACTIONS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.START_ACTIVITIES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITIES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier" }, "android.permission.START_ACTIVITY_AS_CALLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITY_AS_CALLER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.START_VIEW_PERMISSION_USAGE": { "description": "Allows the holder to start the permission usage for an app. Should never be needed for normal apps.", "description_ptr": "permdesc_startViewPermissionUsage", "label": "start view permission usage", "label_ptr": "permlab_startViewPermissionUsage", "name": "android.permission.START_VIEW_PERMISSION_USAGE", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.STATSCOMPANION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATSCOMPANION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUSPEND_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUSPEND_APPS", "permissionGroup": "", "protectionLevel": "signature|wellbeing" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|development" }, "android.permission.SYSTEM_CAMERA": { "description": "This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well", "description_ptr": "permdesc_systemCamera", "label": "Allow an application or service access to system cameras to take pictures and videos", "label_ptr": "permlab_systemCamera", "name": "android.permission.SYSTEM_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "system|signature" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BLACKLISTED_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BLACKLISTED_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_SHELL_BUGREPORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_BUGREPORT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TUNER_RESOURCE_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TUNER_RESOURCE_ACCESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UNLIMITED_SHORTCUTS_API_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_SHORTCUTS_API_CALLS", "permissionGroup": "", "protectionLevel": "signature|appPredictor" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPGRADE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPGRADE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_BIOMETRIC": { "description": "Allows the app to use biometric hardware for authentication", "description_ptr": "permdesc_useBiometric", "label": "use biometric hardware", "label_ptr": "permlab_useBiometric", "name": "android.permission.USE_BIOMETRIC", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_BIOMETRIC_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_BIOMETRIC_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_FULL_SCREEN_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_FULL_SCREEN_INTENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_RESERVED_DISK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_RESERVED_DISK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIBRATE_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIBRATE_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WATCH_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WATCH_APPOPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WHITELIST_RESTRICTED_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_RESTRICTED_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to modify the data about your contacts stored on your phone.\n This permission allows apps to delete contact data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write the contents of your shared storage.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your shared storage", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_OBB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_OBB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.INSTALL_EXISTING_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.INSTALL_EXISTING_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.permission.USE_INSTALLER_V2": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_INSTALLER_V2", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_31.json ================================================ { "groups": { "android.permission-group.ACTIVITY_RECOGNITION": { "description": "access your physical activity", "description_ptr": "permgroupdesc_activityRecognition", "icon": "", "icon_ptr": "perm_group_activity_recognition", "label": "Physical activity", "label_ptr": "permgrouplab_activityRecognition", "name": "android.permission-group.ACTIVITY_RECOGNITION" }, "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CALL_LOG": { "description": "read and write phone call log", "description_ptr": "permgroupdesc_calllog", "icon": "", "icon_ptr": "perm_group_call_log", "label": "Call logs", "label_ptr": "permgrouplab_calllog", "name": "android.permission-group.CALL_LOG" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NEARBY_DEVICES": { "description": "discover and connect to nearby devices", "description_ptr": "permgroupdesc_nearby_devices", "icon": "", "icon_ptr": "perm_group_nearby_devices", "label": "Nearby devices", "label_ptr": "permgrouplab_nearby_devices", "name": "android.permission-group.NEARBY_DEVICES" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Files and media", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.UNDEFINED": { "description": "", "description_ptr": "", "icon": "", "icon_ptr": "", "label": "", "label_ptr": "", "name": "android.permission-group.UNDEFINED" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCEPT_HANDOVER": { "description": "Allows the app to continue a call which was started in another app.", "description_ptr": "permdesc_acceptHandovers", "label": "", "label_ptr": "", "name": "android.permission.ACCEPT_HANDOVER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_AMBIENT_LIGHT_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_LIGHT_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_BACKGROUND_LOCATION": { "description": "This app can access location at any time, even while the app is not in use.", "description_ptr": "permdesc_accessBackgroundLocation", "label": "access location in the background", "label_ptr": "permlab_accessBackgroundLocation", "name": "android.permission.ACCESS_BACKGROUND_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_BLOBS_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BLOBS_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location only in the foreground", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CONTEXT_HUB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTEXT_HUB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location only in the foreground", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|role" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOCUS_ID_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOCUS_ID_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MEDIA_LOCATION": { "description": "Allows the app to read locations from your media collection.", "description_ptr": "permdesc_mediaLocation", "label": "read locations from your media collection", "label_ptr": "permlab_mediaLocation", "name": "android.permission.ACCESS_MEDIA_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MESSAGES_ON_ICC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MESSAGES_ON_ICC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ACCESS_SHARED_LIBRARIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHARED_LIBRARIES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ACCESS_SHORTCUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHORTCUTS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_TUNED_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TUNED_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_DESCRAMBLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_DESCRAMBLER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_TUNER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_TUNER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VIBRATOR_STATE": { "description": "Allows the app to access the vibrator state.", "description_ptr": "permdesc_vibrator_state", "label": "Allows the app to access the vibrator state.", "label_ptr": "permdesc_vibrator_state", "name": "android.permission.ACCESS_VIBRATOR_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACTIVITY_RECOGNITION": { "description": "This app can recognize your physical activity.", "description_ptr": "permdesc_activityRecognition", "label": "recognize physical activity", "label_ptr": "permlab_activityRecognition", "name": "android.permission.ACTIVITY_RECOGNITION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADD_TRUSTED_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADD_TRUSTED_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.AMBIENT_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AMBIENT_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|runtime" }, "android.permission.APPROVE_INCIDENT_REPORTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.APPROVE_INCIDENT_REPORTS", "permissionGroup": "", "protectionLevel": "signature|incidentReportApprover" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASSOCIATE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKGROUND_CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_backgroundCamera", "label": "take pictures and videos in the background", "label_ptr": "permlab_backgroundCamera", "name": "android.permission.BACKGROUND_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_PREDICTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_PREDICTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_ATTENTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTENTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_REDIRECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_REDIRECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CELL_BROADCAST_SERVICE": { "description": "Allows the app to bind to the\n cell broadcast module in order to forward cell broadcast messages\n as they are received. Cell broadcast alerts are delivered in some\n locations to warn you of emergency situations. Malicious apps may\n interfere with the performance or operation of your device when an\n emergency cell broadcast is received.", "description_ptr": "permdesc_bindCellBroadcastService", "label": "Forward cell broadcast messages", "label_ptr": "permlab_bindCellBroadcastService", "name": "android.permission.BIND_CELL_BROADCAST_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CONTENT_CAPTURE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_CAPTURE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTROLS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DISPLAY_HASHING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DISPLAY_HASHING_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_EXTERNAL_STORAGE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXTERNAL_STORAGE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_GBA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_GBA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_HOTWORD_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_HOTWORD_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_MUSIC_RECOGNITION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MUSIC_RECOGNITION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESUME_ON_REBOOT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESUME_ON_REBOOT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROTATION_RESOLVER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROTATION_RESOLVER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELEPHONY_DATA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_DATA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELEPHONY_NETWORK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_NETWORK_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXTCLASSIFIER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXTCLASSIFIER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRANSLATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRANSLATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADVERTISE": { "description": "Allows the app to advertise to nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_advertise", "label": "advertise to nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_advertise", "name": "android.permission.BLUETOOTH_ADVERTISE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_CONNECT": { "description": "Allows the app to connect to paired Bluetooth devices", "description_ptr": "permdesc_bluetooth_connect", "label": "connect to paired Bluetooth devices", "label_ptr": "permlab_bluetooth_connect", "name": "android.permission.BLUETOOTH_CONNECT", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_SCAN": { "description": "Allows the app to discover and pair nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_scan", "label": "discover and pair nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_scan", "name": "android.permission.BLUETOOTH_SCAN", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BRIGHTNESS_SLIDER_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRIGHTNESS_SLIDER_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BYPASS_ROLE_QUALIFICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BYPASS_ROLE_QUALIFICATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.CALL_COMPANION_APP": { "description": "Allows the app to see and control ongoing calls on the\n device. This includes information such as call numbers for calls and the state of the\n calls.", "description_ptr": "permdesc_callCompanionApp", "label": "see and control calls through the system.", "label_ptr": "permlab_callCompanionApp", "name": "android.permission.CALL_COMPANION_APP", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera while the app is in use.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAMERA_OPEN_CLOSE_LISTENER": { "description": "This app can receive callbacks when any camera device is being opened (by what application) or closed.", "description_ptr": "permdesc_cameraOpenCloseListener", "label": "Allow an application or service to receive callbacks about camera devices being opened or closed.", "label_ptr": "permlab_cameraOpenCloseListener", "name": "android.permission.CAMERA_OPEN_CLOSE_LISTENER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_BLACKOUT_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_BLACKOUT_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_MEDIA_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_MEDIA_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_TUNER_AUDIO_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TUNER_AUDIO_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CLEAR_FREEZE_PERIOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_FREEZE_PERIOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_ALWAYS_ON_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_ALWAYS_ON_VPN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DEVICE_LIGHTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_LIGHTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DEVICE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_SATURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_SATURATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_UI_TRACING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_UI_TRACING", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_HIDDEN_API_CHECKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_HIDDEN_API_CHECKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "internal|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ENABLE_TEST_HARNESS_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENABLE_TEST_HARNESS_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ENTER_CAR_MODE_PRIORITIZED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENTER_CAR_MODE_PRIORITIZED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS": { "description": "Exempt the app from restrictions to record audio.", "description_ptr": "permdesc_exemptFromAudioRecordRestrictions", "label": "exempt from audio record restrictions", "label_ptr": "permlab_exemptFromAudioRecordRestrictions", "name": "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FOREGROUND_SERVICE": { "description": "Allows the app to make use of foreground services.", "description_ptr": "permdesc_foregroundService", "label": "run foreground service", "label_ptr": "permlab_foregroundService", "name": "android.permission.FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PEOPLE_TILE_PREVIEW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PEOPLE_TILE_PREVIEW", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HANDLE_CAR_MODE_CHANGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HANDLE_CAR_MODE_CHANGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.HIDE_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.HIGH_SAMPLING_RATE_SENSORS": { "description": "Allows the app to sample sensor data at a rate greater than 200 Hz", "description_ptr": "permdesc_highSamplingRateSensors", "label": "access sensor data at a high sampling rate", "label_ptr": "permlab_highSamplingRateSensors", "name": "android.permission.HIGH_SAMPLING_RATE_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INPUT_CONSUMER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INPUT_CONSUMER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGE_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGE_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_SELF_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_SELF_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_TEST_ONLY_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_TEST_ONLY_PACKAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KEEP_UNINSTALLED_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEEP_UNINSTALLED_PACKAGES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.LOADER_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOADER_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.LOCK_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCK_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOG_COMPAT_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOG_COMPAT_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature|setup|recents" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACTIVITY_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_TASKS", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MANAGE_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APPOPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APP_HIBERNATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_HIBERNATION", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_OPS_MODES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_MODES", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_PREDICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_PREDICTIONS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUDIO_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUDIO_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIND_INSTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIND_INSTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC_DIALOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC_DIALOG", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_CAPTURE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_CAPTURE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_SUGGESTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_SUGGESTIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CRATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CRATES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DEBUGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEBUGGING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.MANAGE_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_EXTERNAL_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_FACTORY_RESET_PROTECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FACTORY_RESET_PROTECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_GAME_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_GAME_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_HOTWORD_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_HOTWORD_DETECTION", "permissionGroup": "", "protectionLevel": "internal|preinstalled" }, "android.permission.MANAGE_IPSEC_TUNNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_IPSEC_TUNNELS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA", "permissionGroup": "", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_MUSIC_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MUSIC_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATION_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATION_LISTENERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONGOING_CALLS": { "description": "Allows an app to see details about ongoing calls\n on your device and to control these calls.", "description_ptr": "permdesc_manageOngoingCalls", "label": "Manage ongoing calls", "label_ptr": "permlab_manageOngoingCalls", "name": "android.permission.MANAGE_ONGOING_CALLS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ROTATION_RESOLVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROTATION_RESOLVER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SEARCH_UI": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SEARCH_UI", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_SENSORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_SLICE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SLICE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SMARTSPACE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SMARTSPACE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_SPEECH_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SPEECH_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TEST_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TEST_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_TIME_AND_ZONE_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TIME_AND_ZONE_DETECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TOAST_RATE_LIMITING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TOAST_RATE_LIMITING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_UI_TRANSLATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_UI_TRANSLATION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WIFI_COUNTRY_CODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_COUNTRY_CODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MARK_DEVICE_ORGANIZATION_OWNED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MARK_DEVICE_ORGANIZATION_OWNED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_RESOURCE_OVERRIDE_PID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_RESOURCE_OVERRIDE_PID", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_QUIET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_QUIET_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_DEFAULT_SMS_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEFAULT_SMS_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MONITOR_DEVICE_CONFIG_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEVICE_CONFIG_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_INPUT", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_AIRPLANE_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_AIRPLANE_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_BYPASS_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_BYPASS_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_CARRIER_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_CARRIER_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_FACTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_FACTORY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_MANAGED_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_MANAGED_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SCAN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SCAN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETUP_WIZARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETUP_WIZARD", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_STATS_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STATS_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_PREFERRED_PAYMENT_INFO": { "description": "Allows the app to get preferred nfc payment service information like\n registered aids and route destination.", "description_ptr": "permdesc_preferredPaymentInfo", "label": "Preferred NFC Payment Service Information", "label_ptr": "permlab_preferredPaymentInfo", "name": "android.permission.NFC_PREFERRED_PAYMENT_INFO", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_TRANSACTION_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_TRANSACTION_EVENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_APP_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_APP_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OBSERVE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OBSERVE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role|installer" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_ROLLBACK_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_ROLLBACK_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop|retailDemo" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEEK_DROPBOX_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEEK_DROPBOX_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_IMS_SINGLE_REGISTRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_IMS_SINGLE_REGISTRATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.POWER_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.POWER_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_ALL_PACKAGES": { "description": "Allows an app to see all installed packages.", "description_ptr": "permdesc_queryAllPackages", "label": "query all packages", "label_ptr": "permlab_queryAllPackages", "name": "android.permission.QUERY_ALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.QUERY_AUDIO_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_AUDIO_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RADIO_SCAN_WITHOUT_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RADIO_SCAN_WITHOUT_LOCATION", "permissionGroup": "", "protectionLevel": "signature|companion" }, "android.permission.READ_ACTIVE_EMERGENCY_SESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_ACTIVE_EMERGENCY_SESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CARRIER_APP_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CARRIER_APP_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CLIPBOARD_IN_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CLIPBOARD_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to read data about your contacts stored on your phone.\n Apps will also have access to the accounts on your phone that have created contacts.\n This may include accounts created by apps you have installed.\n This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DREAM_SUPPRESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_SUPPRESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your shared storage.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your shared storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.READ_GLOBAL_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_GLOBAL_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NEARBY_STREAMING_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NEARBY_STREAMING_POLICY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PEOPLE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PEOPLE_DATA", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_PROJECTION_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROJECTION_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_RUNTIME_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RUNTIME_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYSTEM_UPDATE_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SYSTEM_UPDATE_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone while the app is in use.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.RECORD_BACKGROUND_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordBackgroundAudio", "label": "record audio in the background", "label_ptr": "permlab_recordBackgroundAudio", "name": "android.permission.RECORD_BACKGROUND_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECOVER_KEYSTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVER_KEYSTORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_STATS_PULL_ATOM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_STATS_PULL_ATOM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_DISPLAY_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_DISPLAY_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature|documenter|recents" }, "android.permission.RENOUNCE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RENOUNCE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_PROFILE_WATCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_WATCH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_PASSWORD_COMPLEXITY": { "description": "Allows the app to learn the screen\n lock complexity level (high, medium, low or none), which indicates the possible range of\n length and type of the screen lock. The app can also suggest to users that they update the\n screen lock to a certain level but users can freely ignore and navigate away. Note that the\n screen lock is not stored in plaintext so the app does not know the exact password.\n ", "description_ptr": "permdesc_requestPasswordComplexity", "label": "request screen lock complexity", "label_ptr": "permlab_requestPasswordComplexity", "name": "android.permission.REQUEST_PASSWORD_COMPLEXITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESET_APP_ERRORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_APP_ERRORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTART_WIFI_SUBSYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTART_WIFI_SUBSYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESTORE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTORE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVIEW_ACCESSIBILITY_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVIEW_ACCESSIBILITY_SERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.ROTATE_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ROTATE_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCHEDULE_EXACT_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCHEDULE_EXACT_ALARM", "permissionGroup": "", "protectionLevel": "normal|appop" }, "android.permission.SCHEDULE_PRIORITIZED_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCHEDULE_PRIORITIZED_ALARM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_CLIP_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_CLIP_SOURCE", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_HARMFUL_APP_WARNINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_HARMFUL_APP_WARNINGS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_INITIAL_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INITIAL_LOCK", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHOW_KEYGUARD_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHOW_KEYGUARD_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SIGNAL_REBOOT_READINESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_REBOOT_READINESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SMS_FINANCIAL_TRANSACTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SMS_FINANCIAL_TRANSACTIONS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.START_ACTIVITIES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITIES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier" }, "android.permission.START_ACTIVITY_AS_CALLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITY_AS_CALLER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier|role" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.START_VIEW_PERMISSION_USAGE": { "description": "Allows the holder to start the permission usage for an app. Should never be needed for normal apps.", "description_ptr": "permdesc_startViewPermissionUsage", "label": "start view permission usage", "label_ptr": "permlab_startViewPermissionUsage", "name": "android.permission.START_VIEW_PERMISSION_USAGE", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.STATSCOMPANION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATSCOMPANION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_EXTERNAL_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_EXTERNAL_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUSPEND_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUSPEND_APPS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|setup|appop|installer|pre23|development" }, "android.permission.SYSTEM_APPLICATION_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SYSTEM_APPLICATION_OVERLAY", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.SYSTEM_CAMERA": { "description": "This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well", "description_ptr": "permdesc_systemCamera", "label": "Allow an application or service access to system cameras to take pictures and videos", "label_ptr": "permlab_systemCamera", "name": "android.permission.SYSTEM_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "system|signature|role" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BLACKLISTED_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BLACKLISTED_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_SHELL_BUGREPORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_BUGREPORT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TUNER_RESOURCE_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TUNER_RESOURCE_ACCESS", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UNLIMITED_SHORTCUTS_API_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_SHORTCUTS_API_CALLS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.UNLIMITED_TOASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_TOASTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer|role" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_FONTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_FONTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPGRADE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPGRADE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_BIOMETRIC": { "description": "Allows the app to use biometric hardware for authentication", "description_ptr": "permdesc_useBiometric", "label": "use biometric hardware", "label_ptr": "permlab_useBiometric", "name": "android.permission.USE_BIOMETRIC", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_BIOMETRIC_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_BIOMETRIC_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_FULL_SCREEN_INTENT": { "description": "Allows the app to display notifications as full screen activities on a locked device", "description_ptr": "permdesc_fullScreenIntent", "label": "display notifications as full screen activities on a locked device", "label_ptr": "permlab_fullScreenIntent", "name": "android.permission.USE_FULL_SCREEN_INTENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.USE_RESERVED_DISK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_RESERVED_DISK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.UWB_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UWB_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UWB_RANGING": { "description": "Allow the app to determine relative position between nearby Ultra-Wideband devices", "description_ptr": "permdesc_uwb_ranging", "label": "determine relative position between nearby Ultra-Wideband devices", "label_ptr": "permlab_uwb_ranging", "name": "android.permission.UWB_RANGING", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIBRATE_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIBRATE_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.VIRTUAL_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIRTUAL_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WATCH_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WATCH_APPOPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WHITELIST_RESTRICTED_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_RESTRICTED_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to modify the data about your contacts stored on your phone.\n This permission allows apps to delete contact data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write the contents of your shared storage.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your shared storage", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_OBB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_OBB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.INSTALL_EXISTING_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.INSTALL_EXISTING_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.permission.USE_INSTALLER_V2": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_INSTALLER_V2", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.permission.USE_SYSTEM_DATA_LOADERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_SYSTEM_DATA_LOADERS", "permissionGroup": "", "protectionLevel": "signature" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_32.json ================================================ { "groups": { "android.permission-group.ACTIVITY_RECOGNITION": { "description": "access your physical activity", "description_ptr": "permgroupdesc_activityRecognition", "icon": "", "icon_ptr": "perm_group_activity_recognition", "label": "Physical activity", "label_ptr": "permgrouplab_activityRecognition", "name": "android.permission-group.ACTIVITY_RECOGNITION" }, "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CALL_LOG": { "description": "read and write phone call log", "description_ptr": "permgroupdesc_calllog", "icon": "", "icon_ptr": "perm_group_call_log", "label": "Call logs", "label_ptr": "permgrouplab_calllog", "name": "android.permission-group.CALL_LOG" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NEARBY_DEVICES": { "description": "discover and connect to nearby devices", "description_ptr": "permgroupdesc_nearby_devices", "icon": "", "icon_ptr": "perm_group_nearby_devices", "label": "Nearby devices", "label_ptr": "permgrouplab_nearby_devices", "name": "android.permission-group.NEARBY_DEVICES" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access photos, media, and files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Files and media", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.UNDEFINED": { "description": "", "description_ptr": "", "icon": "", "icon_ptr": "", "label": "", "label_ptr": "", "name": "android.permission-group.UNDEFINED" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCEPT_HANDOVER": { "description": "Allows the app to continue a call which was started in another app.", "description_ptr": "permdesc_acceptHandovers", "label": "", "label_ptr": "", "name": "android.permission.ACCEPT_HANDOVER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_AMBIENT_LIGHT_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_LIGHT_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_BACKGROUND_LOCATION": { "description": "This app can access location at any time, even while the app is not in use.", "description_ptr": "permdesc_accessBackgroundLocation", "label": "access location in the background", "label_ptr": "permlab_accessBackgroundLocation", "name": "android.permission.ACCESS_BACKGROUND_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_BLOBS_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BLOBS_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location only in the foreground", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CONTEXT_HUB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTEXT_HUB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location only in the foreground", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|role" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOCUS_ID_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOCUS_ID_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MEDIA_LOCATION": { "description": "Allows the app to read locations from your media collection.", "description_ptr": "permdesc_mediaLocation", "label": "read locations from your media collection", "label_ptr": "permlab_mediaLocation", "name": "android.permission.ACCESS_MEDIA_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MESSAGES_ON_ICC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MESSAGES_ON_ICC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ACCESS_SHARED_LIBRARIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHARED_LIBRARIES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ACCESS_SHORTCUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHORTCUTS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_TUNED_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TUNED_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_DESCRAMBLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_DESCRAMBLER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_TUNER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_TUNER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VIBRATOR_STATE": { "description": "Allows the app to access the vibrator state.", "description_ptr": "permdesc_vibrator_state", "label": "Allows the app to access the vibrator state.", "label_ptr": "permdesc_vibrator_state", "name": "android.permission.ACCESS_VIBRATOR_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACTIVITY_RECOGNITION": { "description": "This app can recognize your physical activity.", "description_ptr": "permdesc_activityRecognition", "label": "recognize physical activity", "label_ptr": "permlab_activityRecognition", "name": "android.permission.ACTIVITY_RECOGNITION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADD_TRUSTED_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADD_TRUSTED_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ALLOW_SLIPPERY_TOUCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_SLIPPERY_TOUCHES", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.AMBIENT_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AMBIENT_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|runtime" }, "android.permission.APPROVE_INCIDENT_REPORTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.APPROVE_INCIDENT_REPORTS", "permissionGroup": "", "protectionLevel": "signature|incidentReportApprover" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASSOCIATE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKGROUND_CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_backgroundCamera", "label": "take pictures and videos in the background", "label_ptr": "permlab_backgroundCamera", "name": "android.permission.BACKGROUND_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_PREDICTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_PREDICTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_ATTENTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTENTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_REDIRECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_REDIRECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CELL_BROADCAST_SERVICE": { "description": "Allows the app to bind to the\n cell broadcast module in order to forward cell broadcast messages\n as they are received. Cell broadcast alerts are delivered in some\n locations to warn you of emergency situations. Malicious apps may\n interfere with the performance or operation of your device when an\n emergency cell broadcast is received.", "description_ptr": "permdesc_bindCellBroadcastService", "label": "Forward cell broadcast messages", "label_ptr": "permlab_bindCellBroadcastService", "name": "android.permission.BIND_CELL_BROADCAST_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CONTENT_CAPTURE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_CAPTURE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTROLS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DISPLAY_HASHING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DISPLAY_HASHING_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_EXTERNAL_STORAGE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXTERNAL_STORAGE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_GBA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_GBA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_HOTWORD_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_HOTWORD_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_MUSIC_RECOGNITION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MUSIC_RECOGNITION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESUME_ON_REBOOT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESUME_ON_REBOOT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROTATION_RESOLVER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROTATION_RESOLVER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELEPHONY_DATA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_DATA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELEPHONY_NETWORK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_NETWORK_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXTCLASSIFIER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXTCLASSIFIER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRANSLATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRANSLATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADVERTISE": { "description": "Allows the app to advertise to nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_advertise", "label": "advertise to nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_advertise", "name": "android.permission.BLUETOOTH_ADVERTISE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_CONNECT": { "description": "Allows the app to connect to paired Bluetooth devices", "description_ptr": "permdesc_bluetooth_connect", "label": "connect to paired Bluetooth devices", "label_ptr": "permlab_bluetooth_connect", "name": "android.permission.BLUETOOTH_CONNECT", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_SCAN": { "description": "Allows the app to discover and pair nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_scan", "label": "discover and pair nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_scan", "name": "android.permission.BLUETOOTH_SCAN", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access data from sensors\n that monitor your physical condition, such as your heart rate.", "description_ptr": "permdesc_bodySensors", "label": "access body sensors (like heart rate monitors)\n ", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BRIGHTNESS_SLIDER_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRIGHTNESS_SLIDER_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BYPASS_ROLE_QUALIFICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BYPASS_ROLE_QUALIFICATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.CALL_COMPANION_APP": { "description": "Allows the app to see and control ongoing calls on the\n device. This includes information such as call numbers for calls and the state of the\n calls.", "description_ptr": "permdesc_callCompanionApp", "label": "see and control calls through the system.", "label_ptr": "permlab_callCompanionApp", "name": "android.permission.CALL_COMPANION_APP", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera while the app is in use.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAMERA_OPEN_CLOSE_LISTENER": { "description": "This app can receive callbacks when any camera device is being opened (by what application) or closed.", "description_ptr": "permdesc_cameraOpenCloseListener", "label": "Allow an application or service to receive callbacks about camera devices being opened or closed.", "label_ptr": "permlab_cameraOpenCloseListener", "name": "android.permission.CAMERA_OPEN_CLOSE_LISTENER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_BLACKOUT_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_BLACKOUT_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_MEDIA_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_MEDIA_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_TUNER_AUDIO_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TUNER_AUDIO_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CLEAR_FREEZE_PERIOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_FREEZE_PERIOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_ALWAYS_ON_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_ALWAYS_ON_VPN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DEVICE_LIGHTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_LIGHTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DEVICE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_SATURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_SATURATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_UI_TRACING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_UI_TRACING", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_HIDDEN_API_CHECKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_HIDDEN_API_CHECKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "internal|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ENABLE_TEST_HARNESS_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENABLE_TEST_HARNESS_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ENTER_CAR_MODE_PRIORITIZED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENTER_CAR_MODE_PRIORITIZED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS": { "description": "Exempt the app from restrictions to record audio.", "description_ptr": "permdesc_exemptFromAudioRecordRestrictions", "label": "exempt from audio record restrictions", "label_ptr": "permlab_exemptFromAudioRecordRestrictions", "name": "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FOREGROUND_SERVICE": { "description": "Allows the app to make use of foreground services.", "description_ptr": "permdesc_foregroundService", "label": "run foreground service", "label_ptr": "permlab_foregroundService", "name": "android.permission.FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PEOPLE_TILE_PREVIEW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PEOPLE_TILE_PREVIEW", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HANDLE_CAR_MODE_CHANGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HANDLE_CAR_MODE_CHANGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.HIDE_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.HIGH_SAMPLING_RATE_SENSORS": { "description": "Allows the app to sample sensor data at a rate greater than 200 Hz", "description_ptr": "permdesc_highSamplingRateSensors", "label": "access sensor data at a high sampling rate", "label_ptr": "permlab_highSamplingRateSensors", "name": "android.permission.HIGH_SAMPLING_RATE_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INPUT_CONSUMER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INPUT_CONSUMER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGE_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGE_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_SELF_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_SELF_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_TEST_ONLY_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_TEST_ONLY_PACKAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.INTERNAL_DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KEEP_UNINSTALLED_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEEP_UNINSTALLED_PACKAGES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.LOADER_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOADER_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.LOCK_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCK_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOG_COMPAT_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOG_COMPAT_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature|setup|recents" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACTIVITY_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_TASKS", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MANAGE_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APPOPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APP_HIBERNATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_HIBERNATION", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_OPS_MODES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_MODES", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_PREDICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_PREDICTIONS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUDIO_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUDIO_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIND_INSTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIND_INSTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC_DIALOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC_DIALOG", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_CAPTURE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_CAPTURE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_SUGGESTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_SUGGESTIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CRATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CRATES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DEBUGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEBUGGING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature|documenter" }, "android.permission.MANAGE_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_EXTERNAL_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_FACTORY_RESET_PROTECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FACTORY_RESET_PROTECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_GAME_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_GAME_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_HOTWORD_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_HOTWORD_DETECTION", "permissionGroup": "", "protectionLevel": "internal|preinstalled" }, "android.permission.MANAGE_IPSEC_TUNNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_IPSEC_TUNNELS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA", "permissionGroup": "", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_MUSIC_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MUSIC_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATION_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATION_LISTENERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONGOING_CALLS": { "description": "Allows an app to see details about ongoing calls\n on your device and to control these calls.", "description_ptr": "permdesc_manageOngoingCalls", "label": "Manage ongoing calls", "label_ptr": "permlab_manageOngoingCalls", "name": "android.permission.MANAGE_ONGOING_CALLS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ROTATION_RESOLVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROTATION_RESOLVER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SEARCH_UI": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SEARCH_UI", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_SENSORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_SLICE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SLICE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SMARTSPACE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SMARTSPACE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_SPEECH_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SPEECH_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TEST_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TEST_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_TIME_AND_ZONE_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TIME_AND_ZONE_DETECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TOAST_RATE_LIMITING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TOAST_RATE_LIMITING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_UI_TRANSLATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_UI_TRANSLATION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WIFI_COUNTRY_CODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_COUNTRY_CODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MARK_DEVICE_ORGANIZATION_OWNED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MARK_DEVICE_ORGANIZATION_OWNED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_RESOURCE_OVERRIDE_PID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_RESOURCE_OVERRIDE_PID", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_QUIET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_QUIET_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_DEFAULT_SMS_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEFAULT_SMS_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MONITOR_DEVICE_CONFIG_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEVICE_CONFIG_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_INPUT", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_AIRPLANE_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_AIRPLANE_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_BYPASS_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_BYPASS_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_CARRIER_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_CARRIER_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_FACTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_FACTORY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_MANAGED_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_MANAGED_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SCAN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SCAN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETUP_WIZARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETUP_WIZARD", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_STATS_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STATS_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_PREFERRED_PAYMENT_INFO": { "description": "Allows the app to get preferred nfc payment service information like\n registered aids and route destination.", "description_ptr": "permdesc_preferredPaymentInfo", "label": "Preferred NFC Payment Service Information", "label_ptr": "permlab_preferredPaymentInfo", "name": "android.permission.NFC_PREFERRED_PAYMENT_INFO", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_TRANSACTION_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_TRANSACTION_EVENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_APP_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_APP_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OBSERVE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OBSERVE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role|installer" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKAGE_ROLLBACK_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_ROLLBACK_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop|retailDemo" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEEK_DROPBOX_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEEK_DROPBOX_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERFORM_IMS_SINGLE_REGISTRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_IMS_SINGLE_REGISTRATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.POWER_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.POWER_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_ALL_PACKAGES": { "description": "Allows an app to see all installed packages.", "description_ptr": "permdesc_queryAllPackages", "label": "query all packages", "label_ptr": "permlab_queryAllPackages", "name": "android.permission.QUERY_ALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.QUERY_AUDIO_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_AUDIO_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RADIO_SCAN_WITHOUT_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RADIO_SCAN_WITHOUT_LOCATION", "permissionGroup": "", "protectionLevel": "signature|companion" }, "android.permission.READ_ACTIVE_EMERGENCY_SESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_ACTIVE_EMERGENCY_SESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CARRIER_APP_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CARRIER_APP_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CLIPBOARD_IN_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CLIPBOARD_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to read data about your contacts stored on your phone.\n Apps will also have access to the accounts on your phone that have created contacts.\n This may include accounts created by apps you have installed.\n This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DREAM_SUPPRESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_SUPPRESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your shared storage.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your shared storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.READ_GLOBAL_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_GLOBAL_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NEARBY_STREAMING_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NEARBY_STREAMING_POLICY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PEOPLE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PEOPLE_DATA", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_PROJECTION_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROJECTION_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_RUNTIME_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RUNTIME_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYSTEM_UPDATE_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SYSTEM_UPDATE_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone while the app is in use.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.RECORD_BACKGROUND_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordBackgroundAudio", "label": "record audio in the background", "label_ptr": "permlab_recordBackgroundAudio", "name": "android.permission.RECORD_BACKGROUND_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECOVER_KEYSTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVER_KEYSTORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_STATS_PULL_ATOM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_STATS_PULL_ATOM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_DISPLAY_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_DISPLAY_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature|documenter|recents" }, "android.permission.RENOUNCE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RENOUNCE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_PROFILE_WATCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_WATCH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_PASSWORD_COMPLEXITY": { "description": "Allows the app to learn the screen\n lock complexity level (high, medium, low or none), which indicates the possible range of\n length and type of the screen lock. The app can also suggest to users that they update the\n screen lock to a certain level but users can freely ignore and navigate away. Note that the\n screen lock is not stored in plaintext so the app does not know the exact password.\n ", "description_ptr": "permdesc_requestPasswordComplexity", "label": "request screen lock complexity", "label_ptr": "permlab_requestPasswordComplexity", "name": "android.permission.REQUEST_PASSWORD_COMPLEXITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESET_APP_ERRORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_APP_ERRORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTART_WIFI_SUBSYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTART_WIFI_SUBSYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESTORE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTORE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVIEW_ACCESSIBILITY_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVIEW_ACCESSIBILITY_SERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.ROTATE_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ROTATE_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCHEDULE_EXACT_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCHEDULE_EXACT_ALARM", "permissionGroup": "", "protectionLevel": "normal|appop" }, "android.permission.SCHEDULE_PRIORITIZED_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCHEDULE_PRIORITIZED_ALARM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_CLIP_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_CLIP_SOURCE", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_HARMFUL_APP_WARNINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_HARMFUL_APP_WARNINGS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_INITIAL_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INITIAL_LOCK", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHOW_KEYGUARD_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHOW_KEYGUARD_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SIGNAL_REBOOT_READINESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_REBOOT_READINESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SMS_FINANCIAL_TRANSACTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SMS_FINANCIAL_TRANSACTIONS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.START_ACTIVITIES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITIES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier" }, "android.permission.START_ACTIVITY_AS_CALLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITY_AS_CALLER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier|role" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.START_VIEW_PERMISSION_USAGE": { "description": "Allows the holder to start the permission usage for an app. Should never be needed for normal apps.", "description_ptr": "permdesc_startViewPermissionUsage", "label": "start view permission usage", "label_ptr": "permlab_startViewPermissionUsage", "name": "android.permission.START_VIEW_PERMISSION_USAGE", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.STATSCOMPANION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATSCOMPANION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_EXTERNAL_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_EXTERNAL_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUSPEND_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUSPEND_APPS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|setup|appop|installer|pre23|development" }, "android.permission.SYSTEM_APPLICATION_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SYSTEM_APPLICATION_OVERLAY", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.SYSTEM_CAMERA": { "description": "This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well", "description_ptr": "permdesc_systemCamera", "label": "Allow an application or service access to system cameras to take pictures and videos", "label_ptr": "permlab_systemCamera", "name": "android.permission.SYSTEM_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "system|signature|role" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BLACKLISTED_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BLACKLISTED_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_SHELL_BUGREPORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_BUGREPORT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TUNER_RESOURCE_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TUNER_RESOURCE_ACCESS", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UNLIMITED_SHORTCUTS_API_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_SHORTCUTS_API_CALLS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.UNLIMITED_TOASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_TOASTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer|role" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_FONTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_FONTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPGRADE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPGRADE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_BIOMETRIC": { "description": "Allows the app to use biometric hardware for authentication", "description_ptr": "permdesc_useBiometric", "label": "use biometric hardware", "label_ptr": "permlab_useBiometric", "name": "android.permission.USE_BIOMETRIC", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_BIOMETRIC_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_BIOMETRIC_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_FULL_SCREEN_INTENT": { "description": "Allows the app to display notifications as full screen activities on a locked device", "description_ptr": "permdesc_fullScreenIntent", "label": "display notifications as full screen activities on a locked device", "label_ptr": "permlab_fullScreenIntent", "name": "android.permission.USE_FULL_SCREEN_INTENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.USE_RESERVED_DISK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_RESERVED_DISK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.UWB_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UWB_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UWB_RANGING": { "description": "Allow the app to determine relative position between nearby Ultra-Wideband devices", "description_ptr": "permdesc_uwb_ranging", "label": "determine relative position between nearby Ultra-Wideband devices", "label_ptr": "permlab_uwb_ranging", "name": "android.permission.UWB_RANGING", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIBRATE_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIBRATE_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.VIRTUAL_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIRTUAL_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WATCH_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WATCH_APPOPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WHITELIST_RESTRICTED_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_RESTRICTED_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to modify the data about your contacts stored on your phone.\n This permission allows apps to delete contact data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write the contents of your shared storage.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your shared storage", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_OBB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_OBB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23" }, "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.INSTALL_EXISTING_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.INSTALL_EXISTING_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.permission.USE_INSTALLER_V2": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_INSTALLER_V2", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.permission.USE_SYSTEM_DATA_LOADERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_SYSTEM_DATA_LOADERS", "permissionGroup": "", "protectionLevel": "signature" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_33.json ================================================ { "groups": { "android.permission-group.ACTIVITY_RECOGNITION": { "description": "access your physical activity", "description_ptr": "permgroupdesc_activityRecognition", "icon": "", "icon_ptr": "perm_group_activity_recognition", "label": "Physical activity", "label_ptr": "permgrouplab_activityRecognition", "name": "android.permission-group.ACTIVITY_RECOGNITION" }, "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CALL_LOG": { "description": "read and write phone call log", "description_ptr": "permgroupdesc_calllog", "icon": "", "icon_ptr": "perm_group_call_log", "label": "Call logs", "label_ptr": "permgrouplab_calllog", "name": "android.permission-group.CALL_LOG" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NEARBY_DEVICES": { "description": "discover and connect to nearby devices", "description_ptr": "permgroupdesc_nearby_devices", "icon": "", "icon_ptr": "perm_group_nearby_devices", "label": "Nearby devices", "label_ptr": "permgrouplab_nearby_devices", "name": "android.permission-group.NEARBY_DEVICES" }, "android.permission-group.NOTIFICATIONS": { "description": "show notifications", "description_ptr": "permgroupdesc_notifications", "icon": "", "icon_ptr": "ic_notifications_alerted", "label": "Notifications", "label_ptr": "permgrouplab_notifications", "name": "android.permission-group.NOTIFICATIONS" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.READ_MEDIA_AURAL": { "description": "access music and audio on your device", "description_ptr": "permgroupdesc_readMediaAural", "icon": "", "icon_ptr": "perm_group_read_media_aural", "label": "Music and audio", "label_ptr": "permgrouplab_readMediaAural", "name": "android.permission-group.READ_MEDIA_AURAL" }, "android.permission-group.READ_MEDIA_VISUAL": { "description": "access photos and videos on your device", "description_ptr": "permgroupdesc_readMediaVisual", "icon": "", "icon_ptr": "perm_group_read_media_visual", "label": "Photos and videos", "label_ptr": "permgrouplab_readMediaVisual", "name": "android.permission-group.READ_MEDIA_VISUAL" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Files", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.UNDEFINED": { "description": "", "description_ptr": "", "icon": "", "icon_ptr": "", "label": "", "label_ptr": "", "name": "android.permission-group.UNDEFINED" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCEPT_HANDOVER": { "description": "Allows the app to continue a call which was started in another app.", "description_ptr": "permdesc_acceptHandovers", "label": "", "label_ptr": "", "name": "android.permission.ACCEPT_HANDOVER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_AMBIENT_CONTEXT_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_CONTEXT_EVENT", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ACCESS_AMBIENT_LIGHT_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_LIGHT_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_BACKGROUND_LOCATION": { "description": "This app can access location at any time, even while the app is not in use.", "description_ptr": "permdesc_accessBackgroundLocation", "label": "access location in the background", "label_ptr": "permlab_accessBackgroundLocation", "name": "android.permission.ACCESS_BACKGROUND_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_BLOBS_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BLOBS_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_BROADCAST_RESPONSE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RESPONSE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location only in the foreground", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CONTEXT_HUB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTEXT_HUB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location only in the foreground", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FPS_COUNTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FPS_COUNTER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|role" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOCUS_ID_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOCUS_ID_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MEDIA_LOCATION": { "description": "Allows the app to read locations from your media collection.", "description_ptr": "permdesc_mediaLocation", "label": "read locations from your media collection", "label_ptr": "permlab_mediaLocation", "name": "android.permission.ACCESS_MEDIA_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MESSAGES_ON_ICC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MESSAGES_ON_ICC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ACCESS_SHARED_LIBRARIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHARED_LIBRARIES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ACCESS_SHORTCUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHORTCUTS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_TUNED_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TUNED_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_DESCRAMBLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_DESCRAMBLER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_SHARED_FILTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_SHARED_FILTER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_TUNER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_TUNER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_ULTRASOUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_ULTRASOUND", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VIBRATOR_STATE": { "description": "Allows the app to access the vibrator state.", "description_ptr": "permdesc_vibrator_state", "label": "Allows the app to access the vibrator state.", "label_ptr": "permdesc_vibrator_state", "name": "android.permission.ACCESS_VIBRATOR_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACTIVITY_RECOGNITION": { "description": "This app can recognize your physical activity.", "description_ptr": "permdesc_activityRecognition", "label": "recognize physical activity", "label_ptr": "permlab_activityRecognition", "name": "android.permission.ACTIVITY_RECOGNITION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADD_ALWAYS_UNLOCKED_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADD_ALWAYS_UNLOCKED_DISPLAY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ADD_TRUSTED_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADD_TRUSTED_DISPLAY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ALLOW_SLIPPERY_TOUCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_SLIPPERY_TOUCHES", "permissionGroup": "", "protectionLevel": "signature|privileged|recents|role" }, "android.permission.AMBIENT_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AMBIENT_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|runtime" }, "android.permission.APPROVE_INCIDENT_REPORTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.APPROVE_INCIDENT_REPORTS", "permissionGroup": "", "protectionLevel": "signature|incidentReportApprover" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASSOCIATE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKGROUND_CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_backgroundCamera", "label": "take pictures and videos in the background", "label_ptr": "permlab_backgroundCamera", "name": "android.permission.BACKGROUND_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_PREDICTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_PREDICTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AMBIENT_CONTEXT_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AMBIENT_CONTEXT_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_ATTENTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTENTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ATTESTATION_VERIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTESTATION_VERIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_REDIRECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_REDIRECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CELL_BROADCAST_SERVICE": { "description": "Allows the app to bind to the\n cell broadcast module in order to forward cell broadcast messages\n as they are received. Cell broadcast alerts are delivered in some\n locations to warn you of emergency situations. Malicious apps may\n interfere with the performance or operation of your device when an\n emergency cell broadcast is received.", "description_ptr": "permdesc_bindCellBroadcastService", "label": "Forward cell broadcast messages", "label_ptr": "permlab_bindCellBroadcastService", "name": "android.permission.BIND_CELL_BROADCAST_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CONTENT_CAPTURE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_CAPTURE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTROLS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DISPLAY_HASHING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DISPLAY_HASHING_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_EXTERNAL_STORAGE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXTERNAL_STORAGE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_GAME_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_GAME_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_GBA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_GBA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_HOTWORD_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_HOTWORD_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_MUSIC_RECOGNITION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MUSIC_RECOGNITION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESUME_ON_REBOOT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESUME_ON_REBOOT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROTATION_RESOLVER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROTATION_RESOLVER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_SELECTION_TOOLBAR_RENDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SELECTION_TOOLBAR_RENDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELEPHONY_DATA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_DATA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELEPHONY_NETWORK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_NETWORK_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXTCLASSIFIER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXTCLASSIFIER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRACE_REPORT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRACE_REPORT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRANSLATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRANSLATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_INTERACTIVE_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INTERACTIVE_APP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_WALLPAPER_EFFECTS_GENERATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER_EFFECTS_GENERATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADVERTISE": { "description": "Allows the app to advertise to nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_advertise", "label": "advertise to nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_advertise", "name": "android.permission.BLUETOOTH_ADVERTISE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_CONNECT": { "description": "Allows the app to connect to paired Bluetooth devices", "description_ptr": "permdesc_bluetooth_connect", "label": "connect to paired Bluetooth devices", "label_ptr": "permlab_bluetooth_connect", "name": "android.permission.BLUETOOTH_CONNECT", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_SCAN": { "description": "Allows the app to discover and pair nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_scan", "label": "discover and pair nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_scan", "name": "android.permission.BLUETOOTH_SCAN", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access body sensor data, such as heart rate, temperature, and blood oxygen percentage, while the app is in use.", "description_ptr": "permdesc_bodySensors", "label": "Access body sensor data, like heart rate, while in use", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BODY_SENSORS_BACKGROUND": { "description": "Allows the app to access body sensor data, such as heart rate, temperature, and blood oxygen percentage, while the app is in the background.", "description_ptr": "permdesc_bodySensors_background", "label": "Access body sensor data, like heart rate, while in the background", "label_ptr": "permlab_bodySensors_background", "name": "android.permission.BODY_SENSORS_BACKGROUND", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BRIGHTNESS_SLIDER_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRIGHTNESS_SLIDER_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BYPASS_ROLE_QUALIFICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BYPASS_ROLE_QUALIFICATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.CALL_AUDIO_INTERCEPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_AUDIO_INTERCEPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CALL_COMPANION_APP": { "description": "Allows the app to see and control ongoing calls on the\n device. This includes information such as call numbers for calls and the state of the\n calls.", "description_ptr": "permdesc_callCompanionApp", "label": "see and control calls through the system.", "label_ptr": "permlab_callCompanionApp", "name": "android.permission.CALL_COMPANION_APP", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera while the app is in use.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAMERA_OPEN_CLOSE_LISTENER": { "description": "This app can receive callbacks when any camera device is being opened (by what application) or closed.", "description_ptr": "permdesc_cameraOpenCloseListener", "label": "Allow an application or service to receive callbacks about camera devices being opened or closed.", "label_ptr": "permlab_cameraOpenCloseListener", "name": "android.permission.CAMERA_OPEN_CLOSE_LISTENER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_BLACKOUT_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_BLACKOUT_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_MEDIA_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_MEDIA_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_TUNER_AUDIO_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TUNER_AUDIO_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_APP_LAUNCH_TIME_ESTIMATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_LAUNCH_TIME_ESTIMATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CLEAR_FREEZE_PERIOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_FREEZE_PERIOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_ALWAYS_ON_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_ALWAYS_ON_VPN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_AUTOMOTIVE_GNSS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_AUTOMOTIVE_GNSS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DEVICE_LIGHTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_LIGHTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DEVICE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_SATURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_SATURATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_UI_TRACING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_UI_TRACING", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_VIRTUAL_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_VIRTUAL_DEVICE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.DELIVER_COMPANION_MESSAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELIVER_COMPANION_MESSAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_HIDDEN_API_CHECKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_HIDDEN_API_CHECKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "internal|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ENABLE_TEST_HARNESS_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENABLE_TEST_HARNESS_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ENTER_CAR_MODE_PRIORITIZED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENTER_CAR_MODE_PRIORITIZED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS": { "description": "Exempt the app from restrictions to record audio.", "description_ptr": "permdesc_exemptFromAudioRecordRestrictions", "label": "exempt from audio record restrictions", "label_ptr": "permlab_exemptFromAudioRecordRestrictions", "name": "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FOREGROUND_SERVICE": { "description": "Allows the app to make use of foreground services.", "description_ptr": "permdesc_foregroundService", "label": "run foreground service", "label_ptr": "permlab_foregroundService", "name": "android.permission.FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_HISTORICAL_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_HISTORICAL_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PEOPLE_TILE_PREVIEW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PEOPLE_TILE_PREVIEW", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HANDLE_CAR_MODE_CHANGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HANDLE_CAR_MODE_CHANGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.HIDE_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.HIGH_SAMPLING_RATE_SENSORS": { "description": "Allows the app to sample sensor data at a rate greater than 200 Hz", "description_ptr": "permdesc_highSamplingRateSensors", "label": "access sensor data at a high sampling rate", "label_ptr": "permlab_highSamplingRateSensors", "name": "android.permission.HIGH_SAMPLING_RATE_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INPUT_CONSUMER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INPUT_CONSUMER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_DPC_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DPC_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.INSTALL_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGE_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGE_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_SELF_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_SELF_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_TEST_ONLY_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_TEST_ONLY_PACKAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer|role" }, "android.permission.INTERNAL_DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KEEP_UNINSTALLED_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEEP_UNINSTALLED_PACKAGES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.LAUNCH_DEVICE_MANAGER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_DEVICE_MANAGER_SETUP", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.LOADER_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOADER_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_BYPASS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_BYPASS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.LOCK_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCK_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOG_COMPAT_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOG_COMPAT_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MAKE_UID_VISIBLE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MAKE_UID_VISIBLE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature|setup|recents" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACTIVITY_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_TASKS", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MANAGE_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APPOPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APP_HIBERNATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_HIBERNATION", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_OPS_MODES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_MODES", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|role" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_PREDICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_PREDICTIONS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUDIO_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUDIO_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIND_INSTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIND_INSTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC_DIALOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC_DIALOG", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CLOUDSEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CLOUDSEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_CONTENT_CAPTURE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_CAPTURE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_SUGGESTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_SUGGESTIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CRATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CRATES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DEBUGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEBUGGING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ETHERNET_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ETHERNET_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_EXTERNAL_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_FACTORY_RESET_PROTECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FACTORY_RESET_PROTECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_GAME_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_GAME_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_GAME_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_GAME_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_HOTWORD_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_HOTWORD_DETECTION", "permissionGroup": "", "protectionLevel": "internal|preinstalled" }, "android.permission.MANAGE_IPSEC_TUNNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_IPSEC_TUNNELS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_LOW_POWER_STANDBY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOW_POWER_STANDBY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA", "permissionGroup": "", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_MUSIC_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MUSIC_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATION_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATION_LISTENERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONGOING_CALLS": { "description": "Allows an app to see details about ongoing calls\n on your device and to control these calls.", "description_ptr": "permdesc_manageOngoingCalls", "label": "Manage ongoing calls", "label_ptr": "permlab_manageOngoingCalls", "name": "android.permission.MANAGE_ONGOING_CALLS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ROTATION_RESOLVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROTATION_RESOLVER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SAFETY_CENTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SAFETY_CENTER", "permissionGroup": "", "protectionLevel": "internal|installer|role" }, "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SEARCH_UI": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SEARCH_UI", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_SENSORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role|installer" }, "android.permission.MANAGE_SLICE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SLICE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SMARTSPACE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SMARTSPACE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_SPEECH_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SPEECH_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TEST_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TEST_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_TIME_AND_ZONE_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TIME_AND_ZONE_DETECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TOAST_RATE_LIMITING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TOAST_RATE_LIMITING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_UI_TRANSLATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_UI_TRANSLATION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WALLPAPER_EFFECTS_GENERATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WALLPAPER_EFFECTS_GENERATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WEAK_ESCROW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WEAK_ESCROW_TOKEN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WIFI_COUNTRY_CODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_COUNTRY_CODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_WIFI_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged|knownSigner" }, "android.permission.MANAGE_WIFI_NETWORK_SELECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_NETWORK_SELECTION", "permissionGroup": "", "protectionLevel": "signature|privileged|knownSigner" }, "android.permission.MARK_DEVICE_ORGANIZATION_OWNED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MARK_DEVICE_ORGANIZATION_OWNED", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_RESOURCE_OVERRIDE_PID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_RESOURCE_OVERRIDE_PID", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_QUIET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_QUIET_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_TOUCH_MODE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_TOUCH_MODE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_DEFAULT_SMS_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEFAULT_SMS_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MONITOR_DEVICE_CONFIG_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEVICE_CONFIG_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_INPUT", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NEARBY_WIFI_DEVICES": { "description": "Allows the app to advertise, connect, and determine the relative position of nearby Wiu2011Fi devices", "description_ptr": "permdesc_nearby_wifi_devices", "label": "interact with nearby Wiu2011Fi devices", "label_ptr": "permlab_nearby_wifi_devices", "name": "android.permission.NEARBY_WIFI_DEVICES", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.NETWORK_AIRPLANE_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_AIRPLANE_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_BYPASS_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_BYPASS_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_CARRIER_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_CARRIER_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_FACTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_FACTORY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NETWORK_MANAGED_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_MANAGED_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NETWORK_SCAN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SCAN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETUP_WIZARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETUP_WIZARD", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_STATS_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STATS_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_PREFERRED_PAYMENT_INFO": { "description": "Allows the app to get preferred nfc payment service information like\n registered aids and route destination.", "description_ptr": "permdesc_preferredPaymentInfo", "label": "Preferred NFC Payment Service Information", "label_ptr": "permlab_preferredPaymentInfo", "name": "android.permission.NFC_PREFERRED_PAYMENT_INFO", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_TRANSACTION_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_TRANSACTION_EVENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_APP_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_APP_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OBSERVE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OBSERVE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role|installer" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged|knownSigner" }, "android.permission.PACKAGE_ROLLBACK_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_ROLLBACK_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop|retailDemo" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEEK_DROPBOX_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEEK_DROPBOX_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup|role" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.PERFORM_IMS_SINGLE_REGISTRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_IMS_SINGLE_REGISTRATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.POST_NOTIFICATIONS": { "description": "Allows the app to show notifications", "description_ptr": "permdesc_postNotification", "label": "show notifications", "label_ptr": "permlab_postNotification", "name": "android.permission.POST_NOTIFICATIONS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.POWER_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.POWER_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVISION_DEMO_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVISION_DEMO_DEVICE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.QUERY_ADMIN_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_ADMIN_POLICY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.QUERY_ALL_PACKAGES": { "description": "Allows an app to see all installed packages.", "description_ptr": "permdesc_queryAllPackages", "label": "query all packages", "label_ptr": "permlab_queryAllPackages", "name": "android.permission.QUERY_ALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.QUERY_AUDIO_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_AUDIO_STATE", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_USERS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.RADIO_SCAN_WITHOUT_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RADIO_SCAN_WITHOUT_LOCATION", "permissionGroup": "", "protectionLevel": "signature|companion" }, "android.permission.READ_ACTIVE_EMERGENCY_SESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_ACTIVE_EMERGENCY_SESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_APP_SPECIFIC_LOCALES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_APP_SPECIFIC_LOCALES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_ASSISTANT_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_ASSISTANT_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_BASIC_PHONE_STATE": { "description": "Allows the app to access the basic telephony\n features of the device.", "description_ptr": "permdesc_readBasicPhoneState", "label": "read basic telephony status and identity ", "label_ptr": "permlab_readBasicPhoneState", "name": "android.permission.READ_BASIC_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "normal" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CARRIER_APP_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CARRIER_APP_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CLIPBOARD_IN_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CLIPBOARD_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.READ_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to read data about your contacts stored on your phone.\n Apps will also have access to the accounts on your phone that have created contacts.\n This may include accounts created by apps you have installed.\n This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DREAM_SUPPRESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_SUPPRESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your shared storage.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your shared storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.READ_GLOBAL_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_GLOBAL_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_HOME_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_HOME_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_MEDIA_AUDIO": { "description": "Allows the app to read audio files from your shared storage.", "description_ptr": "permdesc_readMediaAudio", "label": "read audio files from shared storage", "label_ptr": "permlab_readMediaAudio", "name": "android.permission.READ_MEDIA_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_MEDIA_IMAGES": { "description": "Allows the app to read image files from your shared storage.", "description_ptr": "permdesc_readMediaImages", "label": "read image files from shared storage", "label_ptr": "permlab_readMediaImages", "name": "android.permission.READ_MEDIA_IMAGES", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_MEDIA_VIDEO": { "description": "Allows the app to read video files from your shared storage.", "description_ptr": "permdesc_readMediaVideo", "label": "read video files from shared storage", "label_ptr": "permlab_readMediaVideo", "name": "android.permission.READ_MEDIA_VIDEO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_NEARBY_STREAMING_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NEARBY_STREAMING_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PEOPLE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PEOPLE_DATA", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_PROJECTION_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROJECTION_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_RUNTIME_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RUNTIME_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SAFETY_CENTER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SAFETY_CENTER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYSTEM_UPDATE_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SYSTEM_UPDATE_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone while the app is in use.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.RECORD_BACKGROUND_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordBackgroundAudio", "label": "record audio in the background", "label_ptr": "permlab_recordBackgroundAudio", "name": "android.permission.RECORD_BACKGROUND_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECOVER_KEYSTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVER_KEYSTORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_STATS_PULL_ATOM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_STATS_PULL_ATOM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_DISPLAY_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_DISPLAY_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.RENOUNCE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RENOUNCE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.REQUEST_COMPANION_PROFILE_COMPUTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_COMPUTER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_COMPANION_PROFILE_WATCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_WATCH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_SELF_MANAGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_SELF_MANAGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_PASSWORD_COMPLEXITY": { "description": "Allows the app to learn the screen\n lock complexity level (high, medium, low or none), which indicates the possible range of\n length and type of the screen lock. The app can also suggest to users that they update the\n screen lock to a certain level but users can freely ignore and navigate away. Note that the\n screen lock is not stored in plaintext so the app does not know the exact password.\n ", "description_ptr": "permdesc_requestPasswordComplexity", "label": "request screen lock complexity", "label_ptr": "permlab_requestPasswordComplexity", "name": "android.permission.REQUEST_PASSWORD_COMPLEXITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_UNIQUE_ID_ATTESTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_UNIQUE_ID_ATTESTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_APP_ERRORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_APP_ERRORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTART_WIFI_SUBSYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTART_WIFI_SUBSYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESTORE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTORE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVIEW_ACCESSIBILITY_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVIEW_ACCESSIBILITY_SERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_POST_NOTIFICATIONS_WITHOUT_KILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_POST_NOTIFICATIONS_WITHOUT_KILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.ROTATE_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ROTATE_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SCHEDULE_EXACT_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCHEDULE_EXACT_ALARM", "permissionGroup": "", "protectionLevel": "normal|appop" }, "android.permission.SCHEDULE_PRIORITIZED_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCHEDULE_PRIORITIZED_ALARM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SAFETY_CENTER_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SAFETY_CENTER_UPDATE", "permissionGroup": "", "protectionLevel": "internal|privileged" }, "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_CLIP_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_CLIP_SOURCE", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_GAME_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_GAME_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_HARMFUL_APP_WARNINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_HARMFUL_APP_WARNINGS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_INITIAL_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INITIAL_LOCK", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_SYSTEM_AUDIO_CAPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SYSTEM_AUDIO_CAPTION", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_DIM_AMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_DIM_AMOUNT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHOW_KEYGUARD_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHOW_KEYGUARD_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SIGNAL_REBOOT_READINESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_REBOOT_READINESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SMS_FINANCIAL_TRANSACTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SMS_FINANCIAL_TRANSACTIONS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.START_ACTIVITIES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITIES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier|role" }, "android.permission.START_ACTIVITY_AS_CALLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITY_AS_CALLER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_CROSS_PROFILE_ACTIVITIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_CROSS_PROFILE_ACTIVITIES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier|role" }, "android.permission.START_REVIEW_PERMISSION_DECISIONS": { "description": "Allows the holder to start screen to review permission decisions. Should never be needed for normal apps.", "description_ptr": "permdesc_startReviewPermissionDecisions", "label": "start view permission decisions", "label_ptr": "permlab_startReviewPermissionDecisions", "name": "android.permission.START_REVIEW_PERMISSION_DECISIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.START_VIEW_APP_FEATURES": { "description": "Allows the holder to start viewing the features info for an app.", "description_ptr": "permdesc_startViewAppFeatures", "label": "start view app features", "label_ptr": "permlab_startViewAppFeatures", "name": "android.permission.START_VIEW_APP_FEATURES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.START_VIEW_PERMISSION_USAGE": { "description": "Allows the holder to start the permission usage for an app. Should never be needed for normal apps.", "description_ptr": "permdesc_startViewPermissionUsage", "label": "start view permission usage", "label_ptr": "permlab_startViewPermissionUsage", "name": "android.permission.START_VIEW_PERMISSION_USAGE", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.STATSCOMPANION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATSCOMPANION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_EXTERNAL_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_EXTERNAL_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUPPRESS_CLIPBOARD_ACCESS_NOTIFICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUPPRESS_CLIPBOARD_ACCESS_NOTIFICATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUSPEND_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUSPEND_APPS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|setup|appop|installer|pre23|development" }, "android.permission.SYSTEM_APPLICATION_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SYSTEM_APPLICATION_OVERLAY", "permissionGroup": "", "protectionLevel": "signature|recents|role|installer" }, "android.permission.SYSTEM_CAMERA": { "description": "This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well", "description_ptr": "permdesc_systemCamera", "label": "Allow an application or service access to system cameras to take pictures and videos", "label_ptr": "permlab_systemCamera", "name": "android.permission.SYSTEM_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "system|signature|role" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BLACKLISTED_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BLACKLISTED_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TIS_EXTENSION_INTERFACE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TIS_EXTENSION_INTERFACE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_LOST_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_LOST_MODE", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.TRIGGER_SHELL_BUGREPORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_BUGREPORT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_TIME_ZONE_RULES_CHECK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TUNER_RESOURCE_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TUNER_RESOURCE_ACCESS", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UNLIMITED_SHORTCUTS_API_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_SHORTCUTS_API_CALLS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.UNLIMITED_TOASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_TOASTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer|role" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_MANAGEMENT_RESOURCES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_MANAGEMENT_RESOURCES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_FONTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_FONTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPGRADE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPGRADE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_ATTESTATION_VERIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_ATTESTATION_VERIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_BIOMETRIC": { "description": "Allows the app to use biometric hardware for authentication", "description_ptr": "permdesc_useBiometric", "label": "use biometric hardware", "label_ptr": "permlab_useBiometric", "name": "android.permission.USE_BIOMETRIC", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_BIOMETRIC_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_BIOMETRIC_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup|role" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_EXACT_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_EXACT_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_FULL_SCREEN_INTENT": { "description": "Allows the app to display notifications as full screen activities on a locked device", "description_ptr": "permdesc_fullScreenIntent", "label": "display notifications as full screen activities on a locked device", "label_ptr": "permlab_fullScreenIntent", "name": "android.permission.USE_FULL_SCREEN_INTENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.USE_RESERVED_DISK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_RESERVED_DISK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.UWB_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UWB_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UWB_RANGING": { "description": "Allow the app to determine relative position between nearby Ultra-Wideband devices", "description_ptr": "permdesc_uwb_ranging", "label": "determine relative position between nearby Ultra-Wideband devices", "label_ptr": "permlab_uwb_ranging", "name": "android.permission.UWB_RANGING", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.VERIFY_ATTESTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VERIFY_ATTESTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIBRATE_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIBRATE_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.VIRTUAL_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIRTUAL_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WATCH_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WATCH_APPOPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WHITELIST_RESTRICTED_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_RESTRICTED_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to modify the data about your contacts stored on your phone.\n This permission allows apps to delete contact data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write the contents of your shared storage.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your shared storage", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_OBB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_OBB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role|installer" }, "android.permission.WRITE_SECURITY_LOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURITY_LOG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|role" }, "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.INSTALL_EXISTING_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.INSTALL_EXISTING_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "com.android.permission.USE_INSTALLER_V2": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_INSTALLER_V2", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.permission.USE_SYSTEM_DATA_LOADERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_SYSTEM_DATA_LOADERS", "permissionGroup": "", "protectionLevel": "signature" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_34.json ================================================ { "groups": { "android.permission-group.ACTIVITY_RECOGNITION": { "description": "access your physical activity", "description_ptr": "permgroupdesc_activityRecognition", "icon": "", "icon_ptr": "perm_group_activity_recognition", "label": "Physical activity", "label_ptr": "permgrouplab_activityRecognition", "name": "android.permission-group.ACTIVITY_RECOGNITION" }, "android.permission-group.CALENDAR": { "description": "access your calendar", "description_ptr": "permgroupdesc_calendar", "icon": "", "icon_ptr": "perm_group_calendar", "label": "Calendar", "label_ptr": "permgrouplab_calendar", "name": "android.permission-group.CALENDAR" }, "android.permission-group.CALL_LOG": { "description": "read and write phone call log", "description_ptr": "permgroupdesc_calllog", "icon": "", "icon_ptr": "perm_group_call_log", "label": "Call logs", "label_ptr": "permgrouplab_calllog", "name": "android.permission-group.CALL_LOG" }, "android.permission-group.CAMERA": { "description": "take pictures and record video", "description_ptr": "permgroupdesc_camera", "icon": "", "icon_ptr": "perm_group_camera", "label": "Camera", "label_ptr": "permgrouplab_camera", "name": "android.permission-group.CAMERA" }, "android.permission-group.CONTACTS": { "description": "access your contacts", "description_ptr": "permgroupdesc_contacts", "icon": "", "icon_ptr": "perm_group_contacts", "label": "Contacts", "label_ptr": "permgrouplab_contacts", "name": "android.permission-group.CONTACTS" }, "android.permission-group.LOCATION": { "description": "access this device's location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "perm_group_location", "label": "Location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MICROPHONE": { "description": "record audio", "description_ptr": "permgroupdesc_microphone", "icon": "", "icon_ptr": "perm_group_microphone", "label": "Microphone", "label_ptr": "permgrouplab_microphone", "name": "android.permission-group.MICROPHONE" }, "android.permission-group.NEARBY_DEVICES": { "description": "discover and connect to nearby devices", "description_ptr": "permgroupdesc_nearby_devices", "icon": "", "icon_ptr": "perm_group_nearby_devices", "label": "Nearby devices", "label_ptr": "permgrouplab_nearby_devices", "name": "android.permission-group.NEARBY_DEVICES" }, "android.permission-group.NOTIFICATIONS": { "description": "show notifications", "description_ptr": "permgroupdesc_notifications", "icon": "", "icon_ptr": "ic_notifications_alerted", "label": "Notifications", "label_ptr": "permgrouplab_notifications", "name": "android.permission-group.NOTIFICATIONS" }, "android.permission-group.PHONE": { "description": "make and manage phone calls", "description_ptr": "permgroupdesc_phone", "icon": "", "icon_ptr": "perm_group_phone_calls", "label": "Phone", "label_ptr": "permgrouplab_phone", "name": "android.permission-group.PHONE" }, "android.permission-group.READ_MEDIA_AURAL": { "description": "access music and audio on your device", "description_ptr": "permgroupdesc_readMediaAural", "icon": "", "icon_ptr": "perm_group_read_media_aural", "label": "Music and audio", "label_ptr": "permgrouplab_readMediaAural", "name": "android.permission-group.READ_MEDIA_AURAL" }, "android.permission-group.READ_MEDIA_VISUAL": { "description": "access photos and videos on your device", "description_ptr": "permgroupdesc_readMediaVisual", "icon": "", "icon_ptr": "perm_group_read_media_visual", "label": "Photos and videos", "label_ptr": "permgrouplab_readMediaVisual", "name": "android.permission-group.READ_MEDIA_VISUAL" }, "android.permission-group.SENSORS": { "description": "access sensor data about your vital signs", "description_ptr": "permgroupdesc_sensors", "icon": "", "icon_ptr": "perm_group_sensors", "label": "Body sensors", "label_ptr": "permgrouplab_sensors", "name": "android.permission-group.SENSORS" }, "android.permission-group.SMS": { "description": "send and view SMS messages", "description_ptr": "permgroupdesc_sms", "icon": "", "icon_ptr": "perm_group_sms", "label": "SMS", "label_ptr": "permgrouplab_sms", "name": "android.permission-group.SMS" }, "android.permission-group.STORAGE": { "description": "access files on your device", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "perm_group_storage", "label": "Files", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.UNDEFINED": { "description": "", "description_ptr": "", "icon": "", "icon_ptr": "", "label": "", "label_ptr": "", "name": "android.permission-group.UNDEFINED" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCEPT_HANDOVER": { "description": "Allows the app to continue a call which was started in another app.", "description_ptr": "permdesc_acceptHandovers", "label": "", "label_ptr": "", "name": "android.permission.ACCEPT_HANDOVER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_AMBIENT_CONTEXT_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_CONTEXT_EVENT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.ACCESS_AMBIENT_LIGHT_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_AMBIENT_LIGHT_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_BACKGROUND_LOCATION": { "description": "This app can access location at any time, even while the app is not in use.", "description_ptr": "permdesc_accessBackgroundLocation", "label": "access location in the background", "label_ptr": "permlab_accessBackgroundLocation", "name": "android.permission.ACCESS_BACKGROUND_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_BLOBS_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BLOBS_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.ACCESS_BROADCAST_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_BROADCAST_RESPONSE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_BROADCAST_RESPONSE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.", "description_ptr": "permdesc_accessCoarseLocation", "label": "access approximate location only in the foreground", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CONTEXT_HUB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_CONTEXT_HUB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.", "description_ptr": "permdesc_accessFineLocation", "label": "access precise location only in the foreground", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACCESS_FM_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FM_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_FPS_COUNTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_FPS_COUNTER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_GPU_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_GPU_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_IMS_CALL_SERVICE": { "description": "Allows the app to use the IMS service to make calls without your intervention.", "description_ptr": "permdesc_accessImsCallService", "label": "access IMS call service", "label_ptr": "permlab_accessImsCallService", "name": "android.permission.ACCESS_IMS_CALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_INPUT_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INPUT_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|role" }, "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Allows the app to access\n extra location provider commands. This may allow the app to interfere\n with the operation of the GPS or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_LOCUS_ID_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOCUS_ID_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_MEDIA_LOCATION": { "description": "Allows the app to read locations from your media collection.", "description_ptr": "permdesc_mediaLocation", "label": "read locations from your media collection", "label_ptr": "permlab_mediaLocation", "name": "android.permission.ACCESS_MEDIA_LOCATION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.ACCESS_MESSAGES_ON_ICC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MESSAGES_ON_ICC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_MTP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_MTP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_CONDITIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NETWORK_CONDITIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows the app to view\n information about network connections such as which networks exist and are\n connected.", "description_ptr": "permdesc_accessNetworkState", "label": "view network connections", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.ACCESS_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.ACCESS_NOTIFICATION_POLICY": { "description": "Allows the app to read and write Do Not Disturb configuration.", "description_ptr": "permdesc_access_notification_policy", "label": "access Do Not Disturb", "label_ptr": "permlab_access_notification_policy", "name": "android.permission.ACCESS_NOTIFICATION_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCESS_PDB_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_PDB_STATE", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ACCESS_SHARED_LIBRARIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHARED_LIBRARIES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ACCESS_SHORTCUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SHORTCUTS", "permissionGroup": "", "protectionLevel": "signature|role|recents" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_TUNED_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TUNED_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_DESCRAMBLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_DESCRAMBLER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_SHARED_FILTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_SHARED_FILTER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_TV_TUNER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_TV_TUNER", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.ACCESS_UCE_OPTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_OPTIONS_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_UCE_PRESENCE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_UCE_PRESENCE_SERVICE", "permissionGroup": "android.permission-group.PHONE", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_ULTRASOUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_ULTRASOUND", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VIBRATOR_STATE": { "description": "Allows the app to access the vibrator state.", "description_ptr": "permdesc_vibrator_state", "label": "Allows the app to access the vibrator state.", "label_ptr": "permdesc_vibrator_state", "name": "android.permission.ACCESS_VIBRATOR_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACCESS_VOICE_INTERACTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VOICE_INTERACTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_VR_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCESS_VR_STATE", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows the app to view information\n about Wi-Fi networking, such as whether Wi-Fi is enabled and name of\n connected Wi-Fi devices.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi connections", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACTIVITY_EMBEDDING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACTIVITY_EMBEDDING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ACTIVITY_RECOGNITION": { "description": "This app can recognize your physical activity.", "description_ptr": "permdesc_activityRecognition", "label": "recognize physical activity", "label_ptr": "permlab_activityRecognition", "name": "android.permission.ACTIVITY_RECOGNITION", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ACT_AS_PACKAGE_FOR_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ADD_ALWAYS_UNLOCKED_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADD_ALWAYS_UNLOCKED_DISPLAY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ADD_TRUSTED_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADD_TRUSTED_DISPLAY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.ALLOCATE_AGGRESSIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOCATE_AGGRESSIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_PLACE_IN_MULTI_PANE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ALLOW_SLIPPERY_TOUCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ALLOW_SLIPPERY_TOUCHES", "permissionGroup": "", "protectionLevel": "signature|privileged|recents|role" }, "android.permission.AMBIENT_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AMBIENT_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.ANSWER_PHONE_CALLS": { "description": "Allows the app to answer an incoming phone call.", "description_ptr": "permdesc_answerPhoneCalls", "label": "answer phone calls", "label_ptr": "permlab_answerPhoneCalls", "name": "android.permission.ANSWER_PHONE_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|runtime" }, "android.permission.APPROVE_INCIDENT_REPORTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.APPROVE_INCIDENT_REPORTS", "permissionGroup": "", "protectionLevel": "signature|incidentReportApprover" }, "android.permission.ASEC_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_CREATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASEC_RENAME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ASSOCIATE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ASSOCIATE_INPUT_DEVICE_TO_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BACKGROUND_CAMERA": { "description": "This app can take pictures and record videos using the camera at any time.", "description_ptr": "permdesc_backgroundCamera", "label": "take pictures and videos in the background", "label_ptr": "permlab_backgroundCamera", "name": "android.permission.BACKGROUND_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_PREDICTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_PREDICTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BATTERY_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BIND_ACCESSIBILITY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ACCESSIBILITY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AMBIENT_CONTEXT_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AMBIENT_CONTEXT_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_ATTENTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTENTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ATTESTATION_VERIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ATTESTATION_VERIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUGMENTED_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_AUTOFILL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_AUTOFILL_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CACHE_QUOTA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CACHE_QUOTA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_DIAGNOSTIC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CALL_REDIRECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_REDIRECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CALL_STREAMING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CALL_STREAMING_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CARRIER_MESSAGING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CARRIER_MESSAGING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CARRIER_SERVICES": { "description": "Allows the holder to bind to carrier services. Should never be needed for normal apps.", "description_ptr": "permdesc_bindCarrierServices", "label": "bind to carrier services", "label_ptr": "permlab_bindCarrierServices", "name": "android.permission.BIND_CARRIER_SERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CELL_BROADCAST_SERVICE": { "description": "Allows the app to bind to the\n cell broadcast module in order to forward cell broadcast messages\n as they are received. Cell broadcast alerts are delivered in some\n locations to warn you of emergency situations. Malicious apps may\n interfere with the performance or operation of your device when an\n emergency cell broadcast is received.", "description_ptr": "permdesc_bindCellBroadcastService", "label": "Forward cell broadcast messages", "label_ptr": "permlab_bindCellBroadcastService", "name": "android.permission.BIND_CELL_BROADCAST_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CHOOSER_TARGET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CHOOSER_TARGET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_COMPANION_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_COMPANION_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONDITION_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONDITION_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_CONTENT_CAPTURE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_CAPTURE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CONTROLS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_CREDENTIAL_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.BIND_DIRECTORY_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DIRECTORY_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_DISPLAY_HASHING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DISPLAY_HASHING_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_DREAM_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_DREAM_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EUICC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EUICC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_EXTERNAL_STORAGE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_EXTERNAL_STORAGE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_FIELD_CLASSIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_FIELD_CLASSIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_GAME_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_GAME_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_GBA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_GBA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_HOTWORD_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_HOTWORD_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_IMS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_IMS_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_INCALL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INCALL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INTENT_FILTER_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_INTENT_FILTER_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_JOB_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_JOB_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_KEYGUARD_APPWIDGET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_KEYGUARD_APPWIDGET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_MIDI_DEVICE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MIDI_DEVICE_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_MUSIC_RECOGNITION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_MUSIC_RECOGNITION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NETWORK_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NFC_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NFC_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PACKAGE_VERIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PACKAGE_VERIFIER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_RECOMMENDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_PRINT_SPOOLER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_PRINT_SPOOLER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_ACCESS_WALLET_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_QUICK_SETTINGS_TILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_QUICK_SETTINGS_TILE", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.BIND_REMOTEVIEWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTEVIEWS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_REMOTE_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_REMOTE_LOCKSCREEN_VALIDATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_REMOTE_LOCKSCREEN_VALIDATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RESUME_ON_REBOOT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RESUME_ON_REBOOT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROTATION_RESOLVER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROTATION_RESOLVER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_ROUTE_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_ROUTE_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SATELLITE_GATEWAY_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SATELLITE_GATEWAY_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SATELLITE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SATELLITE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.BIND_SCREENING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SCREENING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_SELECTION_TOOLBAR_RENDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SELECTION_TOOLBAR_RENDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SETTINGS_SUGGESTIONS_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_SOUND_TRIGGER_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELECOM_CONNECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELECOM_CONNECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TELEPHONY_DATA_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_DATA_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TELEPHONY_NETWORK_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TELEPHONY_NETWORK_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXTCLASSIFIER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXTCLASSIFIER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TEXT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TEXT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRACE_REPORT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRACE_REPORT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRANSLATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRANSLATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_INTERACTIVE_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_INTERACTIVE_APP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_TV_REMOTE_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_TV_REMOTE_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VISUAL_QUERY_DETECTION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_QUERY_DETECTION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_VOICE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VOICE_INTERACTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VPN_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VPN_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_VR_LISTENER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_VR_LISTENER_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BIND_WALLPAPER_EFFECTS_GENERATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WALLPAPER_EFFECTS_GENERATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WEARABLE_SENSING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BIND_WEARABLE_SENSING_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH": { "description": "Allows the app to view the\n configuration of the Bluetooth on the phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "pair with Bluetooth devices", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows the app to configure\n the local Bluetooth phone, and to discover and pair with remote devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "access Bluetooth settings", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BLUETOOTH_ADVERTISE": { "description": "Allows the app to advertise to nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_advertise", "label": "advertise to nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_advertise", "name": "android.permission.BLUETOOTH_ADVERTISE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_CONNECT": { "description": "Allows the app to connect to paired Bluetooth devices", "description_ptr": "permdesc_bluetooth_connect", "label": "connect to paired Bluetooth devices", "label_ptr": "permlab_bluetooth_connect", "name": "android.permission.BLUETOOTH_CONNECT", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.BLUETOOTH_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BLUETOOTH_SCAN": { "description": "Allows the app to discover and pair nearby Bluetooth devices", "description_ptr": "permdesc_bluetooth_scan", "label": "discover and pair nearby Bluetooth devices", "label_ptr": "permlab_bluetooth_scan", "name": "android.permission.BLUETOOTH_SCAN", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BLUETOOTH_STACK", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.BODY_SENSORS": { "description": "Allows the app to access body sensor data, such as heart rate, temperature, and blood oxygen percentage, while the app is in use.", "description_ptr": "permdesc_bodySensors", "label": "Access body sensor data, like heart rate, while in use", "label_ptr": "permlab_bodySensors", "name": "android.permission.BODY_SENSORS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BODY_SENSORS_BACKGROUND": { "description": "Allows the app to access body sensor data, such as heart rate, temperature, and blood oxygen percentage, while the app is in the background.", "description_ptr": "permdesc_bodySensors_background", "label": "Access body sensor data, like heart rate, while in the background", "label_ptr": "permlab_bodySensors_background", "name": "android.permission.BODY_SENSORS_BACKGROUND", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BRIGHTNESS_SLIDER_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BRIGHTNESS_SLIDER_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.BROADCAST_NETWORK_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_NETWORK_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_OPTION_INTERACTIVE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_OPTION_INTERACTIVE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows the app to\n send sticky broadcasts, which remain after the broadcast ends. Excessive\n use may make the phone slow or unstable by causing it to use too\n much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BYPASS_ROLE_QUALIFICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.BYPASS_ROLE_QUALIFICATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.CACHE_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CACHE_CONTENT", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.CALL_AUDIO_INTERCEPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_AUDIO_INTERCEPTION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CALL_COMPANION_APP": { "description": "Allows the app to see and control ongoing calls on the\n device. This includes information such as call numbers for calls and the state of the\n calls.", "description_ptr": "permdesc_callCompanionApp", "label": "see and control calls through the system.", "label_ptr": "permlab_callCompanionApp", "name": "android.permission.CALL_COMPANION_APP", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CALL_PHONE": { "description": "Allows the app to call phone numbers\n without your intervention. This may result in unexpected charges or calls.\n Note that this doesn't allow the app to call emergency numbers.\n Malicious apps may cost you money by making calls without your\n confirmation, or dial carrier codes which cause incoming calls to be\n automatically forwarded to another number.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA": { "description": "This app can take pictures and record videos using the camera while the app is in use.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.CAMERA_DISABLE_TRANSMIT_LED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_DISABLE_TRANSMIT_LED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_INJECT_EXTERNAL_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAMERA_OPEN_CLOSE_LISTENER": { "description": "This app can receive callbacks when any camera device is being opened (by what application) or closed.", "description_ptr": "permdesc_cameraOpenCloseListener", "label": "Allow an application or service to receive callbacks about camera devices being opened or closed.", "label_ptr": "permlab_cameraOpenCloseListener", "name": "android.permission.CAMERA_OPEN_CLOSE_LISTENER", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature" }, "android.permission.CAMERA_SEND_SYSTEM_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAMERA_SEND_SYSTEM_EVENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_AUDIO_HOTWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_HOTWORD", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_BLACKOUT_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_BLACKOUT_CONTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD", "permissionGroup": "", "protectionLevel": "internal|appop" }, "android.permission.CAPTURE_MEDIA_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_MEDIA_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_TUNER_AUDIO_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TUNER_AUDIO_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_TV_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_TV_INPUT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CAPTURE_VIDEO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VIDEO_OUTPUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CARRIER_FILTER_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CARRIER_FILTER_SMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_ACCESSIBILITY_VOLUME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_ACCESSIBILITY_VOLUME", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_APP_IDLE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_IDLE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_APP_LAUNCH_TIME_ESTIMATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_APP_LAUNCH_TIME_ESTIMATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CHANGE_CONFIGURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_LOWPAN_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_LOWPAN_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows the app to change the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_OVERLAY_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHANGE_OVERLAY_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows the app to receive\n packets sent to all devices on a Wi-Fi network using multicast addresses,\n not just your phone. It uses more power than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows the app to connect to and\n disconnect from Wi-Fi access points and to make changes to device\n configuration for Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "connect and disconnect from Wi-Fi", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CHECK_REMOTE_LOCKSCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CHECK_REMOTE_LOCKSCREEN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_CACHE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.CLEAR_FREEZE_PERIOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CLEAR_FREEZE_PERIOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COMPANION_APPROVE_WIFI_CONNECTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONFIGURE_DISPLAY_COLOR_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_DISPLAY_COLOR_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.CONFIGURE_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIGURE_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature|knownSigner" }, "android.permission.CONFIRM_FULL_BACKUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONFIRM_FULL_BACKUP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONNECTIVITY_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_ALWAYS_ON_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_ALWAYS_ON_VPN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_AUTOMOTIVE_GNSS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_AUTOMOTIVE_GNSS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DEVICE_LIGHTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_LIGHTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DEVICE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DEVICE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_BRIGHTNESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_BRIGHTNESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_DISPLAY_SATURATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_DISPLAY_SATURATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_INCALL_EXPERIENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_INCALL_EXPERIENCE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.CONTROL_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_KEYGUARD_SECURE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_OEM_PAID_NETWORK_PREFERENCE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_UI_TRACING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_UI_TRACING", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.CONTROL_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_VPN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.CONTROL_WIFI_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CONTROL_WIFI_DISPLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.COPY_PROTECTED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_USERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CREATE_VIRTUAL_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREATE_VIRTUAL_DEVICE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREDENTIAL_MANAGER_SET_ALLOWED_PROVIDERS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CREDENTIAL_MANAGER_SET_ORIGIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CREDENTIAL_MANAGER_SET_ORIGIN", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.CRYPT_KEEPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.CRYPT_KEEPER", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DELETE_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.DELETE_STAGED_HEALTH_CONNECT_REMOTE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DELETE_STAGED_HEALTH_CONNECT_REMOTE_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELIVER_COMPANION_MESSAGES": { "description": "Allows a companion app to deliver companion messages to other devices.", "description_ptr": "permdesc_deliverCompanionMessages", "label": "Deliver companion messages", "label_ptr": "permlab_deliverCompanionMessages", "name": "android.permission.DELIVER_COMPANION_MESSAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DETECT_SCREEN_CAPTURE": { "description": "This app will get notified when a screenshot is taken while the app is in use.", "description_ptr": "permdesc_detectScreenCapture", "label": "detect screen captures of app windows", "label_ptr": "permlab_detectScreenCapture", "name": "android.permission.DETECT_SCREEN_CAPTURE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DEVICE_POWER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.DIAGNOSTIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_HIDDEN_API_CHECKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_HIDDEN_API_CHECKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows the app to disable the\n keylock and any associated password security. For example, the phone\n disables the keylock when receiving an incoming phone call, then\n re-enables the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable your screen lock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISABLE_SYSTEM_SOUND_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_NFC_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_NFC_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DISPATCH_PROVISIONING_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DISPATCH_PROVISIONING_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.DOMAIN_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DOMAIN_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "internal|privileged" }, "android.permission.DUMP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DUMP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.DVB_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.DVB_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.ENABLE_TEST_HARNESS_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENABLE_TEST_HARNESS_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ENFORCE_UPDATE_OWNERSHIP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENFORCE_UPDATE_OWNERSHIP", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.ENTER_CAR_MODE_PRIORITIZED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ENTER_CAR_MODE_PRIORITIZED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.EXECUTE_APP_ACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.EXECUTE_APP_ACTION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS": { "description": "Exempt the app from restrictions to record audio.", "description_ptr": "permdesc_exemptFromAudioRecordRestrictions", "label": "exempt from audio record restrictions", "label_ptr": "permlab_exemptFromAudioRecordRestrictions", "name": "android.permission.EXEMPT_FROM_AUDIO_RECORD_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows the app to expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FILTER_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FILTER_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FLASHLIGHT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.FOREGROUND_SERVICE": { "description": "Allows the app to make use of foreground services.", "description_ptr": "permdesc_foregroundService", "label": "run foreground service", "label_ptr": "permlab_foregroundService", "name": "android.permission.FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_CAMERA": { "description": "Allows the app to make use of foreground services with the type camera", "description_ptr": "permdesc_foregroundServiceCamera", "label": "run foreground service with the type camera", "label_ptr": "permlab_foregroundServiceCamera", "name": "android.permission.FOREGROUND_SERVICE_CAMERA", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE": { "description": "Allows the app to make use of foreground services with the type connectedDevice", "description_ptr": "permdesc_foregroundServiceConnectedDevice", "label": "run foreground service with the type connectedDevice", "label_ptr": "permlab_foregroundServiceConnectedDevice", "name": "android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_DATA_SYNC": { "description": "Allows the app to make use of foreground services with the type dataSync", "description_ptr": "permdesc_foregroundServiceDataSync", "label": "run foreground service with the type dataSync", "label_ptr": "permlab_foregroundServiceDataSync", "name": "android.permission.FOREGROUND_SERVICE_DATA_SYNC", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT": { "description": "Allows the app to make use of foreground services with the type fileManagement", "description_ptr": "permdesc_foregroundServiceFileManagement", "label": "run foreground service with the type fileManagement", "label_ptr": "permlab_foregroundServiceFileManagement", "name": "android.permission.FOREGROUND_SERVICE_FILE_MANAGEMENT", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_HEALTH": { "description": "Allows the app to make use of foreground services with the type health", "description_ptr": "permdesc_foregroundServiceHealth", "label": "run foreground service with the type health", "label_ptr": "permlab_foregroundServiceHealth", "name": "android.permission.FOREGROUND_SERVICE_HEALTH", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_LOCATION": { "description": "Allows the app to make use of foreground services with the type location", "description_ptr": "permdesc_foregroundServiceLocation", "label": "run foreground service with the type location", "label_ptr": "permlab_foregroundServiceLocation", "name": "android.permission.FOREGROUND_SERVICE_LOCATION", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK": { "description": "Allows the app to make use of foreground services with the type mediaPlayback", "description_ptr": "permdesc_foregroundServiceMediaPlayback", "label": "run foreground service with the type mediaPlayback", "label_ptr": "permlab_foregroundServiceMediaPlayback", "name": "android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION": { "description": "Allows the app to make use of foreground services with the type mediaProjection", "description_ptr": "permdesc_foregroundServiceMediaProjection", "label": "run foreground service with the type mediaProjection", "label_ptr": "permlab_foregroundServiceMediaProjection", "name": "android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_MICROPHONE": { "description": "Allows the app to make use of foreground services with the type microphone", "description_ptr": "permdesc_foregroundServiceMicrophone", "label": "run foreground service with the type microphone", "label_ptr": "permlab_foregroundServiceMicrophone", "name": "android.permission.FOREGROUND_SERVICE_MICROPHONE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_PHONE_CALL": { "description": "Allows the app to make use of foreground services with the type phoneCall", "description_ptr": "permdesc_foregroundServicePhoneCall", "label": "run foreground service with the type phoneCall", "label_ptr": "permlab_foregroundServicePhoneCall", "name": "android.permission.FOREGROUND_SERVICE_PHONE_CALL", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING": { "description": "Allows the app to make use of foreground services with the type remoteMessaging", "description_ptr": "permdesc_foregroundServiceRemoteMessaging", "label": "run foreground service with the type remoteMessaging", "label_ptr": "permlab_foregroundServiceRemoteMessaging", "name": "android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FOREGROUND_SERVICE_SPECIAL_USE": { "description": "Allows the app to make use of foreground services with the type specialUse", "description_ptr": "permdesc_foregroundServiceSpecialUse", "label": "run foreground service with the type specialUse", "label_ptr": "permlab_foregroundServiceSpecialUse", "name": "android.permission.FOREGROUND_SERVICE_SPECIAL_USE", "permissionGroup": "", "protectionLevel": "normal|appop|instant" }, "android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED": { "description": "Allows the app to make use of foreground services with the type systemExempted", "description_ptr": "permdesc_foregroundServiceSystemExempted", "label": "run foreground service with the type systemExempted", "label_ptr": "permlab_foregroundServiceSystemExempted", "name": "android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.FRAME_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FRAME_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FREEZE_SCREEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.FREEZE_SCREEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows the app to get\n the list of accounts known by the phone. This may include any accounts\n created by applications you have installed.", "description_ptr": "permdesc_getAccounts", "label": "find accounts on the device", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.GET_ACCOUNTS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ACCOUNTS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GET_ANY_PROVIDER_TYPE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_ANY_PROVIDER_TYPE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_GRANTED_URI_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_GRANTED_URI_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_APP_METADATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_METADATA", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.GET_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_DETAILED_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_DETAILED_TASKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_HISTORICAL_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_HISTORICAL_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.GET_INTENT_SENDER_INTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_INTENT_SENDER_INTENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows the app to retrieve its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure app storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_PEOPLE_TILE_PREVIEW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PEOPLE_TILE_PREVIEW", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.GET_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_TASKS": { "description": "Allows the app to retrieve information\n about currently and recently running tasks. This may allow the app to\n discover information about which applications are used on the device.", "description_ptr": "permdesc_getTasks", "label": "retrieve running apps", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.GET_TOP_ACTIVITY_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GET_TOP_ACTIVITY_INFO", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HANDLE_CAR_MODE_CHANGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HANDLE_CAR_MODE_CHANGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.HANDLE_QUERY_PACKAGE_RESTART": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HANDLE_QUERY_PACKAGE_RESTART", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.HDMI_CEC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HDMI_CEC", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.HIDE_OVERLAY_WINDOWS": { "description": "This app can request that the system hides overlays originating from apps from being shown on top of it.", "description_ptr": "permdesc_hideOverlayWindows", "label": "hide other apps overlays", "label_ptr": "permlab_hideOverlayWindows", "name": "android.permission.HIDE_OVERLAY_WINDOWS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.HIGH_SAMPLING_RATE_SENSORS": { "description": "Allows the app to sample sensor data at a rate greater than 200 Hz", "description_ptr": "permdesc_highSamplingRateSensors", "label": "access sensor data at a high sampling rate", "label_ptr": "permlab_highSamplingRateSensors", "name": "android.permission.HIGH_SAMPLING_RATE_SENSORS", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.INJECT_EVENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INPUT_CONSUMER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INPUT_CONSUMER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_DPC_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DPC_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.INSTALL_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_LOCATION_TIME_ZONE_PROVIDER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_PACKAGE_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_PACKAGE_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_SELF_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_SELF_UPDATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INSTALL_TEST_ONLY_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTALL_TEST_ONLY_PACKAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTANT_APP_FOREGROUND_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INSTANT_APP_FOREGROUND_SERVICE", "permissionGroup": "", "protectionLevel": "signature|development|instant|appop" }, "android.permission.INTENT_FILTER_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTENT_FILTER_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.INTERACT_ACROSS_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_PROFILES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.INTERACT_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.INTERACT_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERACT_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "signature|installer|role" }, "android.permission.INTERNAL_DELETE_CACHE_FILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature|module" }, "android.permission.INTERNET": { "description": "Allows the app to create\n network sockets and use custom network protocols. The browser and other\n applications provide means to send data to the internet, so this\n permission is not required to send data to the internet.", "description_ptr": "permdesc_createNetworkSockets", "label": "have full network access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.INVOKE_CARRIER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.INVOKE_CARRIER_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KEEP_UNINSTALLED_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEEP_UNINSTALLED_PACKAGES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_ALL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_ALL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.KILL_UID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.KILL_UID", "permissionGroup": "", "protectionLevel": "signature|installer|role" }, "android.permission.LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.LAUNCH_CREDENTIAL_SELECTOR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_CREDENTIAL_SELECTOR", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.LAUNCH_DEVICE_MANAGER_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_DEVICE_MANAGER_SETUP", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.LAUNCH_TRUST_AGENT_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LAUNCH_TRUST_AGENT_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.LIST_ENABLED_CREDENTIAL_PROVIDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LIST_ENABLED_CREDENTIAL_PROVIDERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOADER_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOADER_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.LOCAL_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCAL_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_BYPASS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_BYPASS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOCATION_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCATION_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.LOCK_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOCK_DEVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOG_COMPAT_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOG_COMPAT_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.LOG_FOREGROUND_RESOURCE_USE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOG_FOREGROUND_RESOURCE_USE", "permissionGroup": "", "protectionLevel": "signature|module" }, "android.permission.LOOP_RADIO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.LOOP_RADIO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MAKE_UID_VISIBLE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MAKE_UID_VISIBLE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature|setup|recents|role" }, "android.permission.MANAGE_ACCOUNTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_ACTIVITY_STACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_STACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ACTIVITY_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ACTIVITY_TASKS", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MANAGE_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APPOPS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_APP_HIBERNATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_HIBERNATION", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_OPS_MODES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_MODES", "permissionGroup": "", "protectionLevel": "signature|installer|verifier|role" }, "android.permission.MANAGE_APP_OPS_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_OPS_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_APP_PREDICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_PREDICTIONS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_APP_TOKENS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUDIO_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUDIO_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_AUTO_FILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_AUTO_FILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIND_INSTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIND_INSTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BIOMETRIC_DIALOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BIOMETRIC_DIALOG", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_BLUETOOTH_WHEN_WIRELESS_CONSENT_REQUIRED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CAMERA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CARRIER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CA_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CA_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_CLIPBOARD_ACCESS_NOTIFICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CLIPBOARD_ACCESS_NOTIFICATION", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_CLOUDSEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CLOUDSEARCH", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_COMPANION_DEVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_COMPANION_DEVICES", "permissionGroup": "", "protectionLevel": "module|signature|role" }, "android.permission.MANAGE_CONTENT_CAPTURE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_CAPTURE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CONTENT_SUGGESTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CONTENT_SUGGESTIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CRATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CRATES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_CREDENTIAL_MANAGEMENT_APP", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_DEBUGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEBUGGING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_DEFAULT_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEFAULT_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_DEVICE_ADMINS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_ADMINS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_DEVICE_LOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_LOCK_STATE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_ACCOUNT_MANAGEMENT", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_AIRPLANE_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_AIRPLANE_MODE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_APP_USER_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_AUDIO_OUTPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_AUDIO_OUTPUT", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_AUTOFILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_AUTOFILL", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_BACKUP_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_BACKUP_SERVICE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_BLUETOOTH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_BLUETOOTH", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_BUGREPORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_BUGREPORT", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_CALLS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_CAMERA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_CAMERA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_DEFAULT_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_DEFAULT_SMS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_DEVICE_IDENTIFIERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_DEVICE_IDENTIFIERS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_DISPLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_DISPLAY", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_FACTORY_RESET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_FACTORY_RESET", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_FUN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_FUN", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_INPUT_METHODS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_INPUT_METHODS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_KEEP_UNINSTALLED_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_KEEP_UNINSTALLED_PACKAGES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_KEYGUARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_KEYGUARD", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_LOCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_LOCALE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_LOCATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_LOCK", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_METERED_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_METERED_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_MICROPHONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_MICROPHONE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_MOBILE_NETWORK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_MOBILE_NETWORK", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_MTE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_MTE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_NETWORK_LOGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_NETWORK_LOGGING", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_OVERRIDE_APN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_OVERRIDE_APN", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_PACKAGE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_PACKAGE_STATE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_PHYSICAL_MEDIA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_PHYSICAL_MEDIA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_PRINTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_PRINTING", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_PROFILES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_PROFILE_INTERACTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_PROFILE_INTERACTION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_PROXY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_PROXY", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_RESET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_RESET_PASSWORD", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_RUN_IN_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SAFE_BOOT", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SCREEN_CAPTURE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SCREEN_CAPTURE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SCREEN_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SCREEN_CONTENT", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SECURITY_LOGGING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SECURITY_LOGGING", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SETTINGS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SMS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_STATUS_BAR", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SUSPEND_PERSONAL_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SUSPEND_PERSONAL_APPS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_APPS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_UPDATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_SYSTEM_UPDATES", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_TIME", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_USERS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_VPN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_VPN", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_WALLPAPER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_WALLPAPER", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_WIFI": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_WIFI", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_WINDOWS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_WINDOWS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DEVICE_POLICY_WIPE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DEVICE_POLICY_WIPE_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.MANAGE_DOCUMENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DOCUMENTS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_DYNAMIC_SYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_DYNAMIC_SYSTEM", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_ETHERNET_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ETHERNET_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_EXTERNAL_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_FACE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FACE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_FACTORY_RESET_PROTECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FACTORY_RESET_PROTECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_FINGERPRINT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_FINGERPRINT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_GAME_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_GAME_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_GAME_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_GAME_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_HOTWORD_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_HOTWORD_DETECTION", "permissionGroup": "", "protectionLevel": "internal|preinstalled" }, "android.permission.MANAGE_IPSEC_TUNNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_IPSEC_TUNNELS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_LOWPAN_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOWPAN_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_LOW_POWER_STANDBY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_LOW_POWER_STANDBY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_MEDIA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA", "permissionGroup": "", "protectionLevel": "signature|appop|preinstalled" }, "android.permission.MANAGE_MEDIA_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MEDIA_PROJECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_MUSIC_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_MUSIC_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_NOTIFICATION_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_NOTIFICATION_LISTENERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ONGOING_CALLS": { "description": "Allows an app to see details about ongoing calls\n on your device and to control these calls.", "description_ptr": "permdesc_manageOngoingCalls", "label": "Manage ongoing calls", "label_ptr": "permlab_manageOngoingCalls", "name": "android.permission.MANAGE_ONGOING_CALLS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.MANAGE_OWN_CALLS": { "description": "Allows the app to route its calls through the system in\n order to improve the calling experience.", "description_ptr": "permdesc_manageOwnCalls", "label": "route calls through the system", "label_ptr": "permlab_manageOwnCalls", "name": "android.permission.MANAGE_OWN_CALLS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS": { "description": "Allows apps to set the profile owners and the device owner.", "description_ptr": "permdesc_manageProfileAndDeviceOwners", "label": "manage profile and device owners", "label_ptr": "permlab_manageProfileAndDeviceOwners", "name": "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_ROTATION_RESOLVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_ROTATION_RESOLVER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SAFETY_CENTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SAFETY_CENTER", "permissionGroup": "", "protectionLevel": "internal|installer|role" }, "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SCOPED_ACCESS_DIRECTORY_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SEARCH_UI": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SEARCH_UI", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MANAGE_SENSORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role|installer" }, "android.permission.MANAGE_SLICE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SLICE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SMARTSPACE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SMARTSPACE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SOUND_TRIGGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SOUND_TRIGGER", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_SPEECH_RECOGNITION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SPEECH_RECOGNITION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_SUBSCRIPTION_PLANS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_PLANS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_SUBSCRIPTION_USER_ASSOCIATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_SUBSCRIPTION_USER_ASSOCIATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_TEST_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TEST_NETWORKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_TIME_AND_ZONE_DETECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TIME_AND_ZONE_DETECTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_TOAST_RATE_LIMITING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_TOAST_RATE_LIMITING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_UI_TRANSLATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_UI_TRANSLATION", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MANAGE_USB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_USER_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_USER_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_VOICE_KEYPHRASES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_VOICE_KEYPHRASES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WALLPAPER_EFFECTS_GENERATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WALLPAPER_EFFECTS_GENERATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WEAK_ESCROW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WEAK_ESCROW_TOKEN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WEARABLE_SENSING_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WEARABLE_SENSING_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MANAGE_WIFI_COUNTRY_CODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_COUNTRY_CODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MANAGE_WIFI_INTERFACES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_INTERFACES", "permissionGroup": "", "protectionLevel": "signature|privileged|knownSigner" }, "android.permission.MANAGE_WIFI_NETWORK_SELECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MANAGE_WIFI_NETWORK_SELECTION", "permissionGroup": "", "protectionLevel": "signature|privileged|knownSigner" }, "android.permission.MARK_DEVICE_ORGANIZATION_OWNED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MARK_DEVICE_ORGANIZATION_OWNED", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.MASTER_CLEAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MEDIA_CONTENT_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_CONTENT_CONTROL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MEDIA_RESOURCE_OVERRIDE_PID": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MEDIA_RESOURCE_OVERRIDE_PID", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.MIGRATE_HEALTH_CONNECT_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MIGRATE_HEALTH_CONNECT_DATA", "permissionGroup": "", "protectionLevel": "signature|knownSigner" }, "android.permission.MODIFY_ACCESSIBILITY_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_ACCESSIBILITY_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_AUDIO_ROUTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_ROUTING", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows the app to modify global audio settings such as volume and which speaker is used for output.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_CELL_BROADCASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_CELL_BROADCASTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DAY_NIGHT_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DAY_NIGHT_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_HDR_CONVERSION_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_HDR_CONVERSION_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_NETWORK_ACCOUNTING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_NETWORK_ACCOUNTING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PARENTAL_CONTROLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PARENTAL_CONTROLS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MODIFY_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.MODIFY_QUIET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_QUIET_MODE", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role" }, "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_REFRESH_RATE_SWITCHING_TYPE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_SETTINGS_OVERRIDEABLE_BY_RESTORE", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.MODIFY_THEME_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_THEME_OVERLAY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_TOUCH_MODE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_TOUCH_MODE_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_DEFAULT_SMS_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEFAULT_SMS_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MONITOR_DEVICE_CONFIG_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_DEVICE_CONFIG_ACCESS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MONITOR_INPUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_INPUT", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.MONITOR_KEYBOARD_BACKLIGHT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MONITOR_KEYBOARD_BACKLIGHT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.MOVE_PACKAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NEARBY_WIFI_DEVICES": { "description": "Allows the app to advertise, connect, and determine the relative position of nearby Wiu2011Fi devices", "description_ptr": "permdesc_nearby_wifi_devices", "label": "interact with nearby Wiu2011Fi devices", "label_ptr": "permlab_nearby_wifi_devices", "name": "android.permission.NEARBY_WIFI_DEVICES", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.NETWORK_AIRPLANE_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_AIRPLANE_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_BYPASS_PRIVATE_DNS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_BYPASS_PRIVATE_DNS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_CARRIER_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_CARRIER_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_FACTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_FACTORY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NETWORK_MANAGED_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_MANAGED_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NETWORK_SCAN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SCAN", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETTINGS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_SETUP_WIZARD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SETUP_WIZARD", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NETWORK_STACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NETWORK_STATS_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NETWORK_STATS_PROVIDER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.NET_ADMIN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_ADMIN", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NET_TUNNELING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NET_TUNNELING", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.NFC": { "description": "Allows the app to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_HANDOVER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_HANDOVER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_PREFERRED_PAYMENT_INFO": { "description": "Allows the app to get preferred nfc payment service information like\n registered aids and route destination.", "description_ptr": "permdesc_preferredPaymentInfo", "label": "Preferred NFC Payment Service Information", "label_ptr": "permlab_preferredPaymentInfo", "name": "android.permission.NFC_PREFERRED_PAYMENT_INFO", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_SET_CONTROLLER_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NFC_TRANSACTION_EVENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NFC_TRANSACTION_EVENT", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.NOTIFICATION_DURING_SETUP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFICATION_DURING_SETUP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.NOTIFY_TV_INPUTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.NOTIFY_TV_INPUTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_APP_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_APP_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OBSERVE_NETWORK_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_NETWORK_POLICY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OBSERVE_ROLE_HOLDERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_ROLE_HOLDERS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OBSERVE_SENSOR_PRIVACY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OBSERVE_SENSOR_PRIVACY", "permissionGroup": "", "protectionLevel": "internal|role|installer" }, "android.permission.OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OPEN_ACCESSIBILITY_DETAILS_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_DISPLAY_MODE_REQUESTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.OVERRIDE_WIFI_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.OVERRIDE_WIFI_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged|knownSigner" }, "android.permission.PACKAGE_ROLLBACK_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_ROLLBACK_AGENT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|appop|retailDemo" }, "android.permission.PACKAGE_VERIFICATION_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKAGE_VERIFICATION_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PACKET_KEEPALIVE_OFFLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PACKET_KEEPALIVE_OFFLOAD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PEEK_DROPBOX_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEEK_DROPBOX_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PEERS_MAC_ADDRESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PEERS_MAC_ADDRESS", "permissionGroup": "", "protectionLevel": "signature|setup|role" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.PERFORM_IMS_SINGLE_REGISTRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_IMS_SINGLE_REGISTRATION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.PERFORM_SIM_ACTIVATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PERFORM_SIM_ACTIVATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows the app to make parts of itself persistent in memory. This can limit memory available to other apps slowing down the phone.", "description_ptr": "permdesc_persistentActivity", "label": "make app always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.POST_NOTIFICATIONS": { "description": "Allows the app to show notifications", "description_ptr": "permdesc_postNotification", "label": "show notifications", "label_ptr": "permlab_postNotification", "name": "android.permission.POST_NOTIFICATIONS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.POWER_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.POWER_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows the app to see the\n number being dialed during an outgoing call with the option to redirect\n the call to a different number or abort the call altogether.", "description_ptr": "permdesc_processOutgoingCalls", "label": "reroute outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.PROVIDE_DEFAULT_ENABLED_CREDENTIAL_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_DEFAULT_ENABLED_CREDENTIAL_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_OWN_AUTOFILL_SUGGESTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_OWN_AUTOFILL_SUGGESTIONS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.PROVIDE_REMOTE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_REMOTE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_RESOLVER_RANKER_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVIDE_TRUST_AGENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVIDE_TRUST_AGENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.PROVISION_DEMO_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.PROVISION_DEMO_DEVICE", "permissionGroup": "", "protectionLevel": "signature|setup|knownSigner" }, "android.permission.QUERY_ADMIN_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_ADMIN_POLICY", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.QUERY_ALL_PACKAGES": { "description": "Allows an app to see all installed packages.", "description_ptr": "permdesc_queryAllPackages", "label": "query all packages", "label_ptr": "permlab_queryAllPackages", "name": "android.permission.QUERY_ALL_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.QUERY_AUDIO_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_AUDIO_STATE", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.QUERY_CLONED_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_CLONED_APPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.QUERY_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.QUERY_USERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.QUERY_USERS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.RADIO_SCAN_WITHOUT_LOCATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RADIO_SCAN_WITHOUT_LOCATION", "permissionGroup": "", "protectionLevel": "signature|companion" }, "android.permission.READ_ACTIVE_EMERGENCY_SESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_ACTIVE_EMERGENCY_SESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_APP_SPECIFIC_LOCALES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_APP_SPECIFIC_LOCALES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.READ_ASSISTANT_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_ASSISTANT_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_BASIC_PHONE_STATE": { "description": "Allows the app to access the basic telephony\n features of the device.", "description_ptr": "permdesc_readBasicPhoneState", "label": "read basic telephony status and identity ", "label_ptr": "permlab_readBasicPhoneState", "name": "android.permission.READ_BASIC_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "normal" }, "android.permission.READ_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CALENDAR": { "description": "This app can read all calendar events stored on your phone and share or save your calendar data.", "description_ptr": "permdesc_readCalendar", "label": "Read calendar events and details", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CALL_LOG": { "description": "This app can read your call history.", "description_ptr": "permdesc_readCallLog", "label": "read call log", "label_ptr": "permlab_readCallLog", "name": "android.permission.READ_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CARRIER_APP_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CARRIER_APP_INFO", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_CELL_BROADCASTS": { "description": "Allows the app to read\n cell broadcast messages received by your device. Cell broadcast alerts\n are delivered in some locations to warn you of emergency situations.\n Malicious apps may interfere with the performance or operation of your\n device when an emergency cell broadcast is received.", "description_ptr": "permdesc_readCellBroadcasts", "label": "read cell broadcast messages", "label_ptr": "permlab_readCellBroadcasts", "name": "android.permission.READ_CELL_BROADCASTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CLIPBOARD_IN_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CLIPBOARD_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.READ_COMPAT_CHANGE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_COMPAT_CHANGE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_CONTACTS": { "description": "Allows the app to read data about your contacts stored on your phone.\n Apps will also have access to the accounts on your phone that have created contacts.\n This may include accounts created by apps you have installed.\n This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.", "description_ptr": "permdesc_readContacts", "label": "read your contacts", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_CONTENT_RATING_SYSTEMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_CONTENT_RATING_SYSTEMS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_DREAM_SUPPRESSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_DREAM_SUPPRESSION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_EXTERNAL_STORAGE": { "description": "Allows the app to read the contents of your shared storage.", "description_ptr": "permdesc_sdcardRead", "label": "read the contents of your shared storage", "label_ptr": "permlab_sdcardRead", "name": "android.permission.READ_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.READ_GLOBAL_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_GLOBAL_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_HOME_APP_SEARCH_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_HOME_APP_SEARCH_DATA", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.READ_INPUT_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INSTALLED_SESSION_PATHS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_INSTALLED_SESSION_PATHS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.READ_INSTALL_SESSIONS": { "description": "Allows an application to read install sessions. This allows it to see details about active package installations.", "description_ptr": "permdesc_readInstallSessions", "label": "read install sessions", "label_ptr": "permlab_readInstallSessions", "name": "android.permission.READ_INSTALL_SESSIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_LOGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.READ_LOWPAN_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_LOWPAN_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_MEDIA_AUDIO": { "description": "Allows the app to read audio files from your shared storage.", "description_ptr": "permdesc_readMediaAudio", "label": "read audio files from shared storage", "label_ptr": "permlab_readMediaAudio", "name": "android.permission.READ_MEDIA_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_MEDIA_IMAGES": { "description": "Allows the app to read image files from your shared storage.", "description_ptr": "permdesc_readMediaImages", "label": "read image files from shared storage", "label_ptr": "permlab_readMediaImages", "name": "android.permission.READ_MEDIA_IMAGES", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_MEDIA_VIDEO": { "description": "Allows the app to read video files from your shared storage.", "description_ptr": "permdesc_readMediaVideo", "label": "read video files from shared storage", "label_ptr": "permlab_readMediaVideo", "name": "android.permission.READ_MEDIA_VIDEO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_MEDIA_VISUAL_USER_SELECTED": { "description": "Allows the app to read image and video files that you select from your shared storage.", "description_ptr": "permdesc_readVisualUserSelect", "label": "read user selected image and video files from shared storage", "label_ptr": "permlab_readVisualUserSelect", "name": "android.permission.READ_MEDIA_VISUAL_USER_SELECTED", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_NEARBY_STREAMING_POLICY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NEARBY_STREAMING_POLICY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_NETWORK_USAGE_HISTORY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_NETWORK_USAGE_HISTORY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_OEM_UNLOCK_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_OEM_UNLOCK_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PEOPLE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PEOPLE_DATA", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.READ_PHONE_NUMBERS": { "description": "Allows the app to access the phone numbers of the device.", "description_ptr": "permdesc_readPhoneNumbers", "label": "read phone numbers", "label_ptr": "permlab_readPhoneNumbers", "name": "android.permission.READ_PHONE_NUMBERS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the app to access the phone\n features of the device. This permission allows the app to determine the\n phone number and device IDs, whether a call is active, and the remote number\n connected by a call.", "description_ptr": "permdesc_readPhoneState", "label": "read phone status and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_PRECISE_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRECISE_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_PRINT_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICES", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.READ_PRIVILEGED_PHONE_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PRIVILEGED_PHONE_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.READ_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_PROJECTION_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_PROJECTION_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_RESTRICTED_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RESTRICTED_STATS", "permissionGroup": "", "protectionLevel": "internal|privileged" }, "android.permission.READ_RUNTIME_PROFILES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_RUNTIME_PROFILES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SAFETY_CENTER_STATUS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SAFETY_CENTER_STATUS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SEARCH_INDEXABLES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SEARCH_INDEXABLES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_SMS": { "description": "This app can read all SMS (text) messages stored on your phone.", "description_ptr": "permdesc_readSms", "label": "read your text messages (SMS or MMS)", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.READ_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced. ", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_SYSTEM_UPDATE_INFO": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_SYSTEM_UPDATE_INFO", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.READ_WALLPAPER_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WALLPAPER_INTERNAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WIFI_CREDENTIAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WIFI_CREDENTIAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.READ_WRITE_SYNC_DISABLED_MODE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.READ_WRITE_SYNC_DISABLED_MODE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.REAL_GET_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REAL_GET_TASKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REBOOT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BLUETOOTH_MAP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_BLUETOOTH_MAP", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows the app to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n app to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "run at startup", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DATA_ACTIVITY_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RECEIVE_EMERGENCY_BROADCAST": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_EMERGENCY_BROADCAST", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_MEDIA_RESOURCE_USAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_MMS": { "description": "Allows the app to receive and process MMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive text messages (MMS)", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows the app to receive and process SMS\n messages. This means the app could monitor or delete messages sent to your\n device without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive text messages (SMS)", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_STK_COMMANDS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_STK_COMMANDS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows the app to receive and process\n WAP messages. This permission includes the ability to monitor or delete\n messages sent to you without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive text messages (WAP)", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECEIVE_WIFI_CREDENTIAL_CHANGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECORD_AUDIO": { "description": "This app can record audio using the microphone while the app is in use.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous|instant" }, "android.permission.RECORD_BACKGROUND_AUDIO": { "description": "This app can record audio using the microphone at any time.", "description_ptr": "permdesc_recordBackgroundAudio", "label": "record audio in the background", "label_ptr": "permlab_recordBackgroundAudio", "name": "android.permission.RECORD_BACKGROUND_AUDIO", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "internal|role" }, "android.permission.RECOVERY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVERY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RECOVER_KEYSTORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RECOVER_KEYSTORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CALL_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CALL_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_CONNECTION_MANAGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_CONNECTION_MANAGER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_MEDIA_RESOURCE_OBSERVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_SIM_SUBSCRIPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_SIM_SUBSCRIPTION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_STATS_PULL_ATOM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_STATS_PULL_ATOM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMAP_MODIFIER_KEYS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMAP_MODIFIER_KEYS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_AUDIO_PLAYBACK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_AUDIO_PLAYBACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REMOTE_DISPLAY_PROVIDER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOTE_DISPLAY_PROVIDER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_DRM_CERTIFICATES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_DRM_CERTIFICATES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REMOVE_TASKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REMOVE_TASKS", "permissionGroup": "", "protectionLevel": "signature|recents|role" }, "android.permission.RENOUNCE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RENOUNCE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REORDER_TASKS": { "description": "Allows the app to move tasks to the\n foreground and background. The app may do this without your input.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running apps", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_APP_STREAMING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.REQUEST_COMPANION_PROFILE_COMPUTER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_COMPUTER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_COMPANION_PROFILE_GLASSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_GLASSES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_PROFILE_NEARBY_DEVICE_STREAMING", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_COMPANION_PROFILE_WATCH": { "description": "Allows a companion app to manage watches.", "description_ptr": "permdesc_companionProfileWatch", "label": "Companion Watch profile permission to manage watches", "label_ptr": "permlab_companionProfileWatch", "name": "android.permission.REQUEST_COMPANION_PROFILE_WATCH", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.REQUEST_COMPANION_RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_SELF_MANAGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_COMPANION_SELF_MANAGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "Allows a companion app to start foreground services from background.", "description_ptr": "permdesc_startForegroundServicesFromBackground", "label": "Start foreground services from background", "label_ptr": "permlab_startForegroundServicesFromBackground", "name": "android.permission.REQUEST_COMPANION_START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_DELETE_PACKAGES": { "description": "Allows an application to request deletion of packages.", "description_ptr": "permdesc_requestDeletePackages", "label": "request delete packages", "label_ptr": "permlab_requestDeletePackages", "name": "android.permission.REQUEST_DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS": { "description": "Allows an app to ask for permission to ignore battery optimizations for that app.", "description_ptr": "permdesc_requestIgnoreBatteryOptimizations", "label": "ask to ignore battery optimizations", "label_ptr": "permlab_requestIgnoreBatteryOptimizations", "name": "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_INCIDENT_REPORT_APPROVAL", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.REQUEST_INSTALL_PACKAGES": { "description": "Allows an application to request installation of packages.", "description_ptr": "permdesc_requestInstallPackages", "label": "request install packages", "label_ptr": "permlab_requestInstallPackages", "name": "android.permission.REQUEST_INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.REQUEST_NETWORK_SCORES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NETWORK_SCORES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE": { "description": "Allows a companion app to observe companion device presence when the devices are nearby or far-away.", "description_ptr": "permdesc_observeCompanionDevicePresence", "label": "Observe companion device presence", "label_ptr": "permlab_observeCompanionDevicePresence", "name": "android.permission.REQUEST_OBSERVE_COMPANION_DEVICE_PRESENCE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_PASSWORD_COMPLEXITY": { "description": "Allows the app to learn the screen\n lock complexity level (high, medium, low or none), which indicates the possible range of\n length and type of the screen lock. The app can also suggest to users that they update the\n screen lock to a certain level but users can freely ignore and navigate away. Note that the\n screen lock is not stored in plaintext so the app does not know the exact password.\n ", "description_ptr": "permdesc_requestPasswordComplexity", "label": "request screen lock complexity", "label_ptr": "permlab_requestPasswordComplexity", "name": "android.permission.REQUEST_PASSWORD_COMPLEXITY", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.REQUEST_UNIQUE_ID_ATTESTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REQUEST_UNIQUE_ID_ATTESTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_APP_ERRORS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_APP_ERRORS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_FINGERPRINT_LOCKOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_FINGERPRINT_LOCKOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESET_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_PASSWORD", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTART_PACKAGES": { "description": "Allows the app to end\n background processes of other apps. This may cause other apps to stop\n running.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "close other apps", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.RESTART_WIFI_SUBSYSTEM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTART_WIFI_SUBSYSTEM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RESTORE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTORE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RESTRICTED_VR_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RESTRICTED_VR_ACCESS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.RETRIEVE_WINDOW_CONTENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_CONTENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.RETRIEVE_WINDOW_TOKEN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RETRIEVE_WINDOW_TOKEN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVIEW_ACCESSIBILITY_SERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVIEW_ACCESSIBILITY_SERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_POST_NOTIFICATIONS_WITHOUT_KILL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_POST_NOTIFICATIONS_WITHOUT_KILL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.REVOKE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.REVOKE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.ROTATE_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.ROTATE_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.RUN_IN_BACKGROUND": { "description": "This app can run in the background. This may drain battery faster.", "description_ptr": "permdesc_runInBackground", "label": "run in the background", "label_ptr": "permlab_runInBackground", "name": "android.permission.RUN_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RUN_USER_INITIATED_JOBS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.RUN_USER_INITIATED_JOBS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SATELLITE_COMMUNICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SATELLITE_COMMUNICATION", "permissionGroup": "", "protectionLevel": "role|signature|privileged" }, "android.permission.SCHEDULE_EXACT_ALARM": { "description": "This app can schedule work to happen at a desired time in the future. This also means that the app can run when youu2019re not actively using the device.", "description_ptr": "permdesc_schedule_exact_alarm", "label": "Schedule precisely timed actions", "label_ptr": "permlab_schedule_exact_alarm", "name": "android.permission.SCHEDULE_EXACT_ALARM", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.SCHEDULE_PRIORITIZED_ALARM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCHEDULE_PRIORITIZED_ALARM", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SCORE_NETWORKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SCORE_NETWORKS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_CATEGORY_CAR_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_DEVICE_CUSTOMIZATION_READY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_DEVICE_CUSTOMIZATION_READY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_EMBMS_INTENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_EMBMS_INTENTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_RESPOND_VIA_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_RESPOND_VIA_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SEND_SAFETY_CENTER_UPDATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SAFETY_CENTER_UPDATE", "permissionGroup": "", "protectionLevel": "internal|privileged" }, "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SHOW_SUSPENDED_APP_DETAILS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SEND_SMS": { "description": "Allows the app to send SMS messages.\n This may result in unexpected charges. Malicious apps may cost you money by\n sending messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send and view SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS_NO_CONFIRMATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SEND_SMS_NO_CONFIRMATION", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SERIAL_PORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SERIAL_PORT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ANIMATION_SCALE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_APP_SPECIFIC_LOCALECONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_APP_SPECIFIC_LOCALECONFIG", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_CLIP_SOURCE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_CLIP_SOURCE", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_DEBUG_APP": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DEFAULT_ACCOUNT_FOR_CONTACTS", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.SET_DISPLAY_OFFSET": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_DISPLAY_OFFSET", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_GAME_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_GAME_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_HARMFUL_APP_WARNINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_HARMFUL_APP_WARNINGS", "permissionGroup": "", "protectionLevel": "signature|verifier" }, "android.permission.SET_INITIAL_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INITIAL_LOCK", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.SET_INPUT_CALIBRATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_INPUT_CALIBRATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_KEYBOARD_LAYOUT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_KEYBOARD_LAYOUT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_LOW_POWER_STANDBY_PORTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_LOW_POWER_STANDBY_PORTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_MEDIA_KEY_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_MEDIA_KEY_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_ORIENTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.SET_POINTER_SPEED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_POINTER_SPEED", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "", "protectionLevel": "signature|installer|verifier" }, "android.permission.SET_PROCESS_LIMIT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_SCREEN_COMPATIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SCREEN_COMPATIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_SYSTEM_AUDIO_CAPTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_SYSTEM_AUDIO_CAPTION", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.SET_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.SET_TIME_ZONE": { "description": "Allows the app to change the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.SET_UNRESTRICTED_GESTURE_EXCLUSION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_UNRESTRICTED_GESTURE_EXCLUSION", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SET_WALLPAPER": { "description": "Allows the app to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_DIM_AMOUNT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_DIM_AMOUNT", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the app to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "adjust your wallpaper size", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SHOW_KEYGUARD_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHOW_KEYGUARD_MESSAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SHUTDOWN": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.SIGNAL_REBOOT_READINESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SIGNAL_REBOOT_READINESS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SMS_FINANCIAL_TRANSACTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SMS_FINANCIAL_TRANSACTIONS", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUNDTRIGGER_DELEGATE_IDENTITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SOUND_TRIGGER_RUN_IN_BATTERY_SAVER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.STAGE_HEALTH_CONNECT_REMOTE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STAGE_HEALTH_CONNECT_REMOTE_DATA", "permissionGroup": "", "protectionLevel": "signature|knownSigner" }, "android.permission.START_ACTIVITIES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITIES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier|role" }, "android.permission.START_ACTIVITY_AS_CALLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ACTIVITY_AS_CALLER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_ANY_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_ANY_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.START_CROSS_PROFILE_ACTIVITIES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_CROSS_PROFILE_ACTIVITIES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_FOREGROUND_SERVICES_FROM_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged|oem|verifier|role" }, "android.permission.START_REVIEW_PERMISSION_DECISIONS": { "description": "Allows the holder to start screen to review permission decisions. Should never be needed for normal apps.", "description_ptr": "permdesc_startReviewPermissionDecisions", "label": "start view permission decisions", "label_ptr": "permlab_startReviewPermissionDecisions", "name": "android.permission.START_REVIEW_PERMISSION_DECISIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.START_TASKS_FROM_RECENTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.START_TASKS_FROM_RECENTS", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.START_VIEW_APP_FEATURES": { "description": "Allows the holder to start viewing the features info for an app.", "description_ptr": "permdesc_startViewAppFeatures", "label": "start view app features", "label_ptr": "permlab_startViewAppFeatures", "name": "android.permission.START_VIEW_APP_FEATURES", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.START_VIEW_PERMISSION_USAGE": { "description": "Allows the holder to start the permission usage for an app. Should never be needed for normal apps.", "description_ptr": "permdesc_startViewPermissionUsage", "label": "start view permission usage", "label_ptr": "permlab_startViewPermissionUsage", "name": "android.permission.START_VIEW_PERMISSION_USAGE", "permissionGroup": "", "protectionLevel": "signature|installer|module" }, "android.permission.STATSCOMPANION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATSCOMPANION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STATUS_BAR": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STATUS_BAR_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature|privileged|recents" }, "android.permission.STORAGE_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.STORAGE_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSCRIBE_TO_KEYGUARD_LOCKED_STATE", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_EXTERNAL_TIME": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_EXTERNAL_TIME", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_MANUAL_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUPPRESS_CLIPBOARD_ACCESS_NOTIFICATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUPPRESS_CLIPBOARD_ACCESS_NOTIFICATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUSPEND_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SUSPEND_APPS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "This app can appear on top of other apps or other parts of the screen. This may interfere with normal app usage and change the way that other apps appear.", "description_ptr": "permdesc_systemAlertWindow", "label": "This app can appear on top of other apps", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "", "protectionLevel": "signature|setup|appop|installer|pre23|development" }, "android.permission.SYSTEM_APPLICATION_OVERLAY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SYSTEM_APPLICATION_OVERLAY", "permissionGroup": "", "protectionLevel": "signature|recents|role|installer" }, "android.permission.SYSTEM_CAMERA": { "description": "This privileged or system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well", "description_ptr": "permdesc_systemCamera", "label": "Allow an application or service access to system cameras to take pictures and videos", "label_ptr": "permlab_systemCamera", "name": "android.permission.SYSTEM_CAMERA", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "system|signature|role" }, "android.permission.TABLET_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TABLET_MODE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEMPORARY_ENABLE_ACCESSIBILITY", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BIOMETRIC": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BIOMETRIC", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_BLACKLISTED_PASSWORD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_BLACKLISTED_PASSWORD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_INPUT_METHOD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TEST_MANAGE_ROLLBACKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TEST_MANAGE_ROLLBACKS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TETHER_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TETHER_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.TIS_EXTENSION_INTERFACE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TIS_EXTENSION_INTERFACE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION", "permissionGroup": "", "protectionLevel": "internal|role" }, "android.permission.TRANSMIT_IR": { "description": "Allows the app to use the phone's infrared transmitter.", "description_ptr": "permdesc_transmitIr", "label": "transmit infrared", "label_ptr": "permlab_transmitIr", "name": "android.permission.TRANSMIT_IR", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.TRIGGER_LOST_MODE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_LOST_MODE", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.TRIGGER_SHELL_BUGREPORT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_BUGREPORT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRIGGER_SHELL_PROFCOLLECT_UPLOAD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TRUST_LISTENER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TRUST_LISTENER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.TUNER_RESOURCE_ACCESS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TUNER_RESOURCE_ACCESS", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TURN_SCREEN_ON": { "description": "Allows the app to turn on the screen.", "description_ptr": "permdesc_turnScreenOn", "label": "turn on the screen", "label_ptr": "permlab_turnScreenOn", "name": "android.permission.TURN_SCREEN_ON", "permissionGroup": "", "protectionLevel": "signature|privileged|appop" }, "android.permission.TV_INPUT_HARDWARE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_INPUT_HARDWARE", "permissionGroup": "", "protectionLevel": "signature|privileged|vendorPrivileged" }, "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UNLIMITED_SHORTCUTS_API_CALLS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_SHORTCUTS_API_CALLS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.UNLIMITED_TOASTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UNLIMITED_TOASTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_APP_OPS_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_APP_OPS_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|installer|role" }, "android.permission.UPDATE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_DEVICE_MANAGEMENT_RESOURCES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_MANAGEMENT_RESOURCES", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_DOMAIN_VERIFICATION_USER_SELECTION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.UPDATE_FONTS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_FONTS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPDATE_LOCK_TASK_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_LOCK_TASK_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|setup" }, "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION": { "description": "Allows the holder to update the app it previously installed without user action", "description_ptr": "permdesc_updatePackagesWithoutUserAction", "label": "update app without user action", "label_ptr": "permlab_updatePackagesWithoutUserAction", "name": "android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.UPDATE_TIME_ZONE_RULES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPDATE_TIME_ZONE_RULES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UPGRADE_RUNTIME_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UPGRADE_RUNTIME_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USER_ACTIVITY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USER_ACTIVITY", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_ATTESTATION_VERIFICATION_SERVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_ATTESTATION_VERIFICATION_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_BIOMETRIC": { "description": "Allows the app to use biometric hardware for authentication", "description_ptr": "permdesc_useBiometric", "label": "use biometric hardware", "label_ptr": "permlab_useBiometric", "name": "android.permission.USE_BIOMETRIC", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_BIOMETRIC_INTERNAL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_BIOMETRIC_INTERNAL", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_COLORIZED_NOTIFICATIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_COLORIZED_NOTIFICATIONS", "permissionGroup": "", "protectionLevel": "signature|setup|role" }, "android.permission.USE_CREDENTIALS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_DATA_IN_BACKGROUND": { "description": "This app can use data in the background. This may increase data usage.", "description_ptr": "permdesc_useDataInBackground", "label": "use data in the background", "label_ptr": "permlab_useDataInBackground", "name": "android.permission.USE_DATA_IN_BACKGROUND", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_EXACT_ALARM": { "description": "This app can schedule actions like alarms and reminders to notify you at a desired time in the future.", "description_ptr": "permdesc_use_exact_alarm", "label": "Schedule alarms or event reminders", "label_ptr": "permlab_use_exact_alarm", "name": "android.permission.USE_EXACT_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.USE_FINGERPRINT": { "description": "Allows the app to use fingerprint hardware for authentication", "description_ptr": "permdesc_useFingerprint", "label": "use fingerprint hardware", "label_ptr": "permlab_useFingerprint", "name": "android.permission.USE_FINGERPRINT", "permissionGroup": "android.permission-group.SENSORS", "protectionLevel": "normal" }, "android.permission.USE_FULL_SCREEN_INTENT": { "description": "Allows the app to display notifications as full screen activities on a locked device", "description_ptr": "permdesc_fullScreenIntent", "label": "display notifications as full screen activities on a locked device", "label_ptr": "permlab_fullScreenIntent", "name": "android.permission.USE_FULL_SCREEN_INTENT", "permissionGroup": "", "protectionLevel": "normal|appop" }, "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER", "permissionGroup": "", "protectionLevel": "signature|appop" }, "android.permission.USE_RESERVED_DISK": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.USE_RESERVED_DISK", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.USE_SIP": { "description": "Allows the app to make and receive SIP calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive SIP calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.UWB_PRIVILEGED": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.UWB_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.UWB_RANGING": { "description": "Allow the app to determine relative position between nearby Ultra-Wideband devices", "description_ptr": "permdesc_uwb_ranging", "label": "determine relative position between nearby Ultra-Wideband devices", "label_ptr": "permlab_uwb_ranging", "name": "android.permission.UWB_RANGING", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.VERIFY_ATTESTATION": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VERIFY_ATTESTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIBRATE": { "description": "Allows the app to control the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibration", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.VIBRATE_ALWAYS_ON": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIBRATE_ALWAYS_ON", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIEW_INSTANT_APPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIEW_INSTANT_APPS", "permissionGroup": "", "protectionLevel": "signature|preinstalled" }, "android.permission.VIRTUAL_INPUT_DEVICE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.VIRTUAL_INPUT_DEVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WAKEUP_SURFACE_FLINGER": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WAKEUP_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature|recents" }, "android.permission.WAKE_LOCK": { "description": "Allows the app to prevent the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "", "protectionLevel": "normal|instant" }, "android.permission.WATCH_APPOPS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WATCH_APPOPS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WHITELIST_RESTRICTED_PERMISSIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WHITELIST_RESTRICTED_PERMISSIONS", "permissionGroup": "", "protectionLevel": "signature|installer" }, "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_SET_DEVICE_MOBILITY_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS", "permissionGroup": "", "protectionLevel": "signature|role" }, "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_ALLOWLISTED_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_ALLOWLISTED_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.WRITE_APN_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_BLOCKED_NUMBERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_BLOCKED_NUMBERS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_CALENDAR": { "description": "This app can add, remove, or change calendar events on your phone. This app can send messages that may appear to come from calendar owners, or change events without notifying their owners.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests without owners' knowledge", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALL_LOG": { "description": "Allows the app to modify your phone's call log, including data about incoming and outgoing calls.\n Malicious apps may use this to erase or modify your call log.", "description_ptr": "permdesc_writeCallLog", "label": "write call log", "label_ptr": "permlab_writeCallLog", "name": "android.permission.WRITE_CALL_LOG", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows the app to modify the data about your contacts stored on your phone.\n This permission allows apps to delete contact data.", "description_ptr": "permdesc_writeContacts", "label": "modify your contacts", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_DEVICE_CONFIG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DEVICE_CONFIG", "permissionGroup": "", "protectionLevel": "signature|verifier|configurator" }, "android.permission.WRITE_DREAM_STATE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_DREAM_STATE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", "permissionGroup": "", "protectionLevel": "signature|privileged|development" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows the app to write the contents of your shared storage.", "description_ptr": "permdesc_sdcardWrite", "label": "modify or delete the contents of your shared storage", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_MEDIA_STORAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_MEDIA_STORAGE", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_OBB": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_OBB", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_PROFILE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_PROFILE", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|privileged|development|role|installer" }, "android.permission.WRITE_SECURITY_LOG": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SECURITY_LOG", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SETTINGS": { "description": "Allows the app to modify the\n system's settings data. Malicious apps may corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "", "protectionLevel": "signature|preinstalled|appop|pre23|role" }, "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SETTINGS_HOMEPAGE_DATA", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "android.permission.WRITE_SMS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SMS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SOCIAL_STREAM": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_SOCIAL_STREAM", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.", "description_ptr": "permdesc_writeSyncSettings", "label": "toggle sync on and off", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the app to set an alarm in\n an installed alarm clock app. Some alarm clock apps may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set an alarm", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.INSTALL_SHORTCUT": { "description": "Allows an application to add\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_install_shortcut", "label": "install shortcuts", "label_ptr": "permlab_install_shortcut", "name": "com.android.launcher.permission.INSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.launcher.permission.UNINSTALL_SHORTCUT": { "description": "Allows the application to remove\n Homescreen shortcuts without user intervention.", "description_ptr": "permdesc_uninstall_shortcut", "label": "uninstall shortcuts", "label_ptr": "permlab_uninstall_shortcut", "name": "com.android.launcher.permission.UNINSTALL_SHORTCUT", "permissionGroup": "", "protectionLevel": "normal" }, "com.android.permission.INSTALL_EXISTING_PACKAGES": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.INSTALL_EXISTING_PACKAGES", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "com.android.permission.USE_INSTALLER_V2": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_INSTALLER_V2", "permissionGroup": "", "protectionLevel": "signature|privileged" }, "com.android.permission.USE_SYSTEM_DATA_LOADERS": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.permission.USE_SYSTEM_DATA_LOADERS", "permissionGroup": "", "protectionLevel": "signature" }, "com.android.voicemail.permission.ADD_VOICEMAIL": { "description": "Allows the app to add messages\n to your voicemail inbox.", "description_ptr": "permdesc_addVoicemail", "label": "add voicemail", "label_ptr": "permlab_addVoicemail", "name": "com.android.voicemail.permission.ADD_VOICEMAIL", "permissionGroup": "android.permission-group.UNDEFINED", "protectionLevel": "dangerous" }, "com.android.voicemail.permission.READ_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.READ_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" }, "com.android.voicemail.permission.WRITE_VOICEMAIL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "com.android.voicemail.permission.WRITE_VOICEMAIL", "permissionGroup": "", "protectionLevel": "signature|privileged|role" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_4.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available Google accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your Google accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar data", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to use\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, but they should\n not contain any personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read system log files", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.READ_OWNER_DATA": { "description": "Allows an application read the\n phone owner data stored on your phone. Malicious\n applications can use this to read phone owner data.", "description_ptr": "permdesc_readOwnerData", "label": "read owner data", "label_ptr": "permlab_readOwnerData", "name": "android.permission.READ_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n forcibly restart other applications.", "description_ptr": "permdesc_restartPackages", "label": "restart other applications", "label_ptr": "permlab_restartPackages", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n phone usage.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen of the phone.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to modify the\n calendar events stored on your phone. Malicious\n applications can use this to erase or modify your calendar data.", "description_ptr": "permdesc_writeCalendar", "label": "write calendar data", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_OWNER_DATA": { "description": "Allows an application to modify the\n phone owner data stored on your phone. Malicious\n applications can use this to erase or modify owner data.", "description_ptr": "permdesc_writeOwnerData", "label": "write owner data", "label_ptr": "permlab_writeOwnerData", "name": "android.permission.WRITE_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_5.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BACKUP_DATA": { "description": "Allows the application to participate in the system's backup and restore mechanism.", "description_ptr": "permdesc_backup_data", "label": "back up and restore the application's data", "label_ptr": "permlab_backup_data", "name": "android.permission.BACKUP_DATA", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar data", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, but they should\n not contain any personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read system log files", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.READ_OWNER_DATA": { "description": "Allows an application read the\n phone owner data stored on your phone. Malicious\n applications can use this to read phone owner data.", "description_ptr": "permdesc_readOwnerData", "label": "read owner data", "label_ptr": "permlab_readOwnerData", "name": "android.permission.READ_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n forcibly restart other applications.", "description_ptr": "permdesc_restartPackages", "label": "restart other applications", "label_ptr": "permlab_restartPackages", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n phone usage.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen of the phone.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to modify the\n calendar events stored on your phone. Malicious\n applications can use this to erase or modify your calendar data.", "description_ptr": "permdesc_writeCalendar", "label": "write calendar data", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_OWNER_DATA": { "description": "Allows an application to modify the\n phone owner data stored on your phone. Malicious\n applications can use this to erase or modify owner data.", "description_ptr": "permdesc_writeOwnerData", "label": "write owner data", "label_ptr": "permlab_writeOwnerData", "name": "android.permission.WRITE_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_6.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BACKUP_DATA": { "description": "Allows the application to participate in the system's backup and restore mechanism.", "description_ptr": "permdesc_backup_data", "label": "back up and restore the application's data", "label_ptr": "permlab_backup_data", "name": "android.permission.BACKUP_DATA", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar data", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, but they should\n not contain any personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read system log files", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.READ_OWNER_DATA": { "description": "Allows an application read the\n phone owner data stored on your phone. Malicious\n applications can use this to read phone owner data.", "description_ptr": "permdesc_readOwnerData", "label": "read owner data", "label_ptr": "permlab_readOwnerData", "name": "android.permission.READ_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n forcibly restart other applications.", "description_ptr": "permdesc_restartPackages", "label": "restart other applications", "label_ptr": "permlab_restartPackages", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n phone usage.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen of the phone.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to modify the\n calendar events stored on your phone. Malicious\n applications can use this to erase or modify your calendar data.", "description_ptr": "permdesc_writeCalendar", "label": "write calendar data", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_OWNER_DATA": { "description": "Allows an application to modify the\n phone owner data stored on your phone. Malicious\n applications can use this to erase or modify owner data.", "description_ptr": "permdesc_writeOwnerData", "label": "write owner data", "label_ptr": "permlab_writeOwnerData", "name": "android.permission.WRITE_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_7.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BACKUP_DATA": { "description": "Allows the application to participate in the system's backup and restore mechanism.", "description_ptr": "permdesc_backup_data", "label": "back up and restore the application's data", "label_ptr": "permlab_backup_data", "name": "android.permission.BACKUP_DATA", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar data", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, but they should\n not contain any personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read system log files", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.READ_OWNER_DATA": { "description": "Allows an application read the\n phone owner data stored on your phone. Malicious\n applications can use this to read phone owner data.", "description_ptr": "permdesc_readOwnerData", "label": "read owner data", "label_ptr": "permlab_readOwnerData", "name": "android.permission.READ_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n forcibly restart other applications.", "description_ptr": "permdesc_restartPackages", "label": "restart other applications", "label_ptr": "permlab_restartPackages", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n phone usage.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen of the phone.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to modify the\n calendar events stored on your phone. Malicious\n applications can use this to erase or modify your calendar data.", "description_ptr": "permdesc_writeCalendar", "label": "write calendar data", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.WRITE_OWNER_DATA": { "description": "Allows an application to modify the\n phone owner data stored on your phone. Malicious\n applications can use this to erase or modify owner data.", "description_ptr": "permdesc_writeOwnerData", "label": "write owner data", "label_ptr": "permlab_writeOwnerData", "name": "android.permission.WRITE_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_8.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows an application to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ASEC_ACCESS": { "description": "Allows the application to get information on secure storage.", "description_ptr": "permdesc_asec_access", "label": "get information on secure storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the application to create secure storage.", "description_ptr": "permdesc_asec_create", "label": "create secure storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the application to destroy secure storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy secure storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the application to mount / unmount secure storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount / unmount secure storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the application to rename secure storage.", "description_ptr": "permdesc_asec_rename", "label": "rename secure storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal applications.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.COPY_PROTECTED_DATA": { "description": "Allows to invoke default container service to copy content. Not for use by normal applications.", "description_ptr": "permlab_copyProtectedData", "label": "Allows to invoke default container service to copy content. Not for use by normal applications.", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows an application to\n forcibly stop other applications.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other applications", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOVE_PACKAGE": { "description": "Allows an application to move application resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "Move application resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, but they should\n not contain any personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read system log files", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.READ_OWNER_DATA": { "description": "Allows an application read the\n phone owner data stored on your phone. Malicious\n applications can use this to read phone owner data.", "description_ptr": "permdesc_readOwnerData", "label": "read owner data", "label_ptr": "permlab_readOwnerData", "name": "android.permission.READ_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n phone usage.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME": { "description": "Allows an application to change\n the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen of the phone.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to add or change the \n events on your calendar, which may send email to guests. Malicious applications can use this \n to erase or modify your calendar events or to send email to guests.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_OWNER_DATA": { "description": "Allows an application to modify the\n phone owner data stored on your phone. Malicious\n applications can use this to erase or modify owner data.", "description_ptr": "permdesc_writeOwnerData", "label": "write owner data", "label_ptr": "permlab_writeOwnerData", "name": "android.permission.WRITE_OWNER_DATA", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/aosp_permissions/permissions_9.json ================================================ { "groups": { "android.permission-group.ACCOUNTS": { "description": "Access the available accounts.", "description_ptr": "permgroupdesc_accounts", "icon": "", "icon_ptr": "", "label": "Your accounts", "label_ptr": "permgrouplab_accounts", "name": "android.permission-group.ACCOUNTS" }, "android.permission-group.COST_MONEY": { "description": "Allow applications to do things\n that can cost you money.", "description_ptr": "permgroupdesc_costMoney", "icon": "", "icon_ptr": "", "label": "Services that cost you money", "label_ptr": "permgrouplab_costMoney", "name": "android.permission-group.COST_MONEY" }, "android.permission-group.DEVELOPMENT_TOOLS": { "description": "Features only needed for\n application developers.", "description_ptr": "permgroupdesc_developmentTools", "icon": "", "icon_ptr": "", "label": "Development tools", "label_ptr": "permgrouplab_developmentTools", "name": "android.permission-group.DEVELOPMENT_TOOLS" }, "android.permission-group.HARDWARE_CONTROLS": { "description": "Direct access to hardware on\n the handset.", "description_ptr": "permgroupdesc_hardwareControls", "icon": "", "icon_ptr": "", "label": "Hardware controls", "label_ptr": "permgrouplab_hardwareControls", "name": "android.permission-group.HARDWARE_CONTROLS" }, "android.permission-group.LOCATION": { "description": "Monitor your physical location", "description_ptr": "permgroupdesc_location", "icon": "", "icon_ptr": "", "label": "Your location", "label_ptr": "permgrouplab_location", "name": "android.permission-group.LOCATION" }, "android.permission-group.MESSAGES": { "description": "Read and write your SMS,\n e-mail, and other messages.", "description_ptr": "permgroupdesc_messages", "icon": "", "icon_ptr": "", "label": "Your messages", "label_ptr": "permgrouplab_messages", "name": "android.permission-group.MESSAGES" }, "android.permission-group.NETWORK": { "description": "Allow applications to access\n various network features.", "description_ptr": "permgroupdesc_network", "icon": "", "icon_ptr": "", "label": "Network communication", "label_ptr": "permgrouplab_network", "name": "android.permission-group.NETWORK" }, "android.permission-group.PERSONAL_INFO": { "description": "Direct access to your contacts\n and calendar stored on the phone.", "description_ptr": "permgroupdesc_personalInfo", "icon": "", "icon_ptr": "", "label": "Your personal information", "label_ptr": "permgrouplab_personalInfo", "name": "android.permission-group.PERSONAL_INFO" }, "android.permission-group.PHONE_CALLS": { "description": "Monitor, record, and process\n phone calls.", "description_ptr": "permgroupdesc_phoneCalls", "icon": "", "icon_ptr": "", "label": "Phone calls", "label_ptr": "permgrouplab_phoneCalls", "name": "android.permission-group.PHONE_CALLS" }, "android.permission-group.STORAGE": { "description": "Access the SD card.", "description_ptr": "permgroupdesc_storage", "icon": "", "icon_ptr": "", "label": "Storage", "label_ptr": "permgrouplab_storage", "name": "android.permission-group.STORAGE" }, "android.permission-group.SYSTEM_TOOLS": { "description": "Lower-level access and control\n of the system.", "description_ptr": "permgroupdesc_systemTools", "icon": "", "icon_ptr": "", "label": "System tools", "label_ptr": "permgrouplab_systemTools", "name": "android.permission-group.SYSTEM_TOOLS" } }, "permissions": { "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_CACHE_FILESYSTEM": { "description": "Allows an application to read and write the cache filesystem.", "description_ptr": "permdesc_cache_filesystem", "label": "access the cache filesystem", "label_ptr": "permlab_cache_filesystem", "name": "android.permission.ACCESS_CACHE_FILESYSTEM", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_CHECKIN_PROPERTIES": { "description": "Allows read/write access to\n properties uploaded by the checkin service. Not for use by normal\n applications.", "description_ptr": "permdesc_checkinProperties", "label": "access checkin properties", "label_ptr": "permlab_checkinProperties", "name": "android.permission.ACCESS_CHECKIN_PROPERTIES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_COARSE_LOCATION": { "description": "Access coarse location sources such as the cellular\n network database to determine an approximate phone location, where available. Malicious\n applications can use this to determine approximately where you are.", "description_ptr": "permdesc_accessCoarseLocation", "label": "coarse (network-based) location", "label_ptr": "permlab_accessCoarseLocation", "name": "android.permission.ACCESS_COARSE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_FINE_LOCATION": { "description": "Access fine location sources such as the\n Global Positioning System on the phone, where available.\n Malicious applications can use this to determine where you are, and may\n consume additional battery power.", "description_ptr": "permdesc_accessFineLocation", "label": "fine (GPS) location", "label_ptr": "permlab_accessFineLocation", "name": "android.permission.ACCESS_FINE_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS": { "description": "Access extra location provider commands.\n Malicious applications could use this to interfere with the operation of the GPS\n or other location sources.", "description_ptr": "permdesc_accessLocationExtraCommands", "label": "access extra location provider commands", "label_ptr": "permlab_accessLocationExtraCommands", "name": "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "normal" }, "android.permission.ACCESS_MOCK_LOCATION": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers.", "description_ptr": "permdesc_accessMockLocation", "label": "mock location sources for testing", "label_ptr": "permlab_accessMockLocation", "name": "android.permission.ACCESS_MOCK_LOCATION", "permissionGroup": "android.permission-group.LOCATION", "protectionLevel": "dangerous" }, "android.permission.ACCESS_NETWORK_STATE": { "description": "Allows an application to view\n the state of all networks.", "description_ptr": "permdesc_accessNetworkState", "label": "view network state", "label_ptr": "permlab_accessNetworkState", "name": "android.permission.ACCESS_NETWORK_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCESS_SURFACE_FLINGER": { "description": "Allows application to use\n SurfaceFlinger low-level features.", "description_ptr": "permdesc_accessSurfaceFlinger", "label": "access SurfaceFlinger", "label_ptr": "permlab_accessSurfaceFlinger", "name": "android.permission.ACCESS_SURFACE_FLINGER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.ACCESS_USB": { "description": "Allows the application to access USB devices.", "description_ptr": "permdesc_accessUsb", "label": "access USB devices", "label_ptr": "permlab_accessUsb", "name": "android.permission.ACCESS_USB", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signatureOrSystem" }, "android.permission.ACCESS_WIFI_STATE": { "description": "Allows an application to view\n the information about the state of Wi-Fi.", "description_ptr": "permdesc_accessWifiState", "label": "view Wi-Fi state", "label_ptr": "permlab_accessWifiState", "name": "android.permission.ACCESS_WIFI_STATE", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "normal" }, "android.permission.ACCOUNT_MANAGER": { "description": "Allows an\n application to make calls to AccountAuthenticators", "description_ptr": "permdesc_accountManagerService", "label": "act as the AccountManagerService", "label_ptr": "permlab_accountManagerService", "name": "android.permission.ACCOUNT_MANAGER", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "signature" }, "android.permission.ASEC_ACCESS": { "description": "Allows the application to get information on internal storage.", "description_ptr": "permdesc_asec_access", "label": "get information on internal storage", "label_ptr": "permlab_asec_access", "name": "android.permission.ASEC_ACCESS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_CREATE": { "description": "Allows the application to create internal storage.", "description_ptr": "permdesc_asec_create", "label": "create internal storage", "label_ptr": "permlab_asec_create", "name": "android.permission.ASEC_CREATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_DESTROY": { "description": "Allows the application to destroy internal storage.", "description_ptr": "permdesc_asec_destroy", "label": "destroy internal storage", "label_ptr": "permlab_asec_destroy", "name": "android.permission.ASEC_DESTROY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_MOUNT_UNMOUNT": { "description": "Allows the application to mount / unmount internal storage.", "description_ptr": "permdesc_asec_mount_unmount", "label": "mount / unmount internal storage", "label_ptr": "permlab_asec_mount_unmount", "name": "android.permission.ASEC_MOUNT_UNMOUNT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.ASEC_RENAME": { "description": "Allows the application to rename internal storage.", "description_ptr": "permdesc_asec_rename", "label": "rename internal storage", "label_ptr": "permlab_asec_rename", "name": "android.permission.ASEC_RENAME", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.AUTHENTICATE_ACCOUNTS": { "description": "Allows an application\n to use the account authenticator capabilities of the\n AccountManager, including creating accounts and getting and\n setting their passwords.", "description_ptr": "permdesc_authenticateAccounts", "label": "act as an account authenticator", "label_ptr": "permlab_authenticateAccounts", "name": "android.permission.AUTHENTICATE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.BACKUP": { "description": "Allows the application to control the system's backup and restore mechanism. Not for use by normal applications.", "description_ptr": "permdesc_backup", "label": "control system backup and restore", "label_ptr": "permlab_backup", "name": "android.permission.BACKUP", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BATTERY_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.BATTERY_STATS", "permissionGroup": "", "protectionLevel": "normal" }, "android.permission.BIND_APPWIDGET": { "description": "Allows the application to tell the system\n which widgets can be used by which application. With this permission,\n applications can give access to personal data to other applications.\n Not for use by normal applications.", "description_ptr": "permdesc_bindGadget", "label": "choose widgets", "label_ptr": "permlab_bindGadget", "name": "android.permission.BIND_APPWIDGET", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.BIND_DEVICE_ADMIN": { "description": "Allows the holder to send intents to\n a device administrator. Should never be needed for normal applications.", "description_ptr": "permdesc_bindDeviceAdmin", "label": "interact with a device admin", "label_ptr": "permlab_bindDeviceAdmin", "name": "android.permission.BIND_DEVICE_ADMIN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_INPUT_METHOD": { "description": "Allows the holder to bind to the top-level\n interface of an input method. Should never be needed for normal applications.", "description_ptr": "permdesc_bindInputMethod", "label": "bind to an input method", "label_ptr": "permlab_bindInputMethod", "name": "android.permission.BIND_INPUT_METHOD", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BIND_WALLPAPER": { "description": "Allows the holder to bind to the top-level\n interface of a wallpaper. Should never be needed for normal applications.", "description_ptr": "permdesc_bindWallpaper", "label": "bind to a wallpaper", "label_ptr": "permlab_bindWallpaper", "name": "android.permission.BIND_WALLPAPER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.BLUETOOTH": { "description": "Allows an application to view\n configuration of the local Bluetooth phone, and to make and accept\n connections with paired devices.", "description_ptr": "permdesc_bluetooth", "label": "create Bluetooth connections", "label_ptr": "permlab_bluetooth", "name": "android.permission.BLUETOOTH", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.BLUETOOTH_ADMIN": { "description": "Allows an application to configure\n the local Bluetooth phone, and to discover and pair with remote\n devices.", "description_ptr": "permdesc_bluetoothAdmin", "label": "bluetooth administration", "label_ptr": "permlab_bluetoothAdmin", "name": "android.permission.BLUETOOTH_ADMIN", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.BRICK": { "description": "Allows the application to\n disable the entire phone permanently. This is very dangerous.", "description_ptr": "permdesc_brick", "label": "permanently disable phone", "label_ptr": "permlab_brick", "name": "android.permission.BRICK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.BROADCAST_PACKAGE_REMOVED": { "description": "Allows an application to\n broadcast a notification that an application package has been removed.\n Malicious applications may use this to kill any other running\n application.", "description_ptr": "permdesc_broadcastPackageRemoved", "label": "send package removed broadcast", "label_ptr": "permlab_broadcastPackageRemoved", "name": "android.permission.BROADCAST_PACKAGE_REMOVED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.BROADCAST_SMS": { "description": "Allows an application to\n broadcast a notification that an SMS message has been received.\n Malicious applications may use this to forge incoming SMS messages.", "description_ptr": "permdesc_broadcastSmsReceived", "label": "send SMS-received broadcast", "label_ptr": "permlab_broadcastSmsReceived", "name": "android.permission.BROADCAST_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.BROADCAST_STICKY": { "description": "Allows an application to send\n sticky broadcasts, which remain after the broadcast ends.\n Malicious applications can make the phone slow or unstable by causing it\n to use too much memory.", "description_ptr": "permdesc_broadcastSticky", "label": "send sticky broadcast", "label_ptr": "permlab_broadcastSticky", "name": "android.permission.BROADCAST_STICKY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.BROADCAST_WAP_PUSH": { "description": "Allows an application to\n broadcast a notification that a WAP PUSH message has been received.\n Malicious applications may use this to forge MMS message receipt or to\n silently replace the content of any web page with malicious variants.", "description_ptr": "permdesc_broadcastWapPush", "label": "send WAP-PUSH-received broadcast", "label_ptr": "permlab_broadcastWapPush", "name": "android.permission.BROADCAST_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "signature" }, "android.permission.CALL_PHONE": { "description": "Allows the application to call\n phone numbers without your intervention. Malicious applications may\n cause unexpected calls on your phone bill. Note that this does not\n allow the application to call emergency numbers.", "description_ptr": "permdesc_callPhone", "label": "directly call phone numbers", "label_ptr": "permlab_callPhone", "name": "android.permission.CALL_PHONE", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.CALL_PRIVILEGED": { "description": "Allows the application to call\n any phone number, including emergency numbers, without your intervention.\n Malicious applications may place unnecessary and illegal calls to emergency\n services.", "description_ptr": "permdesc_callPrivileged", "label": "directly call any phone numbers", "label_ptr": "permlab_callPrivileged", "name": "android.permission.CALL_PRIVILEGED", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.CAMERA": { "description": "Allows application to take pictures and videos\n with the camera. This allows the application at any time to collect\n images the camera is seeing.", "description_ptr": "permdesc_camera", "label": "take pictures and videos", "label_ptr": "permlab_camera", "name": "android.permission.CAMERA", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_BACKGROUND_DATA_SETTING": { "description": "Allows an application to change\n the background data usage setting.", "description_ptr": "permdesc_changeBackgroundDataSetting", "label": "change background data usage setting", "label_ptr": "permlab_changeBackgroundDataSetting", "name": "android.permission.CHANGE_BACKGROUND_DATA_SETTING", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.CHANGE_COMPONENT_ENABLED_STATE": { "description": "Allows an application to change whether a\n component of another application is enabled or not. Malicious applications can use this\n to disable important phone capabilities. Care must be used with permission, as it is\n possible to get application components into an unusable, inconsistent, or unstable state.\n ", "description_ptr": "permdesc_changeComponentState", "label": "enable or disable application components", "label_ptr": "permlab_changeComponentState", "name": "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CHANGE_CONFIGURATION": { "description": "Allows an application to\n change the current configuration, such as the locale or overall font\n size.", "description_ptr": "permdesc_changeConfiguration", "label": "change your UI settings", "label_ptr": "permlab_changeConfiguration", "name": "android.permission.CHANGE_CONFIGURATION", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_NETWORK_STATE": { "description": "Allows an application to change\n the state of network connectivity.", "description_ptr": "permdesc_changeNetworkState", "label": "change network connectivity", "label_ptr": "permlab_changeNetworkState", "name": "android.permission.CHANGE_NETWORK_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_MULTICAST_STATE": { "description": "Allows an application to\n receive packets not directly addressed to your device. This can be\n useful when discovering services offered near by. It uses more power\n than the non-multicast mode.", "description_ptr": "permdesc_changeWifiMulticastState", "label": "allow Wi-Fi Multicast\n reception", "label_ptr": "permlab_changeWifiMulticastState", "name": "android.permission.CHANGE_WIFI_MULTICAST_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CHANGE_WIFI_STATE": { "description": "Allows an application to connect\n to and disconnect from Wi-Fi access points, and to make changes to\n configured Wi-Fi networks.", "description_ptr": "permdesc_changeWifiState", "label": "change Wi-Fi state", "label_ptr": "permlab_changeWifiState", "name": "android.permission.CHANGE_WIFI_STATE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_CACHE": { "description": "Allows an application to free phone storage\n by deleting files in application cache directory. Access is very\n restricted usually to system process.", "description_ptr": "permdesc_clearAppCache", "label": "delete all application cache data", "label_ptr": "permlab_clearAppCache", "name": "android.permission.CLEAR_APP_CACHE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.CLEAR_APP_USER_DATA": { "description": "Allows an application to clear user data.", "description_ptr": "permdesc_clearAppUserData", "label": "delete other applications' data", "label_ptr": "permlab_clearAppUserData", "name": "android.permission.CLEAR_APP_USER_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.CONTROL_LOCATION_UPDATES": { "description": "Allows enabling/disabling location\n update notifications from the radio. Not for use by normal applications.", "description_ptr": "permdesc_locationUpdates", "label": "control location update notifications", "label_ptr": "permlab_locationUpdates", "name": "android.permission.CONTROL_LOCATION_UPDATES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.COPY_PROTECTED_DATA": { "description": "Allows to invoke default container service to copy content. Not for use by normal applications.", "description_ptr": "permlab_copyProtectedData", "label": "Allows to invoke default container service to copy content. Not for use by normal applications.", "label_ptr": "permlab_copyProtectedData", "name": "android.permission.COPY_PROTECTED_DATA", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DELETE_CACHE_FILES": { "description": "Allows an application to delete\n cache files.", "description_ptr": "permdesc_deleteCacheFiles", "label": "delete other applications' caches", "label_ptr": "permlab_deleteCacheFiles", "name": "android.permission.DELETE_CACHE_FILES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DELETE_PACKAGES": { "description": "Allows an application to delete\n Android packages. Malicious applications can use this to delete important applications.", "description_ptr": "permdesc_deletePackages", "label": "delete applications", "label_ptr": "permlab_deletePackages", "name": "android.permission.DELETE_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.DEVICE_POWER": { "description": "Allows the application to turn the\n phone on or off.", "description_ptr": "permdesc_devicePower", "label": "power phone on or off", "label_ptr": "permlab_devicePower", "name": "android.permission.DEVICE_POWER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.DIAGNOSTIC": { "description": "Allows an application to read and write to\n any resource owned by the diag group; for example, files in /dev. This could\n potentially affect system stability and security. This should be ONLY be used\n for hardware-specific diagnostics by the manufacturer or operator.", "description_ptr": "permdesc_diagnostic", "label": "read/write to resources owned by diag", "label_ptr": "permlab_diagnostic", "name": "android.permission.DIAGNOSTIC", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.DISABLE_KEYGUARD": { "description": "Allows an application to disable\n the keylock and any associated password security. A legitimate example of\n this is the phone disabling the keylock when receiving an incoming phone call,\n then re-enabling the keylock when the call is finished.", "description_ptr": "permdesc_disableKeyguard", "label": "disable keylock", "label_ptr": "permlab_disableKeyguard", "name": "android.permission.DISABLE_KEYGUARD", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.DUMP": { "description": "Allows application to retrieve\n internal state of the system. Malicious applications may retrieve\n a wide variety of private and secure information that they should\n never normally need.", "description_ptr": "permdesc_dump", "label": "retrieve system internal state", "label_ptr": "permlab_dump", "name": "android.permission.DUMP", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "signatureOrSystem" }, "android.permission.EXPAND_STATUS_BAR": { "description": "Allows application to\n expand or collapse the status bar.", "description_ptr": "permdesc_expandStatusBar", "label": "expand/collapse status bar", "label_ptr": "permlab_expandStatusBar", "name": "android.permission.EXPAND_STATUS_BAR", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.FACTORY_TEST": { "description": "Run as a low-level manufacturer test,\n allowing complete access to the phone hardware. Only available\n when a phone is running in manufacturer test mode.", "description_ptr": "permdesc_factoryTest", "label": "run in factory test mode", "label_ptr": "permlab_factoryTest", "name": "android.permission.FACTORY_TEST", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FLASHLIGHT": { "description": "Allows the application to control\n the flashlight.", "description_ptr": "permdesc_flashlight", "label": "control flashlight", "label_ptr": "permlab_flashlight", "name": "android.permission.FLASHLIGHT", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.FORCE_BACK": { "description": "Allows an application to force any\n activity that is in the foreground to close and go back.\n Should never be needed for normal applications.", "description_ptr": "permdesc_forceBack", "label": "force application to close", "label_ptr": "permlab_forceBack", "name": "android.permission.FORCE_BACK", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.FORCE_STOP_PACKAGES": { "description": "Allows an application to\n forcibly stop other applications.", "description_ptr": "permdesc_forceStopPackages", "label": "force stop other applications", "label_ptr": "permlab_forceStopPackages", "name": "android.permission.FORCE_STOP_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.GET_ACCOUNTS": { "description": "Allows an application to get\n the list of accounts known by the phone.", "description_ptr": "permdesc_getAccounts", "label": "discover known accounts", "label_ptr": "permlab_getAccounts", "name": "android.permission.GET_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "normal" }, "android.permission.GET_PACKAGE_SIZE": { "description": "Allows an application to retrieve\n its code, data, and cache sizes", "description_ptr": "permdesc_getPackageSize", "label": "measure application storage space", "label_ptr": "permlab_getPackageSize", "name": "android.permission.GET_PACKAGE_SIZE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.GET_TASKS": { "description": "Allows application to retrieve\n information about currently and recently running tasks. May allow\n malicious applications to discover private information about other applications.", "description_ptr": "permdesc_getTasks", "label": "retrieve running applications", "label_ptr": "permlab_getTasks", "name": "android.permission.GET_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.GLOBAL_SEARCH": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.GLOBAL_SEARCH_CONTROL": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.GLOBAL_SEARCH_CONTROL", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.HARDWARE_TEST": { "description": "Allows the application to control\n various peripherals for the purpose of hardware testing.", "description_ptr": "permdesc_hardware_test", "label": "test hardware", "label_ptr": "permlab_hardware_test", "name": "android.permission.HARDWARE_TEST", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "signature" }, "android.permission.INJECT_EVENTS": { "description": "Allows an application to deliver\n its own input events (key presses, etc.) to other applications. Malicious\n applications can use this to take over the phone.", "description_ptr": "permdesc_injectEvents", "label": "press keys and control buttons", "label_ptr": "permlab_injectEvents", "name": "android.permission.INJECT_EVENTS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INSTALL_LOCATION_PROVIDER": { "description": "Create mock location sources for testing.\n Malicious applications can use this to override the location and/or status returned by real\n location sources such as GPS or Network providers or monitor and report your location to an external source.", "description_ptr": "permdesc_installLocationProvider", "label": "permission to install a location provider", "label_ptr": "permlab_installLocationProvider", "name": "android.permission.INSTALL_LOCATION_PROVIDER", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INSTALL_PACKAGES": { "description": "Allows an application to install new or updated\n Android packages. Malicious applications can use this to add new applications with arbitrarily\n powerful permissions.", "description_ptr": "permdesc_installPackages", "label": "directly install applications", "label_ptr": "permlab_installPackages", "name": "android.permission.INSTALL_PACKAGES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.INTERNAL_SYSTEM_WINDOW": { "description": "Allows the creation of\n windows that are intended to be used by the internal system\n user interface. Not for use by normal applications.", "description_ptr": "permdesc_internalSystemWindow", "label": "display unauthorized windows", "label_ptr": "permlab_internalSystemWindow", "name": "android.permission.INTERNAL_SYSTEM_WINDOW", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.INTERNET": { "description": "Allows an application to\n create network sockets.", "description_ptr": "permdesc_createNetworkSockets", "label": "full Internet access", "label_ptr": "permlab_createNetworkSockets", "name": "android.permission.INTERNET", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.KILL_BACKGROUND_PROCESSES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.KILL_BACKGROUND_PROCESSES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.MANAGE_ACCOUNTS": { "description": "Allows an application to\n perform operations like adding, and removing accounts and deleting\n their password.", "description_ptr": "permdesc_manageAccounts", "label": "manage the accounts list", "label_ptr": "permlab_manageAccounts", "name": "android.permission.MANAGE_ACCOUNTS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.MANAGE_APP_TOKENS": { "description": "Allows applications to\n create and manage their own tokens, bypassing their normal\n Z-ordering. Should never be needed for normal applications.", "description_ptr": "permdesc_manageAppTokens", "label": "manage application tokens", "label_ptr": "permlab_manageAppTokens", "name": "android.permission.MANAGE_APP_TOKENS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.MASTER_CLEAR": { "description": "Allows an application to completely\n reset the system to its factory settings, erasing all data,\n configuration, and installed applications.", "description_ptr": "permdesc_masterClear", "label": "reset system to factory defaults", "label_ptr": "permlab_masterClear", "name": "android.permission.MASTER_CLEAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.MODIFY_AUDIO_SETTINGS": { "description": "Allows application to modify\n global audio settings such as volume and routing.", "description_ptr": "permdesc_modifyAudioSettings", "label": "change your audio settings", "label_ptr": "permlab_modifyAudioSettings", "name": "android.permission.MODIFY_AUDIO_SETTINGS", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.MODIFY_PHONE_STATE": { "description": "Allows the application to control the\n phone features of the device. An application with this permission can switch\n networks, turn the phone radio on and off and the like without ever notifying\n you.", "description_ptr": "permdesc_modifyPhoneState", "label": "modify phone state", "label_ptr": "permlab_modifyPhoneState", "name": "android.permission.MODIFY_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "signatureOrSystem" }, "android.permission.MOUNT_FORMAT_FILESYSTEMS": { "description": "Allows the application to format removable storage.", "description_ptr": "permdesc_mount_format_filesystems", "label": "format external storage", "label_ptr": "permlab_mount_format_filesystems", "name": "android.permission.MOUNT_FORMAT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOUNT_UNMOUNT_FILESYSTEMS": { "description": "Allows the application to mount and\n unmount filesystems for removable storage.", "description_ptr": "permdesc_mount_unmount_filesystems", "label": "mount and unmount filesystems", "label_ptr": "permlab_mount_unmount_filesystems", "name": "android.permission.MOUNT_UNMOUNT_FILESYSTEMS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.MOVE_PACKAGE": { "description": "Allows an application to move application resources from internal to external media and vice versa.", "description_ptr": "permdesc_movePackage", "label": "Move application resources", "label_ptr": "permlab_movePackage", "name": "android.permission.MOVE_PACKAGE", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.NFC": { "description": "Allows an application to communicate\n with Near Field Communication (NFC) tags, cards, and readers.", "description_ptr": "permdesc_nfc", "label": "control Near Field Communication", "label_ptr": "permlab_nfc", "name": "android.permission.NFC", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.PACKAGE_USAGE_STATS": { "description": "Allows the modification of collected component usage statistics. Not for use by normal applications.", "description_ptr": "permdesc_pkgUsageStats", "label": "update component usage statistics", "label_ptr": "permlab_pkgUsageStats", "name": "android.permission.PACKAGE_USAGE_STATS", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.PERFORM_CDMA_PROVISIONING": { "description": "Allows the application to start CDMA provisioning.\n Malicious applications may unnecessarily start CDMA provisioning", "description_ptr": "permdesc_performCdmaProvisioning", "label": "directly start CDMA phone setup", "label_ptr": "permlab_performCdmaProvisioning", "name": "android.permission.PERFORM_CDMA_PROVISIONING", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.PERSISTENT_ACTIVITY": { "description": "Allows an application to make\n parts of itself persistent, so the system can't use it for other\n applications.", "description_ptr": "permdesc_persistentActivity", "label": "make application always run", "label_ptr": "permlab_persistentActivity", "name": "android.permission.PERSISTENT_ACTIVITY", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.PROCESS_OUTGOING_CALLS": { "description": "Allows application to\n process outgoing calls and change the number to be dialed. Malicious\n applications may monitor, redirect, or prevent outgoing calls.", "description_ptr": "permdesc_processOutgoingCalls", "label": "intercept outgoing calls", "label_ptr": "permlab_processOutgoingCalls", "name": "android.permission.PROCESS_OUTGOING_CALLS", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_CALENDAR": { "description": "Allows an application to read all\n of the calendar events stored on your phone. Malicious applications\n can use this to send your calendar events to other people.", "description_ptr": "permdesc_readCalendar", "label": "read calendar events", "label_ptr": "permlab_readCalendar", "name": "android.permission.READ_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_CONTACTS": { "description": "Allows an application to read all\n of the contact (address) data stored on your phone. Malicious applications\n can use this to send your data to other people.", "description_ptr": "permdesc_readContacts", "label": "read contact data", "label_ptr": "permlab_readContacts", "name": "android.permission.READ_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_FRAME_BUFFER": { "description": "Allows application to\n read the content of the frame buffer.", "description_ptr": "permdesc_readFrameBuffer", "label": "read frame buffer", "label_ptr": "permlab_readFrameBuffer", "name": "android.permission.READ_FRAME_BUFFER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_INPUT_STATE": { "description": "Allows applications to watch the\n keys you press even when interacting with another application (such\n as entering a password). Should never be needed for normal applications.", "description_ptr": "permdesc_readInputState", "label": "record what you type and actions you take", "label_ptr": "permlab_readInputState", "name": "android.permission.READ_INPUT_STATE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.READ_LOGS": { "description": "Allows an application to read from the\n system's various log files. This allows it to discover general\n information about what you are doing with the phone, potentially\n including personal or private information.", "description_ptr": "permdesc_readLogs", "label": "read sensitive log data", "label_ptr": "permlab_readLogs", "name": "android.permission.READ_LOGS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.READ_PHONE_STATE": { "description": "Allows the application to access the phone\n features of the device. An application with this permission can determine the phone\n number and serial number of this phone, whether a call is active, the number that call\n is connected to and the like.", "description_ptr": "permdesc_readPhoneState", "label": "read phone state and identity", "label_ptr": "permlab_readPhoneState", "name": "android.permission.READ_PHONE_STATE", "permissionGroup": "android.permission-group.PHONE_CALLS", "protectionLevel": "dangerous" }, "android.permission.READ_SMS": { "description": "Allows application to read\n SMS messages stored on your phone or SIM card. Malicious applications\n may read your confidential messages.", "description_ptr": "permdesc_readSms", "label": "read SMS or MMS", "label_ptr": "permlab_readSms", "name": "android.permission.READ_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.READ_SYNC_SETTINGS": { "description": "Allows an application to read the sync settings,\n such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_readSyncSettings", "label": "read sync settings", "label_ptr": "permlab_readSyncSettings", "name": "android.permission.READ_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_SYNC_STATS": { "description": "Allows an application to read the sync stats; e.g., the\n history of syncs that have occurred.", "description_ptr": "permdesc_readSyncStats", "label": "read sync statistics", "label_ptr": "permlab_readSyncStats", "name": "android.permission.READ_SYNC_STATS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.READ_USER_DICTIONARY": { "description": "Allows an application to read any private\n words, names and phrases that the user may have stored in the user dictionary.", "description_ptr": "permdesc_readDictionary", "label": "read user defined dictionary", "label_ptr": "permlab_readDictionary", "name": "android.permission.READ_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.REBOOT": { "description": "Allows the application to\n force the phone to reboot.", "description_ptr": "permdesc_reboot", "label": "force phone reboot", "label_ptr": "permlab_reboot", "name": "android.permission.REBOOT", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.RECEIVE_BOOT_COMPLETED": { "description": "Allows an application to\n have itself started as soon as the system has finished booting.\n This can make it take longer to start the phone and allow the\n application to slow down the overall phone by always running.", "description_ptr": "permdesc_receiveBootCompleted", "label": "automatically start at boot", "label_ptr": "permlab_receiveBootCompleted", "name": "android.permission.RECEIVE_BOOT_COMPLETED", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.RECEIVE_MMS": { "description": "Allows application to receive\n and process MMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveMms", "label": "receive MMS", "label_ptr": "permlab_receiveMms", "name": "android.permission.RECEIVE_MMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_SMS": { "description": "Allows application to receive\n and process SMS messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveSms", "label": "receive SMS", "label_ptr": "permlab_receiveSms", "name": "android.permission.RECEIVE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECEIVE_WAP_PUSH": { "description": "Allows application to receive\n and process WAP messages. Malicious applications may monitor\n your messages or delete them without showing them to you.", "description_ptr": "permdesc_receiveWapPush", "label": "receive WAP", "label_ptr": "permlab_receiveWapPush", "name": "android.permission.RECEIVE_WAP_PUSH", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.RECORD_AUDIO": { "description": "Allows application to access\n the audio record path.", "description_ptr": "permdesc_recordAudio", "label": "record audio", "label_ptr": "permlab_recordAudio", "name": "android.permission.RECORD_AUDIO", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "dangerous" }, "android.permission.REORDER_TASKS": { "description": "Allows an application to move\n tasks to the foreground and background. Malicious applications can force\n themselves to the front without your control.", "description_ptr": "permdesc_reorderTasks", "label": "reorder running applications", "label_ptr": "permlab_reorderTasks", "name": "android.permission.REORDER_TASKS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.RESTART_PACKAGES": { "description": "Allows an application to\n kill background processes of other applications, even if memory\n isn't low.", "description_ptr": "permdesc_killBackgroundProcesses", "label": "kill background processes", "label_ptr": "permlab_killBackgroundProcesses", "name": "android.permission.RESTART_PACKAGES", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SEND_SMS": { "description": "Allows application to send SMS\n messages. Malicious applications may cost you money by sending\n messages without your confirmation.", "description_ptr": "permdesc_sendSms", "label": "send SMS messages", "label_ptr": "permlab_sendSms", "name": "android.permission.SEND_SMS", "permissionGroup": "android.permission-group.COST_MONEY", "protectionLevel": "dangerous" }, "android.permission.SET_ACTIVITY_WATCHER": { "description": "Allows an application to\n monitor and control how the system launches activities.\n Malicious applications may completely compromise the system. This\n permission is only needed for development, never for normal\n phone usage.", "description_ptr": "permdesc_runSetActivityWatcher", "label": "monitor and control all application launching", "label_ptr": "permlab_runSetActivityWatcher", "name": "android.permission.SET_ACTIVITY_WATCHER", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_ALWAYS_FINISH": { "description": "Allows an application\n to control whether activities are always finished as soon as they\n go to the background. Never needed for normal applications.", "description_ptr": "permdesc_setAlwaysFinish", "label": "make all background applications close", "label_ptr": "permlab_setAlwaysFinish", "name": "android.permission.SET_ALWAYS_FINISH", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ANIMATION_SCALE": { "description": "Allows an application to change\n the global animation speed (faster or slower animations) at any time.", "description_ptr": "permdesc_setAnimationScale", "label": "modify global animation speed", "label_ptr": "permlab_setAnimationScale", "name": "android.permission.SET_ANIMATION_SCALE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_DEBUG_APP": { "description": "Allows an application to turn\n on debugging for another application. Malicious applications can use this\n to kill other applications.", "description_ptr": "permdesc_setDebugApp", "label": "enable application debugging", "label_ptr": "permlab_setDebugApp", "name": "android.permission.SET_DEBUG_APP", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_ORIENTATION": { "description": "Allows an application to change\n the rotation of the screen at any time. Should never be needed for\n normal applications.", "description_ptr": "permdesc_setOrientation", "label": "change screen orientation", "label_ptr": "permlab_setOrientation", "name": "android.permission.SET_ORIENTATION", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SET_PREFERRED_APPLICATIONS": { "description": "Allows an application to\n modify your preferred applications. This can allow malicious applications\n to silently change the applications that are run, spoofing your\n existing applications to collect private data from you.", "description_ptr": "permdesc_setPreferredApplications", "label": "set preferred applications", "label_ptr": "permlab_setPreferredApplications", "name": "android.permission.SET_PREFERRED_APPLICATIONS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signature" }, "android.permission.SET_PROCESS_LIMIT": { "description": "Allows an application\n to control the maximum number of processes that will run. Never\n needed for normal applications.", "description_ptr": "permdesc_setProcessLimit", "label": "limit number of running processes", "label_ptr": "permlab_setProcessLimit", "name": "android.permission.SET_PROCESS_LIMIT", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_TIME": { "description": "Allows an application to change\n the phone's clock time.", "description_ptr": "permdesc_setTime", "label": "set time", "label_ptr": "permlab_setTime", "name": "android.permission.SET_TIME", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_TIME_ZONE": { "description": "Allows an application to change\n the phone's time zone.", "description_ptr": "permdesc_setTimeZone", "label": "set time zone", "label_ptr": "permlab_setTimeZone", "name": "android.permission.SET_TIME_ZONE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SET_WALLPAPER": { "description": "Allows the application\n to set the system wallpaper.", "description_ptr": "permdesc_setWallpaper", "label": "set wallpaper", "label_ptr": "permlab_setWallpaper", "name": "android.permission.SET_WALLPAPER", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SET_WALLPAPER_COMPONENT": { "description": "", "description_ptr": "", "label": "", "label_ptr": "", "name": "android.permission.SET_WALLPAPER_COMPONENT", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "signatureOrSystem" }, "android.permission.SET_WALLPAPER_HINTS": { "description": "Allows the application\n to set the system wallpaper size hints.", "description_ptr": "permdesc_setWallpaperHints", "label": "set wallpaper size hints", "label_ptr": "permlab_setWallpaperHints", "name": "android.permission.SET_WALLPAPER_HINTS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SHUTDOWN": { "description": "Puts the activity manager into a shutdown\n state. Does not perform a complete shutdown.", "description_ptr": "permdesc_shutdown", "label": "partial shutdown", "label_ptr": "permlab_shutdown", "name": "android.permission.SHUTDOWN", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SIGNAL_PERSISTENT_PROCESSES": { "description": "Allows application to request that the\n supplied signal be sent to all persistent processes.", "description_ptr": "permdesc_signalPersistentProcesses", "label": "send Linux signals to applications", "label_ptr": "permlab_signalPersistentProcesses", "name": "android.permission.SIGNAL_PERSISTENT_PROCESSES", "permissionGroup": "android.permission-group.DEVELOPMENT_TOOLS", "protectionLevel": "dangerous" }, "android.permission.STATUS_BAR": { "description": "Allows application to disable\n the status bar or add and remove system icons.", "description_ptr": "permdesc_statusBar", "label": "disable or modify status bar", "label_ptr": "permlab_statusBar", "name": "android.permission.STATUS_BAR", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.STATUS_BAR_SERVICE": { "description": "Allows the application to be the status bar.", "description_ptr": "permdesc_statusBarService", "label": "status bar", "label_ptr": "permlab_statusBarService", "name": "android.permission.STATUS_BAR_SERVICE", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.STOP_APP_SWITCHES": { "description": "Prevents the user from switching to\n another application.", "description_ptr": "permdesc_stopAppSwitches", "label": "prevent app switches", "label_ptr": "permlab_stopAppSwitches", "name": "android.permission.STOP_APP_SWITCHES", "permissionGroup": "", "protectionLevel": "signature" }, "android.permission.SUBSCRIBED_FEEDS_READ": { "description": "Allows an application to get details about the currently synced feeds.", "description_ptr": "permdesc_subscribedFeedsRead", "label": "read subscribed feeds", "label_ptr": "permlab_subscribedFeedsRead", "name": "android.permission.SUBSCRIBED_FEEDS_READ", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "normal" }, "android.permission.SUBSCRIBED_FEEDS_WRITE": { "description": "Allows an application to modify\n your currently synced feeds. This could allow a malicious application to\n change your synced feeds.", "description_ptr": "permdesc_subscribedFeedsWrite", "label": "write subscribed feeds", "label_ptr": "permlab_subscribedFeedsWrite", "name": "android.permission.SUBSCRIBED_FEEDS_WRITE", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.SYSTEM_ALERT_WINDOW": { "description": "Allows an application to\n show system alert windows. Malicious applications can take over the\n entire screen of the phone.", "description_ptr": "permdesc_systemAlertWindow", "label": "display system-level alerts", "label_ptr": "permlab_systemAlertWindow", "name": "android.permission.SYSTEM_ALERT_WINDOW", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.UPDATE_DEVICE_STATS": { "description": "Allows the modification of\n collected battery statistics. Not for use by normal applications.", "description_ptr": "permdesc_batteryStats", "label": "modify battery statistics", "label_ptr": "permlab_batteryStats", "name": "android.permission.UPDATE_DEVICE_STATS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.USE_CREDENTIALS": { "description": "Allows an application to\n request authentication tokens.", "description_ptr": "permdesc_useCredentials", "label": "use the authentication\n credentials of an account", "label_ptr": "permlab_useCredentials", "name": "android.permission.USE_CREDENTIALS", "permissionGroup": "android.permission-group.ACCOUNTS", "protectionLevel": "dangerous" }, "android.permission.USE_SIP": { "description": "Allows an application to use the SIP service to make/receive Internet calls.", "description_ptr": "permdesc_use_sip", "label": "make/receive Internet calls", "label_ptr": "permlab_use_sip", "name": "android.permission.USE_SIP", "permissionGroup": "android.permission-group.NETWORK", "protectionLevel": "dangerous" }, "android.permission.VIBRATE": { "description": "Allows the application to control\n the vibrator.", "description_ptr": "permdesc_vibrate", "label": "control vibrator", "label_ptr": "permlab_vibrate", "name": "android.permission.VIBRATE", "permissionGroup": "android.permission-group.HARDWARE_CONTROLS", "protectionLevel": "normal" }, "android.permission.WAKE_LOCK": { "description": "Allows an application to prevent\n the phone from going to sleep.", "description_ptr": "permdesc_wakeLock", "label": "prevent phone from sleeping", "label_ptr": "permlab_wakeLock", "name": "android.permission.WAKE_LOCK", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_APN_SETTINGS": { "description": "Allows an application to modify the APN\n settings, such as Proxy and Port of any APN.", "description_ptr": "permdesc_writeApnSettings", "label": "write Access Point Name settings", "label_ptr": "permlab_writeApnSettings", "name": "android.permission.WRITE_APN_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_CALENDAR": { "description": "Allows an application to add or change the \n events on your calendar, which may send email to guests. Malicious applications can use this \n to erase or modify your calendar events or to send email to guests.", "description_ptr": "permdesc_writeCalendar", "label": "add or modify calendar events and send email to guests", "label_ptr": "permlab_writeCalendar", "name": "android.permission.WRITE_CALENDAR", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_CONTACTS": { "description": "Allows an application to modify the\n contact (address) data stored on your phone. Malicious\n applications can use this to erase or modify your contact data.", "description_ptr": "permdesc_writeContacts", "label": "write contact data", "label_ptr": "permlab_writeContacts", "name": "android.permission.WRITE_CONTACTS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "android.permission.WRITE_EXTERNAL_STORAGE": { "description": "Allows an application to write to the SD card.", "description_ptr": "permdesc_sdcardWrite", "label": "modify/delete SD card contents", "label_ptr": "permlab_sdcardWrite", "name": "android.permission.WRITE_EXTERNAL_STORAGE", "permissionGroup": "android.permission-group.STORAGE", "protectionLevel": "dangerous" }, "android.permission.WRITE_GSERVICES": { "description": "Allows an application to modify the\n Google services map. Not for use by normal applications.", "description_ptr": "permdesc_writeGservices", "label": "modify the Google services map", "label_ptr": "permlab_writeGservices", "name": "android.permission.WRITE_GSERVICES", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SECURE_SETTINGS": { "description": "Allows an application to modify the\n system's secure settings data. Not for use by normal applications.", "description_ptr": "permdesc_writeSecureSettings", "label": "modify secure system settings", "label_ptr": "permlab_writeSecureSettings", "name": "android.permission.WRITE_SECURE_SETTINGS", "permissionGroup": "", "protectionLevel": "signatureOrSystem" }, "android.permission.WRITE_SETTINGS": { "description": "Allows an application to modify the\n system's settings data. Malicious applications can corrupt your system's\n configuration.", "description_ptr": "permdesc_writeSettings", "label": "modify global system settings", "label_ptr": "permlab_writeSettings", "name": "android.permission.WRITE_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_SMS": { "description": "Allows application to write\n to SMS messages stored on your phone or SIM card. Malicious applications\n may delete your messages.", "description_ptr": "permdesc_writeSms", "label": "edit SMS or MMS", "label_ptr": "permlab_writeSms", "name": "android.permission.WRITE_SMS", "permissionGroup": "android.permission-group.MESSAGES", "protectionLevel": "dangerous" }, "android.permission.WRITE_SYNC_SETTINGS": { "description": "Allows an application to modify the sync\n settings, such as whether sync is enabled for Contacts.", "description_ptr": "permdesc_writeSyncSettings", "label": "write sync settings", "label_ptr": "permlab_writeSyncSettings", "name": "android.permission.WRITE_SYNC_SETTINGS", "permissionGroup": "android.permission-group.SYSTEM_TOOLS", "protectionLevel": "dangerous" }, "android.permission.WRITE_USER_DICTIONARY": { "description": "Allows an application to write new words into the\n user dictionary.", "description_ptr": "permdesc_writeDictionary", "label": "write to user defined dictionary", "label_ptr": "permlab_writeDictionary", "name": "android.permission.WRITE_USER_DICTIONARY", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.alarm.permission.SET_ALARM": { "description": "Allows the application to set an alarm in\n an installed alarm clock application. Some alarm clock applications may\n not implement this feature.", "description_ptr": "permdesc_setAlarm", "label": "set alarm in alarm clock", "label_ptr": "permlab_setAlarm", "name": "com.android.alarm.permission.SET_ALARM", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "normal" }, "com.android.browser.permission.READ_HISTORY_BOOKMARKS": { "description": "Allows the application to read all\n the URLs that the Browser has visited, and all of the Browser's bookmarks.", "description_ptr": "permdesc_readHistoryBookmarks", "label": "read Browser's history and bookmarks", "label_ptr": "permlab_readHistoryBookmarks", "name": "com.android.browser.permission.READ_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" }, "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS": { "description": "Allows an application to modify the\n Browser's history or bookmarks stored on your phone. Malicious applications\n can use this to erase or modify your Browser's data.", "description_ptr": "permdesc_writeHistoryBookmarks", "label": "write Browser's history and bookmarks", "label_ptr": "permlab_writeHistoryBookmarks", "name": "com.android.browser.permission.WRITE_HISTORY_BOOKMARKS", "permissionGroup": "android.permission-group.PERSONAL_INFO", "protectionLevel": "dangerous" } } } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_16.json ================================================ { "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AccountManagerService;-addAccount-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-addAcount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-confirmCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Z Landroid/os/Bundle;)V": [ "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManagerService;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManagerService;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)Landroid/content/SyncStatusInfo;": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/media/AudioService;-registerMediaButtonEventReceiverForCalls-(Landroid/content/ComponentName;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/media/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setMode-(I Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Landroid/media/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-startBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-unregisterMediaButtonEventReceiverForCalls-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/net/wifi/p2p/WifiP2pService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/server/BluetoothA2dpService;-allowIncomingConnect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-connectSinkInternal-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-disconnectSinkInternal-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothA2dpService;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothA2dpService;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothA2dpService;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothA2dpService;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-resumeSink-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothA2dpService;-suspendSink-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-addRfcommServiceRecord-(Ljava/lang/String; Landroid/os/ParcelUuid; I Landroid/os/IBinder;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-allowIncomingProfileConnect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-cancelBondProcess-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-cancelPairingUserInput-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-changeApplicationBluetoothState-(Z Landroid/bluetooth/IBluetoothStateChangeCallback; Landroid/os/IBinder;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-connectHeadset-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-connectInputDevice-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-connectPanDevice-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-createBond-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-createBondOutOfBand-(Ljava/lang/String; [B [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-disconnectHeadset-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-disconnectInputDevice-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-disconnectPanDevice-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-fetchRemoteUuids-(Ljava/lang/String; Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getBluetoothState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getBondState-(Ljava/lang/String;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getConnectedInputDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getConnectedPanDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getInputDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getInputDevicePriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getInputDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getPanDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getPanDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getRemoteAlias-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getRemoteClass-(Ljava/lang/String;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getRemoteName-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getRemoteServiceChannel-(Ljava/lang/String; Landroid/os/ParcelUuid;)I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getRemoteUuids-(Ljava/lang/String;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getTrustState-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-isTetheringOn-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-listBonds-()[Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-readOutOfBandData-()[B": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-removeBond-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-removeServiceRecord-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-setDeviceOutOfBandData-(Ljava/lang/String; [B [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setInputDevicePriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setPairingConfirmation-(Ljava/lang/String; Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setPasskey-(Ljava/lang/String; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setPin-(Ljava/lang/String; [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setRemoteAlias-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/server/BluetoothService;-setRemoteOutOfBandData-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH", "android.permission.WRITE_SECURE_SETTINGS" ], "Landroid/server/BluetoothService;-setTrust-(Ljava/lang/String; Z)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/server/BluetoothService;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/email/provider/AttachmentProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "com.android.email.permission.ACCESS_PROVIDER" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS", "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendData-(Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.SEND_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendData-(Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceSvn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIccSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1AlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getMsisdn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-copyMessageToIccEf-(I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-getAllMessagesFromIccEf-()Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-updateMessageOnIccEf-(I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-copyMessageToIccEf-(I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-disableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-disableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-enableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-enableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-getAllMessagesFromIccEf-()Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-updateMessageOnIccEf-(I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-authenticate-(Ljava/lang/String; [B)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-close-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-getCardEmulationRoute-(Ljava/lang/String;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-open-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-setCardEmulationRoute-(Ljava/lang/String; I)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-transceive-(Ljava/lang/String; [B)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disable-(Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-dispatch-(Landroid/nfc/Tag;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enable-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-getNfcAdapterExtrasInterface-(Ljava/lang/String;)Landroid/nfc/INfcAdapterExtras;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setForegroundDispatch-(Landroid/app/PendingIntent; [Landroid/content/IntentFilter; Landroid/nfc/TechListParcel;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setNdefPushCallback-(Landroid/nfc/INdefPushCallback;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setP2pModes-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$TagService;-close-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-connect-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-formatNdef-(I [B)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTechList-(I)[I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTimeout-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-isNdef-(I)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefMakeReadOnly-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefRead-(I)Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefWrite-(I Landroid/nfc/NdefMessage;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-reconnect-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-rediscover-(I)Landroid/nfc/Tag;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-resetTimeouts-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-setTimeout-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-transceive-(I [B Z)Landroid/nfc/TransceiveResult;": [ "android.permission.NFC" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-cancelMissedCallsNotification-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-()Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isSimPinEnabled-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-silenceRinger-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-bulkInsert-(Landroid/net/Uri; [Landroid/content/ContentValues;)I": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/CallLogProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/CallLogProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/CallLogProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/ContactsProvider2;-bulkInsert-(Landroid/net/Uri; [Landroid/content/ContentValues;)I": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-call-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Landroid/os/Bundle;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.READ_SOCIAL_STREAM", "android.permission.WRITE_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.READ_SOCIAL_STREAM", "android.permission.WRITE_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.READ_SOCIAL_STREAM", "android.permission.WRITE_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ProfileProvider;-openAssetFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;": [ "android.permission.READ_PROFILE", "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/downloads/DownloadProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_ALL_DOWNLOADS" ], "Lcom/android/providers/downloads/DownloadProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.ACCESS_CACHE_FILESYSTEM", "android.permission.ACCESS_DOWNLOAD_MANAGER", "android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED", "android.permission.DOWNLOAD_CACHE_NON_PURGEABLE", "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION", "android.permission.INTERNET", "android.permission.WRITE_EXTERNAL_STORAGE" ], "Lcom/android/providers/downloads/DownloadProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.ACCESS_ALL_DOWNLOADS" ], "Lcom/android/providers/downloads/DownloadProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_ALL_DOWNLOADS" ], "Lcom/android/providers/drm/DrmProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/drm/DrmProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.INSTALL_DRM" ], "Lcom/android/providers/drm/DrmProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/media/MediaProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.ACCESS_CACHE_FILESYSTEM", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" ], "Lcom/android/providers/settings/SettingsProvider;-bulkInsert-(Landroid/net/Uri; [Landroid/content/ContentValues;)I": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/settings/SettingsProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/settings/SettingsProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/settings/SettingsProvider;-openAssetFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/settings/SettingsProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/settings/SettingsProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/telephony/TelephonyProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_APN_SETTINGS" ], "Lcom/android/providers/telephony/TelephonyProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.WRITE_APN_SETTINGS" ], "Lcom/android/providers/telephony/TelephonyProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_APN_SETTINGS" ], "Lcom/android/server/AlarmManagerService;-setTime-(J)V": [ "android.permission.SET_TIME" ], "Lcom/android/server/AlarmManagerService;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetId-(I Landroid/content/ComponentName;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetIdIfAllowed-(Ljava/lang/String; I Landroid/content/ComponentName;)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindRemoteViewsService-(I Landroid/content/Intent; Landroid/os/IBinder;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-deleteAppWidgetId-(I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetInfo-(I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetOptions-(I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetViews-(I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-hasBindAppWidgetPermission-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-notifyAppWidgetViewDataChanged-([I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-partiallyUpdateAppWidgetIds-([I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-setBindAppWidgetPermission-(Ljava/lang/String; Z)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-unbindRemoteViewsService-(I Landroid/content/Intent;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetIds-([I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetOptions-(I Landroid/os/Bundle;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetProvider-(Landroid/content/ComponentName; Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-clearBackupData-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileDataEnabled-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredIfacePairs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/ConnectivityService;-requestNetworkTransitionWakelock-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setDataDependency-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyProperties;)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setMobileDataEnabled-(Z)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setNetworkPreference-(I)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setPolicyDataEnable-(I Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/ConnectivityService;-setRadio-(I Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setRadios-(Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-startUsingNetworkFeature-(I Ljava/lang/String; Landroid/os/IBinder;)I": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback;)V": [ "android.permission.BIND_DEVICE_ADMIN" ], "Lcom/android/server/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName;)V": [ "android.permission.BIND_DEVICE_ADMIN" ], "Lcom/android/server/DevicePolicyManagerService;-reportFailedPasswordAttempt-()V": [ "android.permission.BIND_DEVICE_ADMIN" ], "Lcom/android/server/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-()V": [ "android.permission.BIND_DEVICE_ADMIN" ], "Lcom/android/server/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z)V": [ "android.permission.BIND_DEVICE_ADMIN" ], "Lcom/android/server/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN" ], "Lcom/android/server/DropBoxManagerService;-getNextEntry-(Ljava/lang/String; J)Landroid/os/DropBoxManager$Entry;": [ "android.permission.READ_LOGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/LocationManagerService;-addGpsStatusListener-(Landroid/location/IGpsStatusListener;)Z": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addTestProvider-(Ljava/lang/String; Z Z Z Z Z Z Z I I)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderInfo-(Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Ljava/lang/String; Landroid/location/Criteria; J F Z Landroid/location/ILocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdatesPI-(Ljava/lang/String; Landroid/location/Criteria; J F Z Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LocationManagerService;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-encryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-setUsbMassStorageEnabled-(Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushDefaultDnsCache-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushInterfaceDnsCache-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceRxThrottle-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceTxThrottle-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-([Ljava/lang/String;)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getRoutes-(Ljava/lang/String;)[Landroid/net/RouteInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultInterfaceForDns-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForInterface-(Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceThrottle-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidNetworkRules-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/PowerManagerService;-acquireWakeLock-(I Landroid/os/IBinder; Ljava/lang/String; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/PowerManagerService;-clearUserActivityTimeout-(J J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/PowerManagerService;-goToSleep-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-goToSleepWithReason-(J I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-preventScreenOn-(Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-reboot-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/PowerManagerService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.DEVICE_POWER", "android.permission.WAKE_LOCK" ], "Lcom/android/server/PowerManagerService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-setAutoBrightnessAdjustment-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-setBacklightBrightness-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-setMaximumScreenOffTimeount-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/PowerManagerService;-setPokeLock-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-setStayOnSetting-(I)V": [ "android.permission.WRITE_SETTINGS" ], "Lcom/android/server/PowerManagerService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/PowerManagerService;-userActivity-(J Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/PowerManagerService;-userActivityWithForce-(J Z Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/StatusBarManagerService;-collapse-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-expand-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-onClearAllNotifications-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onPanelRevealed-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Lcom/android/internal/statusbar/StatusBarIconList; Ljava/util/List; Ljava/util/List; [I Ljava/util/List;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setSystemUiVisibility-(I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-topAppWindowChanged-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Landroid/telephony/CellInfo;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/LinkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceState-(Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/ThrottleService;-getByteCount-(Ljava/lang/String; I I I)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getCliffLevel-(Ljava/lang/String; I)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getCliffThreshold-(Ljava/lang/String; I)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getHelpUri-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getPeriodStartTime-(Ljava/lang/String;)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getResetTime-(Ljava/lang/String;)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getThrottle-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(J Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-([J I Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/WallpaperManagerService;-setDimensionHints-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/WallpaperManagerService;-setWallpaper-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/WifiService;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/WifiService;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/WifiService;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/WifiService;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/WifiService;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/WifiService;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-startScan-(Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-startWifi-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-stopWifi-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-activitySlept-(Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-activityStopped-(Landroid/os/IBinder; Landroid/os/Bundle; Landroid/graphics/Bitmap; Ljava/lang/CharSequence;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)Z": [ "android.permission.BACKUP", "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-bindService-(Landroid/app/IApplicationThread; Landroid/os/IBinder; Landroid/content/Intent; Ljava/lang/String; Landroid/app/IServiceConnection; I I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-dismissKeyguardOnNextActivity-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.FORCE_STOP_PACKAGES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-finishReceiver-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/Bundle; Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnails-(I)Landroid/app/ActivityManager$TaskThumbnails;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I Landroid/app/IThumbnailReceiver;)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-goingToSleep-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationCrash-(Landroid/os/IBinder; Landroid/app/ApplicationErrorReport$CrashInfo;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationWtf-(Landroid/os/IBinder; Ljava/lang/String; Landroid/app/ApplicationErrorReport$CrashInfo;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.KILL_BACKGROUND_PROCESSES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-moveActivityTaskToBack-(Landroid/os/IBinder; Z)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToBack-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-removeSubTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_PROCESS_LIMIT", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_PROCESS_LIMIT", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setRequestedOrientation-(Landroid/os/IBinder; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.SHUTDOWN", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivitiesInPackage-(I [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle;)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityInPackage-(I Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startRunning-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY", "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-switchUser-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-unregisterReceiver-(Landroid/content/IIntentReceiver;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-wakingUp-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInputEvent-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScanWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScanWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScanWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScanWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getAllPkgUsageStats-()[Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getPkgUsageStats-(Landroid/content/ComponentName;)Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteLaunchTime-(Landroid/content/ComponentName; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-notePauseComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteResumeComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getAppPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getAppsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-()[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setAppPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-openSession-()Landroid/net/INetworkStatsSession;": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES" ], "Lcom/android/server/pm/PackageManagerService;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I)V": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantPermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-installPackage-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackageWithVerification-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String; Landroid/net/Uri; Landroid/content/pm/ManifestDigest; Landroid/content/pm/ContainerEncryptionParams;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)V": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-revokePermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-()[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String;)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setMassStorageBackingFile-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-moveAppToken-(I Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-moveAppTokensToBottom-(Ljava/util/List;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-moveAppTokensToTop-(Ljava/util/List;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppGroupId-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppWillBeHidden-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/ti/server/StubFmService;-resumeFm-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxChangeAudioTarget-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxChangeDigitalTargetConfiguration-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxCompleteScan_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisable-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableAudioRouting-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableRds_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnable-()Z": [ "ti.permission.FMRX", "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableAudioRouting-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableRds_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetBand-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetBand_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetChannelSpacing-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetChannelSpacing_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetCompleteScanProgress-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetCompleteScanProgress_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetDeEmphasisFilter-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetDeEmphasisFilter_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetFMState-()I": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxGetFwVersion-()D": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMonoStereoMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMonoStereoMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMuteMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMuteMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsAfSwitchMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsAfSwitchMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsGroupMask-()J": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsGroupMask_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsSystem-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsSystem_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRfDependentMuteMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRfDependentMuteMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssi-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssiThreshold-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssiThreshold_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssi_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetTunedFrequency-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetTunedFrequency_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetVolume-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetVolume_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxIsEnabled-()Z": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxIsFMPaused-()Z": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxIsValidChannel-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSeek_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetBand-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetBand_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetChannelSpacing-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetChannelSpacing_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetDeEmphasisFilter-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetDeEmphasisFilter_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMonoStereoMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMonoStereoMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMuteMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsAfSwitchMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsAfSwitchMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsGroupMask-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsGroupMask_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsSystem-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsSystem_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRfDependentMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRfDependentMuteMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRssiThreshold-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRssiThreshold_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetVolume-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopCompleteScan-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopCompleteScan_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopSeek-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopSeek_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxTune_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txChangeAudioSource-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txChangeDigitalSourceConfiguration-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txDisable-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txDisableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txEnable-()Z": [ "ti.permission.FMRX", "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txEnableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txGetFMState-()I": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-txSetMonoStereoMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetPowerLevel-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetPreEmphasisFilter-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsAfCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsECC-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsMusicSpeechFlag-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPiCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPsDisplayMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPsScrollSpeed-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPtyCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextPsMsg-(Ljava/lang/String;)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextRepertoire-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextRtMsg-(I Ljava/lang/String; I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTrafficCodes-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTransmissionMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTransmittedGroupsMask-(J)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txStartTransmission-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txStopTransmission-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txTune-(J)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txWriteRdsRawData-(Ljava/lang/String;)Z": [ "ti.permission.FMRX_ADMIN" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-addOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; Z)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccounts-()[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-removeOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-moveTaskToBack-(Z)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-navigateUpTo-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-navigateUpToFromChild-(Landroid/app/Activity; Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-onMenuItemSelected-(I Landroid/view/MenuItem;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-onNavigateUp-()Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-onNavigateUpFromChild-(Landroid/app/Activity;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setRequestedOrientation-(I)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AlarmManager;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/content/BroadcastReceiver$PendingResult;-finish-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; Z Z Z Z Z Z Z I I)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-setNetworkPreference-(I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/nfc/NfcAdapter;-disableForegroundDispatch-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-disableForegroundNdefPush-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundDispatch-(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [L[java/lang/String;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundNdefPush-(Landroid/app/Activity; Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUris-([Landroid/net/Uri; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUrisCallback-(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessage-(Landroid/nfc/NdefMessage; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessageCallback-(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setOnNdefPushCompleteCallback-(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyA-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyB-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-decrement-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-increment-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-readBlock-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-restore-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transfer-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-writeBlock-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-readPages-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-writePage-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-getNdefMessage-()Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-makeReadOnly-()Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-writeNdefMessage-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-format-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-formatReadOnly-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-([J I)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(J)V": [ "android.permission.VIBRATE" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/ZoomButtonsController;-setVisible-(Z)V": [ "android.permission.BROADCAST_STICKY" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_17.json ================================================ { "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AccountManagerService;-addAccount-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-addAcount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Z Landroid/os/Bundle;)V": [ "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManagerService;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManagerService;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManagerService;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Landroid/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)Landroid/content/SyncStatusInfo;": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Landroid/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Landroid/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Landroid/media/AudioService;-registerMediaButtonEventReceiverForCalls-(Landroid/content/ComponentName;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/media/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setMode-(I Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Landroid/media/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-startBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-unregisterMediaButtonEventReceiverForCalls-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/net/wifi/p2p/WifiP2pService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelBondProcess-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-connectSocket-(Landroid/bluetooth/BluetoothDevice; I Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createSocketChannel-(I Ljava/lang/String; Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAdapterConnectionState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondedDevices-()[Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteAlias-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteClass-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteName-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-removeBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sendConnectionStateChange-(Landroid/bluetooth/BluetoothDevice; I I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPairingConfirmation-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPasskey-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPin-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setRemoteAlias-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-clccResponse-(I I I I Z Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioOn-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-phoneStateChanged-(I I I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-roamChanged-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getProtocolMode-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getReport-(Landroid/bluetooth/BluetoothDevice; B B I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-sendData-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setProtocolMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setReport-(Landroid/bluetooth/BluetoothDevice; B Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-virtualUnplug-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/email/provider/AttachmentProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "com.android.email.permission.ACCESS_PROVIDER" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS", "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendData-(Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendData-(Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceSvn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIccSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1AlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getMsisdn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-copyMessageToIccEf-(I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-getAllMessagesFromIccEf-()Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-updateMessageOnIccEf-(I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-authenticate-(Ljava/lang/String; [B)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-close-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-getCardEmulationRoute-(Ljava/lang/String;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-getDriverName-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-open-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-setCardEmulationRoute-(Ljava/lang/String; I)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-transceive-(Ljava/lang/String; [B)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disable-(Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-dispatch-(Landroid/nfc/Tag;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enable-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-getNfcAdapterExtrasInterface-(Ljava/lang/String;)Landroid/nfc/INfcAdapterExtras;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setForegroundDispatch-(Landroid/app/PendingIntent; [Landroid/content/IntentFilter; Landroid/nfc/TechListParcel;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setNdefPushCallback-(Landroid/nfc/INdefPushCallback;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setP2pModes-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$TagService;-close-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-connect-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-formatNdef-(I [B)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTechList-(I)[I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTimeout-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-isNdef-(I)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefMakeReadOnly-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefRead-(I)Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefWrite-(I Landroid/nfc/NdefMessage;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-reconnect-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-rediscover-(I)Landroid/nfc/Tag;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-resetTimeouts-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-setTimeout-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-transceive-(I [B Z)Landroid/nfc/TransceiveResult;": [ "android.permission.NFC" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-cancelMissedCallsNotification-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-()Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isSimPinEnabled-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-silenceRinger-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-bulkInsert-(Landroid/net/Uri; [Landroid/content/ContentValues;)I": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/AbstractContactsProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/CallLogProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/CallLogProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/CallLogProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/ContactsProvider2;-bulkInsert-(Landroid/net/Uri; [Landroid/content/ContentValues;)I": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-call-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Landroid/os/Bundle;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.READ_SOCIAL_STREAM", "android.permission.WRITE_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.READ_SOCIAL_STREAM", "android.permission.WRITE_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ContactsProvider2;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.READ_SOCIAL_STREAM", "android.permission.WRITE_SOCIAL_STREAM" ], "Lcom/android/providers/contacts/ProfileProvider;-openAssetFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;": [ "android.permission.READ_PROFILE", "android.permission.WRITE_PROFILE" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/contacts/VoicemailContentProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "com.android.voicemail.permission.ADD_VOICEMAIL" ], "Lcom/android/providers/downloads/DownloadProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_ALL_DOWNLOADS" ], "Lcom/android/providers/downloads/DownloadProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.ACCESS_CACHE_FILESYSTEM", "android.permission.ACCESS_DOWNLOAD_MANAGER", "android.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED", "android.permission.DOWNLOAD_CACHE_NON_PURGEABLE", "android.permission.DOWNLOAD_WITHOUT_NOTIFICATION", "android.permission.INTERNET", "android.permission.WRITE_EXTERNAL_STORAGE" ], "Lcom/android/providers/downloads/DownloadProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.ACCESS_ALL_DOWNLOADS" ], "Lcom/android/providers/downloads/DownloadProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_ALL_DOWNLOADS" ], "Lcom/android/providers/drm/DrmProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/drm/DrmProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.INSTALL_DRM" ], "Lcom/android/providers/drm/DrmProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/media/MediaProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.ACCESS_CACHE_FILESYSTEM", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" ], "Lcom/android/providers/settings/SettingsProvider;-bulkInsert-(Landroid/net/Uri; [Landroid/content/ContentValues;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/settings/SettingsProvider;-call-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/settings/SettingsProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/settings/SettingsProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/settings/SettingsProvider;-openAssetFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/settings/SettingsProvider;-openFile-(Landroid/net/Uri; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.ACCESS_DRM" ], "Lcom/android/providers/settings/SettingsProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/providers/telephony/TelephonyProvider;-delete-(Landroid/net/Uri; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_APN_SETTINGS" ], "Lcom/android/providers/telephony/TelephonyProvider;-insert-(Landroid/net/Uri; Landroid/content/ContentValues;)Landroid/net/Uri;": [ "android.permission.WRITE_APN_SETTINGS" ], "Lcom/android/providers/telephony/TelephonyProvider;-update-(Landroid/net/Uri; Landroid/content/ContentValues; Ljava/lang/String; [Ljava/lang/String;)I": [ "android.permission.WRITE_APN_SETTINGS" ], "Lcom/android/server/AlarmManagerService;-setTime-(J)V": [ "android.permission.SET_TIME" ], "Lcom/android/server/AlarmManagerService;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetId-(I Landroid/content/ComponentName; Landroid/os/Bundle;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetIdIfAllowed-(Ljava/lang/String; I Landroid/content/ComponentName; Landroid/os/Bundle;)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindRemoteViewsService-(I Landroid/content/Intent; Landroid/os/IBinder; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-deleteAppWidgetId-(I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetInfo-(I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetOptions-(I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetViews-(I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-hasBindAppWidgetPermission-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-notifyAppWidgetViewDataChanged-([I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-partiallyUpdateAppWidgetIds-([I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-setBindAppWidgetPermission-(Ljava/lang/String; Z)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-unbindRemoteViewsService-(I Landroid/content/Intent; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetIds-([I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetOptions-(I Landroid/os/Bundle;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetProvider-(Landroid/content/ComponentName; Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-clearBackupData-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileDataEnabled-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredIfacePairs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/ConnectivityService;-requestNetworkTransitionWakelock-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setDataDependency-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyProperties;)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setMobileDataEnabled-(Z)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setNetworkPreference-(I)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setPolicyDataEnable-(I Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/ConnectivityService;-setRadio-(I Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setRadios-(Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-startUsingNetworkFeature-(I Ljava/lang/String; Landroid/os/IBinder;)I": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getStorageEncryptionStatus-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-isActivePasswordSufficient-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-lockNow-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-wipeData-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DropBoxManagerService;-getNextEntry-(Ljava/lang/String; J)Landroid/os/DropBoxManager$Entry;": [ "android.permission.READ_LOGS" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Landroid/view/inputmethod/InputMethodInfo; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInput-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; Landroid/view/inputmethod/EditorInfo; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-windowGainedFocus-(Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext;)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/LocationManagerService;-addGpsStatusListener-(Landroid/location/IGpsStatusListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addTestProvider-(Ljava/lang/String; Lcom/android/internal/location/ProviderProperties;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeGeofence-(Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LocationManagerService;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-encryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getVolumeList-()[Landroid/os/storage/StorageVolume;": [ "android.permission.ACCESS_ALL_EXTERNAL_STORAGE" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-setUsbMassStorageEnabled-(Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushDefaultDnsCache-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushInterfaceDnsCache-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceRxThrottle-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceTxThrottle-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-([Ljava/lang/String;)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getRoutes-(Ljava/lang/String;)[Landroid/net/RouteInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultInterfaceForDns-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForInterface-(Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceThrottle-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidNetworkRules-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startReverseTethering-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopReverseTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-expandSettingsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-onClearAllNotifications-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onPanelRevealed-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Lcom/android/internal/statusbar/StatusBarIconList; Ljava/util/List; Ljava/util/List; [I Ljava/util/List;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setSystemUiVisibility-(I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-topAppWindowChanged-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/LinkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceState-(Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/ThrottleService;-getByteCount-(Ljava/lang/String; I I I)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getCliffLevel-(Ljava/lang/String; I)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getCliffThreshold-(Ljava/lang/String; I)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getHelpUri-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getPeriodStartTime-(Ljava/lang/String;)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getResetTime-(Ljava/lang/String;)J": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ThrottleService;-getThrottle-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(J Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-([J I Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/WallpaperManagerService;-setDimensionHints-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/WallpaperManagerService;-setWallpaper-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/WifiService;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/WifiService;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/WifiService;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-captivePortalCheckComplete-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/WifiService;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-getWifiStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/WifiService;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/WifiService;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/WifiService;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/WifiService;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-startScan-(Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/WifiService;-startWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/WifiService;-stopWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/WifiService;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByAccessibilityId-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; I J)F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByViewId-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByText-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findFocus-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-focusSearch-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performAccessibilityAction-(I J I Landroid/os/Bundle; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performGlobalAction-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addAccessibilityInteractionConnection-(Landroid/view/IWindow; Landroid/view/accessibility/IAccessibilityInteractionConnection; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addClient-(Landroid/view/accessibility/IAccessibilityManagerClient; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getEnabledAccessibilityServiceList-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getInstalledAccessibilityServiceList-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-interrupt-(I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-removeAccessibilityInteractionConnection-(Landroid/view/IWindow;)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-sendAccessibilityEvent-(Landroid/view/accessibility/AccessibilityEvent; I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-temporaryEnableAccessibilityStateUntilKeyguardRemoved-(Landroid/content/ComponentName; Z)V": [ "temporaryEnableAccessibilityStateUntilKeyguardRemoved" ], "Lcom/android/server/am/ActivityManagerService;-activitySlept-(Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-activityStopped-(Landroid/os/IBinder; Landroid/os/Bundle; Landroid/graphics/Bitmap; Ljava/lang/CharSequence;)V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)Z": [ "android.permission.BACKUP", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-bindService-(Landroid/app/IApplicationThread; Landroid/os/IBinder; Landroid/content/Intent; Ljava/lang/String; Landroid/app/IServiceConnection; I I)I": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-dismissKeyguardOnNextActivity-()V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.FORCE_STOP_PACKAGES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-finishReceiver-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/Bundle; Z)V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.FORCE_STOP_PACKAGES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnails-(I)Landroid/app/ActivityManager$TaskThumbnails;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTaskTopThumbnail-(I)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I Landroid/app/IThumbnailReceiver;)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-goingToSleep-()V": [ "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationCrash-(Landroid/os/IBinder; Landroid/app/ApplicationErrorReport$CrashInfo;)V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationWtf-(Landroid/os/IBinder; Ljava/lang/String; Landroid/app/ApplicationErrorReport$CrashInfo;)Z": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z)J": [ "android.permission.FILTER_EVENTS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.KILL_BACKGROUND_PROCESSES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-moveActivityTaskToBack-(Landroid/os/IBinder; Z)Z": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToBack-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-removeSubTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z)V": [ "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.SET_PROCESS_LIMIT", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.SET_PROCESS_LIMIT", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setRequestedOrientation-(Landroid/os/IBinder; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.SHUTDOWN", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startRunning-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.START_ANY_ACTIVITY", "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Landroid/app/IStopUserCallback;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-switchUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-unregisterReceiver-(Landroid/content/IIntentReceiver;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-wakingUp-()V": [ "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInputEvent-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getAllPkgUsageStats-()[Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getPkgUsageStats-(Landroid/content/ComponentName;)Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteLaunchTime-(Landroid/content/ComponentName; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-notePauseComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteResumeComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/connectivity/Tethering;-interfaceAdded-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceLinkStateChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceStatusChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/display/DisplayManagerService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-()[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.MODIFY_NETWORK_ACCOUNTING", "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-openSession-()Landroid/net/INetworkStatsSession;": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES" ], "Lcom/android/server/pm/PackageManagerService;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I)V": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I Ljava/lang/String; I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantPermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackage-(Ljava/lang/String;)I": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackage-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackageWithVerification-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String; Landroid/net/Uri; Landroid/content/pm/ManifestDigest; Landroid/content/pm/ContainerEncryptionParams;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackageWithVerificationAndEncryption-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Landroid/content/pm/ContainerEncryptionParams;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)V": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokePermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/power/PowerManagerService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-goToSleep-(J I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-setStayOnSetting-(I)V": [ "android.permission.WRITE_SETTINGS" ], "Lcom/android/server/power/PowerManagerService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-shutdown-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-wakeUp-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-()[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/usb/UsbService;-allowUsbDebugging-(Z Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-denyUsbDebugging-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String; I)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setMassStorageBackingFile-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I I Landroid/view/IApplicationToken; I I Z Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addDisplayContentChangeListener-(I Landroid/view/IDisplayContentChangeListener;)V": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getFocusedWindowToken-()Landroid/os/IBinder;": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-getVisibleWindowsForDisplay-(I Ljava/util/List;)V": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-getWindowCompatibilityScale-(Landroid/os/IBinder;)F": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-getWindowInfo-(Landroid/os/IBinder;)Landroid/view/WindowInfo;": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-magnifyDisplay-(I F F F)V": [ "android.permission.MAGNIFY_DISPLAY" ], "Lcom/android/server/wm/WindowManagerService;-moveAppToken-(I Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-moveAppTokensToBottom-(Ljava/util/List;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-moveAppTokensToTop-(Ljava/util/List;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeDisplayContentChangeListener-(I Landroid/view/IDisplayContentChangeListener;)V": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppGroupId-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppWillBeHidden-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setInputFilter-(Landroid/view/IInputFilter;)V": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-showAssistant-()V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/ti/server/StubFmService;-resumeFm-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxChangeAudioTarget-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxChangeDigitalTargetConfiguration-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxCompleteScan_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisable-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableAudioRouting-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableRds_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnable-()Z": [ "ti.permission.FMRX", "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableAudioRouting-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableRds_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetBand-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetBand_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetChannelSpacing-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetChannelSpacing_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetCompleteScanProgress-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetCompleteScanProgress_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetDeEmphasisFilter-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetDeEmphasisFilter_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetFMState-()I": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxGetFwVersion-()D": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMonoStereoMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMonoStereoMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMuteMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMuteMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsAfSwitchMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsAfSwitchMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsGroupMask-()J": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsGroupMask_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsSystem-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsSystem_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRfDependentMuteMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRfDependentMuteMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssi-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssiThreshold-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssiThreshold_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssi_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetTunedFrequency-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetTunedFrequency_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetVolume-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetVolume_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxIsEnabled-()Z": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxIsFMPaused-()Z": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxIsValidChannel-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSeek_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetBand-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetBand_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetChannelSpacing-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetChannelSpacing_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetDeEmphasisFilter-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetDeEmphasisFilter_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMonoStereoMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMonoStereoMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMuteMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsAfSwitchMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsAfSwitchMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsGroupMask-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsGroupMask_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsSystem-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsSystem_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRfDependentMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRfDependentMuteMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRssiThreshold-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRssiThreshold_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetVolume-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopCompleteScan-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopCompleteScan_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopSeek-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopSeek_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxTune_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txChangeAudioSource-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txChangeDigitalSourceConfiguration-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txDisable-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txDisableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txEnable-()Z": [ "ti.permission.FMRX", "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txEnableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txGetFMState-()I": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-txSetMonoStereoMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetPowerLevel-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetPreEmphasisFilter-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsAfCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsECC-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsMusicSpeechFlag-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPiCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPsDisplayMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPsScrollSpeed-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPtyCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextPsMsg-(Ljava/lang/String;)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextRepertoire-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextRtMsg-(I Ljava/lang/String; I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTrafficCodes-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTransmissionMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTransmittedGroupsMask-(J)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txStartTransmission-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txStopTransmission-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txTune-(J)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txWriteRdsRawData-(Ljava/lang/String;)Z": [ "ti.permission.FMRX_ADMIN" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-addOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; Z)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccounts-()[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-removeOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setRequestedOrientation-(I)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AlarmManager;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/bluetooth/BluetoothA2dp;-finalize-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; Z Z Z Z Z Z Z I I)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeProximityAlert-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-setNetworkPreference-(I)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/nfc/NfcAdapter;-disableForegroundDispatch-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-disableForegroundNdefPush-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundDispatch-(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [L[java/lang/String;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundNdefPush-(Landroid/app/Activity; Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUris-([Landroid/net/Uri; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUrisCallback-(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessage-(Landroid/nfc/NdefMessage; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessageCallback-(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setOnNdefPushCompleteCallback-(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyA-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyB-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-decrement-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-increment-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-readBlock-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-restore-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transfer-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-writeBlock-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-readPages-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-writePage-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-getNdefMessage-()Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-makeReadOnly-()Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-writeNdefMessage-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-format-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-formatReadOnly-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-([J I)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(J)V": [ "android.permission.VIBRATE" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/ZoomButtonsController;-setVisible-(Z)V": [ "android.permission.BROADCAST_STICKY" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_18.json ================================================ { "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccountFromCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountCredentialsForCloning-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/media/AudioService;-registerMediaButtonEventReceiverForCalls-(Landroid/content/ComponentName;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/media/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setMode-(I Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Landroid/media/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-startBluetoothSco-(Landroid/os/IBinder; I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-unregisterMediaButtonEventReceiverForCalls-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/net/wifi/p2p/WifiP2pService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pService;-setMiracastMode-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelBondProcess-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-connectSocket-(Landroid/bluetooth/BluetoothDevice; I Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createSocketChannel-(I Ljava/lang/String; Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAdapterConnectionState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondedDevices-()[Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteAlias-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteClass-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteName-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteType-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-removeBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sendConnectionStateChange-(Landroid/bluetooth/BluetoothDevice; I I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPairingConfirmation-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPasskey-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPin-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setRemoteAlias-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addCharacteristic-(I Landroid/os/ParcelUuid; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addDescriptor-(I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addIncludedService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginReliableWrite-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginServiceDeclaration-(I I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clearServices-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientConnect-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-discoverServices-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endReliableWrite-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endServiceDeclaration-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readRemoteRssi-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-refreshDevice-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerClient-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerForNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerServer-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattServerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-removeService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendResponse-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverConnect-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScan-(I Z)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScanWithUuids-(I Z [Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopScan-(I Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterClient-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterServer-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-clccResponse-(I I I I Z Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioOn-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-phoneStateChanged-(I I I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-roamChanged-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getProtocolMode-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getReport-(Landroid/bluetooth/BluetoothDevice; B B I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-sendData-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setProtocolMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setReport-(Landroid/bluetooth/BluetoothDevice; B Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-virtualUnplug-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS", "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-copyMessageToIccEf-(Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-getAllMessagesFromIccEf-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS", "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendData-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/IccSmsInterfaceManager;-updateMessageOnIccEf-(Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-copyMessageToIccEf-(Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-getAllMessagesFromIccEf-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendData-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/IccSmsInterfaceManagerProxy;-updateMessageOnIccEf-(Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceSvn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIccSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1AlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getMsisdn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-disableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-disableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-enableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/cdma/RuimSmsInterfaceManager;-enableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-disableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-disableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-enableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/gsm/SimSmsInterfaceManager;-enableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-authenticate-(Ljava/lang/String; [B)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-close-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-getCardEmulationRoute-(Ljava/lang/String;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-getDriverName-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-open-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-setCardEmulationRoute-(Ljava/lang/String; I)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-transceive-(Ljava/lang/String; [B)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disable-(Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-dispatch-(Landroid/nfc/Tag;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enable-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-getNfcAdapterExtrasInterface-(Ljava/lang/String;)Landroid/nfc/INfcAdapterExtras;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setForegroundDispatch-(Landroid/app/PendingIntent; [Landroid/content/IntentFilter; Landroid/nfc/TechListParcel;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setNdefPushCallback-(Landroid/nfc/INdefPushCallback;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setP2pModes-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$TagService;-close-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-connect-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-formatNdef-(I [B)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTechList-(I)[I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTimeout-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-isNdef-(I)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefMakeReadOnly-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefRead-(I)Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefWrite-(I Landroid/nfc/NdefMessage;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-reconnect-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-rediscover-(I)Landroid/nfc/Tag;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-resetTimeouts-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-setTimeout-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-transceive-(I [B Z)Landroid/nfc/TransceiveResult;": [ "android.permission.NFC" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-cancelMissedCallsNotification-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-()Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isSimPinEnabled-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioPower-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-silenceRinger-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/server/AlarmManagerService;-setTime-(J)V": [ "android.permission.SET_TIME" ], "Lcom/android/server/AlarmManagerService;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Lcom/android/server/AppOpsService;-checkOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-finishOperation-(I I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getOpsForPackage-(I Ljava/lang/String; [I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getPackagesForOps-([I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-noteOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-resetAllModes-()V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setMode-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-startOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetId-(I Landroid/content/ComponentName; Landroid/os/Bundle; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetIdIfAllowed-(Ljava/lang/String; I Landroid/content/ComponentName; Landroid/os/Bundle; I)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindRemoteViewsService-(I Landroid/content/Intent; Landroid/os/IBinder; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-deleteAppWidgetId-(I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetInfo-(I I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetOptions-(I I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetViews-(I I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-hasBindAppWidgetPermission-(Ljava/lang/String; I)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-notifyAppWidgetViewDataChanged-([I I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-partiallyUpdateAppWidgetIds-([I Landroid/widget/RemoteViews; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-setBindAppWidgetPermission-(Ljava/lang/String; Z I)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-unbindRemoteViewsService-(I Landroid/content/Intent; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetIds-([I Landroid/widget/RemoteViews; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetOptions-(I Landroid/os/Bundle; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetProvider-(Landroid/content/ComponentName; Landroid/widget/RemoteViews; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-clearBackupData-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-captivePortalCheckComplete-(Landroid/net/NetworkInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-findConnectionTypeForIface-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileDataEnabled-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredIfacePairs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/ConnectivityService;-requestNetworkTransitionWakelock-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setDataDependency-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyProperties;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setMobileDataEnabled-(Z)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setNetworkPreference-(I)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setPolicyDataEnable-(I Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/ConnectivityService;-setRadio-(I Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setRadios-(Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-startUsingNetworkFeature-(I Ljava/lang/String; Landroid/os/IBinder;)I": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-supplyMessenger-(I Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getStorageEncryptionStatus-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-isActivePasswordSufficient-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-lockNow-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-wipeData-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DropBoxManagerService;-getNextEntry-(Ljava/lang/String; J)Landroid/os/DropBoxManager$Entry;": [ "android.permission.READ_LOGS" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Landroid/view/inputmethod/InputMethodInfo; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInput-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; Landroid/view/inputmethod/EditorInfo; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-windowGainedFocus-(Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext;)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/LocationManagerService;-addGpsStatusListener-(Landroid/location/IGpsStatusListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addTestProvider-(Ljava/lang/String; Lcom/android/internal/location/ProviderProperties;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeGeofence-(Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LocationManagerService;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LockSettingsService;-getBoolean-(Ljava/lang/String; Z I)Z": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getLong-(Ljava/lang/String; J I)J": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getString-(Ljava/lang/String; Ljava/lang/String; I)Ljava/lang/String;": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-encryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getVolumeList-()[Landroid/os/storage/StorageVolume;": [ "android.permission.ACCESS_ALL_EXTERNAL_STORAGE" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-setUsbMassStorageEnabled-(Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDnsInterfaceForPid-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushDefaultDnsCache-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushInterfaceDnsCache-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-([Ljava/lang/String;)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getRoutes-(Ljava/lang/String;)[Landroid/net/RouteInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isClatdStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultInterfaceForDns-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsInterfaceForPid-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForInterface-(Ljava/lang/String; [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidNetworkRules-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopClatd-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NotificationManagerService;-getActiveNotifications-(Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification;": [ "android.permission.ACCESS_NOTIFICATIONS" ], "Lcom/android/server/NotificationManagerService;-getHistoricalNotifications-(Ljava/lang/String; I)[Landroid/service/notification/StatusBarNotification;": [ "android.permission.ACCESS_NOTIFICATIONS" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-expandSettingsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-onClearAllNotifications-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onPanelRevealed-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Lcom/android/internal/statusbar/StatusBarIconList; Ljava/util/List; Ljava/util/List; [I Ljava/util/List;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setSystemUiVisibility-(I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-topAppWindowChanged-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/LinkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceState-(Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(I Ljava/lang/String; J Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-(I Ljava/lang/String; [J I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/WallpaperManagerService;-setDimensionHints-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/WallpaperManagerService;-setWallpaper-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByAccessibilityId-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; I J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByText-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByViewId-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findFocus-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-focusSearch-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performAccessibilityAction-(I J I Landroid/os/Bundle; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performGlobalAction-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addAccessibilityInteractionConnection-(Landroid/view/IWindow; Landroid/view/accessibility/IAccessibilityInteractionConnection; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addClient-(Landroid/view/accessibility/IAccessibilityManagerClient; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getEnabledAccessibilityServiceList-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getInstalledAccessibilityServiceList-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-interrupt-(I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-removeAccessibilityInteractionConnection-(Landroid/view/IWindow;)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-sendAccessibilityEvent-(Landroid/view/accessibility/AccessibilityEvent; I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-temporaryEnableAccessibilityStateUntilKeyguardRemoved-(Landroid/content/ComponentName; Z)V": [ "temporaryEnableAccessibilityStateUntilKeyguardRemoved" ], "Lcom/android/server/accounts/AccountManagerService;-addAccount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByTypeForPackage-(Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsForPackage-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Z Landroid/os/Bundle;)V": [ "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/am/ActivityManagerService;-activitySlept-(Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-activityStopped-(Landroid/os/IBinder; Landroid/os/Bundle; Landroid/graphics/Bitmap; Ljava/lang/CharSequence;)V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)Z": [ "android.permission.BACKUP", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-bindService-(Landroid/app/IApplicationThread; Landroid/os/IBinder; Landroid/content/Intent; Ljava/lang/String; Landroid/app/IServiceConnection; I I)I": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-dismissKeyguardOnNextActivity-()V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.FORCE_STOP_PACKAGES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-finishReceiver-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/Bundle; Z)V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.FORCE_STOP_PACKAGES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnails-(I)Landroid/app/ActivityManager$TaskThumbnails;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTaskTopThumbnail-(I)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I Landroid/app/IThumbnailReceiver;)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getTopActivityExtras-(I)Landroid/os/Bundle;": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-goingToSleep-()V": [ "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationCrash-(Landroid/os/IBinder; Landroid/app/ApplicationErrorReport$CrashInfo;)V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationWtf-(Landroid/os/IBinder; Ljava/lang/String; Landroid/app/ApplicationErrorReport$CrashInfo;)Z": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-hang-(Landroid/os/IBinder; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z)J": [ "android.permission.FILTER_EVENTS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.KILL_BACKGROUND_PROCESSES", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killUid-(I Ljava/lang/String;)V": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-moveActivityTaskToBack-(Landroid/os/IBinder; Z)Z": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToBack-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-removeSubTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-requestBugReport-()V": [ "android.permission.DUMP" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z)V": [ "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.SET_PROCESS_LIMIT", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.SET_PROCESS_LIMIT", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setRequestedOrientation-(Landroid/os/IBinder; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.SHUTDOWN", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; Ljava/lang/String; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startRunning-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.START_ANY_ACTIVITY", "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Landroid/app/IStopUserCallback;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-switchUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-unregisterReceiver-(Landroid/content/IIntentReceiver;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-wakingUp-()V": [ "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInputEvent-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOn-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getAllPkgUsageStats-()[Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getPkgUsageStats-(Landroid/content/ComponentName;)Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteLaunchTime-(Landroid/content/ComponentName; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-notePauseComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteResumeComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)Landroid/content/SyncStatusInfo;": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/display/DisplayManagerService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-()[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-openSession-()Landroid/net/INetworkStatsSession;": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES" ], "Lcom/android/server/pm/PackageManagerService;-deletePackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantPermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackageAsUser-(Ljava/lang/String; I)I": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackage-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackageWithVerification-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String; Landroid/net/Uri; Landroid/content/pm/ManifestDigest; Landroid/content/pm/ContainerEncryptionParams;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackageWithVerificationAndEncryption-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Landroid/content/pm/ContainerEncryptionParams;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)V": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetPreferredActivities-(I)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokePermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/power/PowerManagerService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-goToSleep-(J I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-setStayOnSetting-(I)V": [ "android.permission.WRITE_SETTINGS" ], "Lcom/android/server/power/PowerManagerService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-shutdown-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-wakeUp-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-()[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/usb/UsbService;-allowUsbDebugging-(Z Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearUsbDebuggingKeys-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-denyUsbDebugging-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String; I)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setMassStorageBackingFile-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/wifi/WifiService;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiService;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiService;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-captivePortalCheckComplete-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiService;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiService;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiService;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiService;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-startScan-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-startWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiService;-stopWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiService;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I Z Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplayDensity-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplaySize-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getCompatibleMagnificationSpecForWindow-(Landroid/os/IBinder;)Landroid/view/MagnificationSpec;": [ "android.permission.MAGNIFY_DISPLAY" ], "Lcom/android/server/wm/WindowManagerService;-getFocusedWindowToken-()Landroid/os/IBinder;": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-getWindowFrame-(Landroid/os/IBinder; Landroid/graphics/Rect;)V": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-moveAppToken-(I Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-moveAppTokensToBottom-(Ljava/util/List;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-moveAppTokensToTop-(Ljava/util/List;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppGroupId-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppWillBeHidden-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayDensity-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplaySize-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setInputFilter-(Landroid/view/IInputFilter;)V": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/wm/WindowManagerService;-setMagnificationCallbacks-(Landroid/view/IMagnificationCallbacks;)V": [ "android.permission.MAGNIFY_DISPLAY" ], "Lcom/android/server/wm/WindowManagerService;-setMagnificationSpec-(Landroid/view/MagnificationSpec;)V": [ "android.permission.MAGNIFY_DISPLAY" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setOverscan-(I I I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-showAssistant-()V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/ti/server/StubFmService;-resumeFm-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxChangeAudioTarget-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxChangeDigitalTargetConfiguration-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxCompleteScan_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisable-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableAudioRouting-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxDisableRds_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnable-()Z": [ "ti.permission.FMRX", "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableAudioRouting-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxEnableRds_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetBand-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetBand_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetChannelSpacing-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetChannelSpacing_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetCompleteScanProgress-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetCompleteScanProgress_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetDeEmphasisFilter-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetDeEmphasisFilter_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetFMState-()I": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxGetFwVersion-()D": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMonoStereoMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMonoStereoMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMuteMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetMuteMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsAfSwitchMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsAfSwitchMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsGroupMask-()J": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsGroupMask_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsSystem-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRdsSystem_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRfDependentMuteMode-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRfDependentMuteMode_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssi-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssiThreshold-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssiThreshold_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetRssi_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetTunedFrequency-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetTunedFrequency_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetVolume-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxGetVolume_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxIsEnabled-()Z": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxIsFMPaused-()Z": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-rxIsValidChannel-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSeek_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetBand-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetBand_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetChannelSpacing-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetChannelSpacing_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetDeEmphasisFilter-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetDeEmphasisFilter_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMonoStereoMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMonoStereoMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetMuteMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsAfSwitchMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsAfSwitchMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsGroupMask-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsGroupMask_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsSystem-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRdsSystem_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRfDependentMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRfDependentMuteMode_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRssiThreshold-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetRssiThreshold_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxSetVolume-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopCompleteScan-()I": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopCompleteScan_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopSeek-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxStopSeek_nb-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-rxTune_nb-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txChangeAudioSource-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txChangeDigitalSourceConfiguration-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txDisable-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txDisableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txEnable-()Z": [ "ti.permission.FMRX", "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txEnableRds-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txGetFMState-()I": [ "ti.permission.FMRX" ], "Lcom/ti/server/StubFmService;-txSetMonoStereoMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetMuteMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetPowerLevel-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetPreEmphasisFilter-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsAfCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsECC-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsMusicSpeechFlag-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPiCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPsDisplayMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPsScrollSpeed-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsPtyCode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextPsMsg-(Ljava/lang/String;)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextRepertoire-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTextRtMsg-(I Ljava/lang/String; I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTrafficCodes-(I I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTransmissionMode-(I)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txSetRdsTransmittedGroupsMask-(J)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txStartTransmission-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txStopTransmission-()Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txTune-(J)Z": [ "ti.permission.FMRX_ADMIN" ], "Lcom/ti/server/StubFmService;-txWriteRdsRawData-(Ljava/lang/String;)Z": [ "ti.permission.FMRX_ADMIN" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-addOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; Z)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccounts-()[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-removeOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setRequestedOrientation-(I)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AlarmManager;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/bluetooth/BluetoothA2dp;-finalize-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-([Ljava/util/UUID; Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-stopLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getType-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-beginReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-connect-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-disconnect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-discoverServices-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-executeReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readRemoteRssi-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-setCharacteristicNotification-(Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-addService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-cancelConnection-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-clearServices-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-connect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-notifyCharacteristicChanged-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-removeService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-sendResponse-(Landroid/bluetooth/BluetoothDevice; I I I [B)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectedDevices-(I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectionState-(Landroid/bluetooth/BluetoothDevice; I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getDevicesMatchingConnectionStates-(I [I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-openGattServer-(Landroid/content/Context; Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; Z Z Z Z Z Z Z I I)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeProximityAlert-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-setNetworkPreference-(I)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/nfc/NfcAdapter;-disableForegroundDispatch-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-disableForegroundNdefPush-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundDispatch-(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [L[java/lang/String;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundNdefPush-(Landroid/app/Activity; Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUris-([Landroid/net/Uri; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUrisCallback-(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessage-(Landroid/nfc/NdefMessage; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessageCallback-(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setOnNdefPushCompleteCallback-(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyA-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyB-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-decrement-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-increment-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-readBlock-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-restore-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transfer-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-writeBlock-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-readPages-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-writePage-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-getNdefMessage-()Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-makeReadOnly-()Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-writeNdefMessage-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-format-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-formatReadOnly-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-([J I)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; [J I)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; J)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(J)V": [ "android.permission.VIBRATE" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-unregisterReceiver-(Landroid/content/BroadcastReceiver;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/widget/VideoView;-getAudioSessionId-()I": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/ZoomButtonsController;-setVisible-(Z)V": [ "android.permission.BROADCAST_STICKY" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_19.json ================================================ { "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccountFromCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountCredentialsForCloning-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/media/AudioService;-registerMediaButtonEventReceiverForCalls-(Landroid/content/ComponentName;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/media/AudioService;-registerRemoteControlDisplay-(Landroid/media/IRemoteControlDisplay; I I)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Landroid/media/AudioService;-registerRemoteController-(Landroid/media/IRemoteControlDisplay; I I Landroid/content/ComponentName;)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Landroid/media/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setMode-(I Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Landroid/media/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-startBluetoothSco-(Landroid/os/IBinder; I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-unregisterMediaButtonEventReceiverForCalls-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/net/wifi/p2p/WifiP2pService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pService;-setMiracastMode-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelBondProcess-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-configHciSnoopLog-(Z)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-connectSocket-(Landroid/bluetooth/BluetoothDevice; I Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createSocketChannel-(I Ljava/lang/String; Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAdapterConnectionState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondedDevices-()[Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteAlias-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteClass-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteName-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteType-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-removeBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sendConnectionStateChange-(Landroid/bluetooth/BluetoothDevice; I I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPairingConfirmation-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPasskey-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPin-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setRemoteAlias-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addCharacteristic-(I Landroid/os/ParcelUuid; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addDescriptor-(I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addIncludedService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginReliableWrite-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginServiceDeclaration-(I I I I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clearServices-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientConnect-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-discoverServices-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endReliableWrite-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endServiceDeclaration-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getAdvManufacturerData-()[B": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getAdvServiceData-()[B": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getAdvServiceUuids-()Ljava/util/List;": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-isAdvertising-()Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readRemoteRssi-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-refreshDevice-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerClient-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerForNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerServer-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattServerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-removeAdvManufacturerCodeAndData-(I)V": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-removeService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendResponse-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverConnect-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-setAdvManufacturerCodeAndData-(I [B)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-setAdvServiceData-([B)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startAdvertising-(I)V": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScan-(I Z)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScanWithUuids-(I Z [Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopAdvertising-()V": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopScan-(I Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterClient-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterServer-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-clccResponse-(I I I I Z Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioOn-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-phoneStateChanged-(I I I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getProtocolMode-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getReport-(Landroid/bluetooth/BluetoothDevice; B B I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-sendData-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setProtocolMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setReport-(Landroid/bluetooth/BluetoothDevice; B Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-virtualUnplug-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getClient-()Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS", "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS", "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/IccPhoneBookInterfaceManagerProxy;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getDeviceSvn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIccSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1AlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getMsisdn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfo;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/nfc/NfcService$CardEmulationService;-getServices-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$CardEmulationService;-isDefaultServiceForAid-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$CardEmulationService;-isDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$CardEmulationService;-setDefaultForNextTap-(I Landroid/content/ComponentName;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$CardEmulationService;-setDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-authenticate-(Ljava/lang/String; [B)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-close-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-getCardEmulationRoute-(Ljava/lang/String;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-getDriverName-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-open-(Ljava/lang/String; Landroid/os/IBinder;)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-setCardEmulationRoute-(Ljava/lang/String; I)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterExtrasService;-transceive-(Ljava/lang/String; [B)Landroid/os/Bundle;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disable-(Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-dispatch-(Landroid/nfc/Tag;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enable-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-getNfcAdapterExtrasInterface-(Ljava/lang/String;)Landroid/nfc/INfcAdapterExtras;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setAppCallback-(Landroid/nfc/IAppCallback;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setForegroundDispatch-(Landroid/app/PendingIntent; [Landroid/content/IntentFilter; Landroid/nfc/TechListParcel;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setP2pModes-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$TagService;-close-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-connect-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-formatNdef-(I [B)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTechList-(I)[I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTimeout-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-isNdef-(I)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefMakeReadOnly-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefRead-(I)Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefWrite-(I Landroid/nfc/NdefMessage;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-reconnect-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-rediscover-(I)Landroid/nfc/Tag;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-resetTimeouts-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-setTimeout-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-transceive-(I [B Z)Landroid/nfc/TransceiveResult;": [ "android.permission.NFC" ], "Lcom/android/phone/CallCommandService;-rejectCall-(Lcom/android/services/telephony/common/Call; Z Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/phone/PhoneInterfaceManager;-addListener-(Lcom/android/internal/telephony/ITelephonyListener;)V": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-cancelMissedCallsNotification-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableApnType-(Ljava/lang/String;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-()Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isSimPinEnabled-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-merge-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-mute-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-playDtmfTone-(C Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-removeListener-(Lcom/android/internal/telephony/ITelephonyListener;)V": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioPower-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-silenceRinger-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-stopDtmfTone-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResult-(Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResult-(Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-swap-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleHold-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/server/AlarmManagerService;-set-(I J J J Landroid/app/PendingIntent; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/AlarmManagerService;-setTime-(J)V": [ "android.permission.SET_TIME" ], "Lcom/android/server/AlarmManagerService;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Lcom/android/server/AppOpsService;-checkOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-finishOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getOpsForPackage-(I Ljava/lang/String; [I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getPackagesForOps-([I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-noteOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-resetAllModes-()V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setMode-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-startOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetId-(I Landroid/content/ComponentName; Landroid/os/Bundle; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindAppWidgetIdIfAllowed-(Ljava/lang/String; I Landroid/content/ComponentName; Landroid/os/Bundle; I)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-bindRemoteViewsService-(I Landroid/content/Intent; Landroid/os/IBinder; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-deleteAppWidgetId-(I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetInfo-(I I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetOptions-(I I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-getAppWidgetViews-(I I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-hasBindAppWidgetPermission-(Ljava/lang/String; I)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-notifyAppWidgetViewDataChanged-([I I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-partiallyUpdateAppWidgetIds-([I Landroid/widget/RemoteViews; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-setBindAppWidgetPermission-(Ljava/lang/String; Z I)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/AppWidgetService;-unbindRemoteViewsService-(I Landroid/content/Intent; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetIds-([I Landroid/widget/RemoteViews; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetOptions-(I Landroid/os/Bundle; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/AppWidgetService;-updateAppWidgetProvider-(Landroid/content/ComponentName; Landroid/widget/RemoteViews; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-clearBackupData-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/BackupManagerService;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-captivePortalCheckComplete-(Landroid/net/NetworkInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-captivePortalCheckCompleted-(Landroid/net/NetworkInfo; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-checkMobileProvisioning-(I)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-findConnectionTypeForIface-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveLinkQualityInfo-()Landroid/net/LinkQualityInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllLinkQualityInfo-()[Landroid/net/LinkQualityInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkQualityInfo-(I)Landroid/net/LinkQualityInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileDataEnabled-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getMobileRedirectedProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getProvisioningOrActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-markSocketAsUser-(Landroid/os/ParcelFileDescriptor; I)V": [ "android.permission.MARK_NETWORK_SOCKET" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/ConnectivityService;-requestNetworkTransitionWakelock-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHost-(I I Ljava/lang/String;)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B Ljava/lang/String;)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAirplaneMode-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setDataDependency-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyProperties;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setMobileDataEnabled-(Z)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setNetworkPreference-(I)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setPolicyDataEnable-(I Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/ConnectivityService;-setProvisioningNotificationVisible-(Z I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setRadio-(I Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setRadios-(Z)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-startUsingNetworkFeature-(I Ljava/lang/String; Landroid/os/IBinder;)I": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-supplyMessenger-(I Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConsumerIrService;-getCarrierFrequencies-()[I": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/ConsumerIrService;-transmit-(Ljava/lang/String; I [I)V": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getDeviceOwnerName-()Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-getStorageEncryptionStatus-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-installCaCert-([B)Z": [ "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/DevicePolicyManagerService;-isActivePasswordSufficient-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-lockNow-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DevicePolicyManagerService;-uninstallCaCert-([B)V": [ "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/DevicePolicyManagerService;-wipeData-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/DropBoxManagerService;-getNextEntry-(Ljava/lang/String; J)Landroid/os/DropBoxManager$Entry;": [ "android.permission.READ_LOGS" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Ljava/lang/String; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-shouldOfferSwitchingToNextInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInput-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; Landroid/view/inputmethod/EditorInfo; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-updateStatusIcon-(Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-windowGainedFocus-(Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext;)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/LocationManagerService;-addGpsStatusListener-(Landroid/location/IGpsStatusListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addTestProvider-(Ljava/lang/String; Lcom/android/internal/location/ProviderProperties;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeGeofence-(Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LocationManagerService;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LockSettingsService;-checkPassword-(Ljava/lang/String; I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkPattern-(Ljava/lang/String; I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-getBoolean-(Ljava/lang/String; Z I)Z": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getLong-(Ljava/lang/String; J I)J": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getString-(Ljava/lang/String; Ljava/lang/String; I)Ljava/lang/String;": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-removeUser-(I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setBoolean-(Ljava/lang/String; Z I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPassword-(Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPattern-(Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLong-(Ljava/lang/String; J I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setString-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-encryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getVolumeList-()[Landroid/os/storage/StorageVolume;": [ "android.permission.ACCESS_ALL_EXTERNAL_STORAGE" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-setUsbMassStorageEnabled-(Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDnsInterfaceForPid-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDnsInterfaceForUidRange-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDnsInterfaceMaps-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearHostExemption-(Landroid/net/LinkAddress;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearMarkedForwarding-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearMarkedForwardingRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearUidRangeRoute-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushDefaultDnsCache-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushInterfaceDnsCache-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getMarkForProtect-()I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getMarkForUid-(I)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getRoutes-(Ljava/lang/String;)[Landroid/net/RouteInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isClatdStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeSecondaryRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultInterfaceForDns-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsInterfaceForPid-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsInterfaceForUidRange-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForInterface-(Ljava/lang/String; [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setHostExemption-(Landroid/net/LinkAddress;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMarkedForwarding-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMarkedForwardingRoute-(Ljava/lang/String; Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMtu-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidNetworkRules-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidRangeRoute-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopClatd-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NotificationManagerService;-getActiveNotifications-(Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification;": [ "android.permission.ACCESS_NOTIFICATIONS" ], "Lcom/android/server/NotificationManagerService;-getHistoricalNotifications-(Ljava/lang/String; I)[Landroid/service/notification/StatusBarNotification;": [ "android.permission.ACCESS_NOTIFICATIONS" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-expandSettingsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-onClearAllNotifications-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-onPanelRevealed-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Lcom/android/internal/statusbar/StatusBarIconList; Ljava/util/List; Ljava/util/List; [I Ljava/util/List;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/StatusBarManagerService;-setSystemUiVisibility-(I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/StatusBarManagerService;-topAppWindowChanged-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/LinkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceState-(Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(I Ljava/lang/String; J Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-(I Ljava/lang/String; [J I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/WallpaperManagerService;-setDimensionHints-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/WallpaperManagerService;-setWallpaper-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByAccessibilityId-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; I J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByText-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByViewId-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findFocus-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-focusSearch-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performAccessibilityAction-(I J I Landroid/os/Bundle; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performGlobalAction-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addAccessibilityInteractionConnection-(Landroid/view/IWindow; Landroid/view/accessibility/IAccessibilityInteractionConnection; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addClient-(Landroid/view/accessibility/IAccessibilityManagerClient; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getEnabledAccessibilityServiceList-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getInstalledAccessibilityServiceList-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-interrupt-(I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-removeAccessibilityInteractionConnection-(Landroid/view/IWindow;)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-sendAccessibilityEvent-(Landroid/view/accessibility/AccessibilityEvent; I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-temporaryEnableAccessibilityStateUntilKeyguardRemoved-(Landroid/content/ComponentName; Z)V": [ "temporaryEnableAccessibilityStateUntilKeyguardRemoved" ], "Lcom/android/server/accounts/AccountManagerService;-addAccount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByTypeForPackage-(Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsForPackage-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Z Landroid/os/Bundle;)V": [ "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/am/ActivityManagerService;-activityDestroyed-(Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-appNotRespondingViaProvider-(Landroid/os/IBinder;)V": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-createStack-(I I I F)I": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-dismissKeyguardOnNextActivity-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-getAssistContextExtras-(I)Landroid/os/Bundle;": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getStackBoxInfo-(I)Landroid/app/ActivityManager$StackBoxInfo;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getStackBoxes-()Ljava/util/List;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnails-(I)Landroid/app/ActivityManager$TaskThumbnails;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTaskTopThumbnail-(I)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I Landroid/app/IThumbnailReceiver;)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-goingToSleep-()V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/am/ActivityManagerService;-hang-(Landroid/os/IBinder; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z Ljava/lang/String;)J": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-moveActivityTaskToBack-(Landroid/os/IBinder; Z)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToBack-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToStack-(I I Z)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.MANAGE_ACTIVITY_STACKS", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-performIdleMaintenance-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-removeSubTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-requestBugReport-()V": [ "android.permission.DUMP" ], "Lcom/android/server/am/ActivityManagerService;-resizeStackBox-(I F)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-restart-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; Ljava/lang/String; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Ljava/lang/String; Landroid/os/ParcelFileDescriptor; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Landroid/app/IStopUserCallback;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-switchUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-wakingUp-()V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInputEvent-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkStatsEnabled-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOn-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStartedFromSource-(Landroid/os/WorkSource; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getCurrentStats-(Ljava/util/List;)[B": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getStatsOverTime-(J)Landroid/os/ParcelFileDescriptor;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getAllPkgUsageStats-()[Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-getPkgUsageStats-(Landroid/content/ComponentName;)Lcom/android/internal/os/PkgUsageStats;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteLaunchTime-(Landroid/content/ComponentName; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-notePauseComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/UsageStatsService;-noteResumeComponent-(Landroid/content/ComponentName;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String;)Landroid/content/SyncStatusInfo;": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/display/DisplayManagerService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-createVirtualDisplay-(Landroid/os/IBinder; Ljava/lang/String; Ljava/lang/String; I I I Landroid/view/Surface; I)I": [ "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "android.permission.CAPTURE_VIDEO_OUTPUT" ], "Lcom/android/server/display/DisplayManagerService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-pauseWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-resumeWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-startWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService;-stopWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/media/MediaRouterService;-registerClientAsUser-(Landroid/media/IMediaRouterClient; Ljava/lang/String; I)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-()[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-openSession-()Landroid/net/INetworkStatsSession;": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES" ], "Lcom/android/server/pm/PackageManagerService;-deletePackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationBlockedSettingAsUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getHomeActivities-(Ljava/util/List;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantPermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackageAsUser-(Ljava/lang/String; I)I": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackage-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackageWithVerification-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String; Landroid/net/Uri; Landroid/content/pm/ManifestDigest; Landroid/content/pm/ContainerEncryptionParams;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-installPackageWithVerificationAndEncryption-(Landroid/net/Uri; Landroid/content/pm/IPackageInstallObserver; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Landroid/content/pm/ContainerEncryptionParams;)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-isPackageAvailable-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)V": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentContentProviders-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetPreferredActivities-(I)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokePermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationBlockedSettingAsUser-(Ljava/lang/String; Z I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I Landroid/content/IntentFilter; I Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/power/PowerManagerService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-acquireWakeLockWithUid-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-goToSleep-(J I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-setStayOnSetting-(I)V": [ "android.permission.WRITE_SETTINGS" ], "Lcom/android/server/power/PowerManagerService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-shutdown-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService;-updateWakeLockUids-(Landroid/os/IBinder; [I)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService;-wakeUp-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/print/PrintManagerService;-addPrintJobStateChangeListener-(Landroid/print/IPrintJobStateChangeListener; I I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService;-cancelPrintJob-(Landroid/print/PrintJobId; I I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService;-createPrinterDiscoverySession-(Landroid/print/IPrinterDiscoveryObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-destroyPrinterDiscoverySession-(Landroid/print/IPrinterDiscoveryObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-getEnabledPrintServices-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-getInstalledPrintServices-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-getPrintJobInfo-(Landroid/print/PrintJobId; I I)Landroid/print/PrintJobInfo;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService;-getPrintJobInfos-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService;-print-(Ljava/lang/String; Landroid/print/IPrintDocumentAdapter; Landroid/print/PrintAttributes; Ljava/lang/String; I I)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService;-removePrintJobStateChangeListener-(Landroid/print/IPrintJobStateChangeListener; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-restartPrintJob-(Landroid/print/PrintJobId; I I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService;-startPrinterDiscovery-(Landroid/print/IPrinterDiscoveryObserver; Ljava/util/List; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-startPrinterStateTracking-(Landroid/print/PrinterId; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-stopPrinterDiscovery-(Landroid/print/IPrinterDiscoveryObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-stopPrinterStateTracking-(Landroid/print/PrinterId; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/print/PrintManagerService;-validatePrinters-(Ljava/util/List; I)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-()[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/usb/UsbService;-allowUsbDebugging-(Z Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearUsbDebuggingKeys-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-denyUsbDebugging-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String; I)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setMassStorageBackingFile-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/wifi/WifiService;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiService;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiService;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-captivePortalCheckComplete-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiService;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getBatchedScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-getWifiStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiService;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-pollBatchedScan-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiService;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiService;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-requestBatchedScan-(Landroid/net/wifi/BatchedScanSettings; Landroid/os/IBinder; Landroid/os/WorkSource;)Z": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiService;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiService;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-startScan-(Landroid/os/WorkSource;)V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiService;-startWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiService;-stopBatchedScan-(Landroid/net/wifi/BatchedScanSettings;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiService;-stopWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiService;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I I Z Z I I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplayDensity-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplaySize-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getCompatibleMagnificationSpecForWindow-(Landroid/os/IBinder;)Landroid/view/MagnificationSpec;": [ "android.permission.MAGNIFY_DISPLAY" ], "Lcom/android/server/wm/WindowManagerService;-getFocusedWindowToken-()Landroid/os/IBinder;": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-getWindowFrame-(Landroid/os/IBinder; Landroid/graphics/Rect;)V": [ "android.permission.RETRIEVE_WINDOW_INFO" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I Z)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppGroupId-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I I Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppWillBeHidden-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayDensity-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplaySize-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setInputFilter-(Landroid/view/IInputFilter;)V": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/wm/WindowManagerService;-setMagnificationCallbacks-(Landroid/view/IMagnificationCallbacks;)V": [ "android.permission.MAGNIFY_DISPLAY" ], "Lcom/android/server/wm/WindowManagerService;-setMagnificationSpec-(Landroid/view/MagnificationSpec;)V": [ "android.permission.MAGNIFY_DISPLAY" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setOverscan-(I I I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-addOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; Z)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccounts-()[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-moveTaskToBack-(Z)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AlarmManager;-setTimeZone-(Ljava/lang/String;)V": [ "android.permission.SET_TIME_ZONE" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/bluetooth/BluetoothA2dp;-finalize-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-([Ljava/util/UUID; Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-stopLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createBond-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getType-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-setPairingConfirmation-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-setPin-([B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-beginReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-connect-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-disconnect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-discoverServices-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-executeReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readRemoteRssi-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-setCharacteristicNotification-(Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-addService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-cancelConnection-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-clearServices-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-connect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-notifyCharacteristicChanged-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-removeService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-sendResponse-(Landroid/bluetooth/BluetoothDevice; I I I [B)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectedDevices-(I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectionState-(Landroid/bluetooth/BluetoothDevice; I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getDevicesMatchingConnectionStates-(I [I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-openGattServer-(Landroid/content/Context; Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/hardware/ConsumerIrManager;-getCarrierFrequencies-()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/ConsumerIrManager;-transmit-(I [I)V": [ "android.permission.TRANSMIT_IR" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; Z Z Z Z Z Z Z I I)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-isProviderEnabled-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeProximityAlert-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-adjustStreamVolume-(I I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-adjustSuggestedStreamVolume-(I I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-adjustVolume-(I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setStreamVolume-(I I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaRouter$RouteGroup;-requestSetVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteGroup;-requestUpdateVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteInfo;-requestSetVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteInfo;-requestUpdateVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkPreference-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-setNetworkPreference-(I)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-stopUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-([J I)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; [J I)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; J)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(J)V": [ "android.permission.VIBRATE" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/widget/VideoView;-getAudioSessionId-()I": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_21.json ================================================ { "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccountFromCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountCredentialsForCloning-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/hardware/location/ActivityRecognitionHardware;-disableActivityEvent-(Ljava/lang/String; I)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-enableActivityEvent-(Ljava/lang/String; I J)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-flush-()Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-getSupportedActivities-()[Ljava/lang/String;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-isActivitySupported-(Ljava/lang/String;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-registerSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-unregisterSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/media/AudioService;-disableSafeMediaVolume-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-forceRemoteSubmixFullVolume-(Z Landroid/os/IBinder;)V": [ "android.permission.CAPTURE_AUDIO_OUTPUT" ], "Landroid/media/AudioService;-notifyVolumeControllerVisible-(Landroid/media/IVolumeController; Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-registerAudioPolicy-(Landroid/media/audiopolicy/AudioPolicyConfig; Landroid/os/IBinder;)Z": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Landroid/media/AudioService;-registerRemoteControlDisplay-(Landroid/media/IRemoteControlDisplay; I I)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Landroid/media/AudioService;-registerRemoteController-(Landroid/media/IRemoteControlDisplay; I I Landroid/content/ComponentName;)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Landroid/media/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setMicrophoneMute-(Z Ljava/lang/String;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setMode-(I Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS", "android.permission.MODIFY_PHONE_STATE" ], "Landroid/media/AudioService;-setRemoteStreamVolume-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Landroid/media/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setVolumeController-(Landroid/media/IVolumeController;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-startBluetoothSco-(Landroid/os/IBinder; I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-startBluetoothScoVirtualCall-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getAudioConfig-(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAudioConfig;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-sendPassThroughCmd-(Landroid/bluetooth/BluetoothDevice; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelBondProcess-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-configHciSnoopLog-(Z)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-connectSocket-(Landroid/bluetooth/BluetoothDevice; I Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBond-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createSocketChannel-(I Ljava/lang/String; Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteMasInstances-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.RECEIVE_BLUETOOTH_MAP" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getActivityEnergyInfoFromController-()V": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAdapterConnectionState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondedDevices-()[Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteAlias-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteClass-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteName-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteType-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isActivityAndEnergyReportingSupported-()Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isMultiAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-removeBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-reportActivityInfo-()Landroid/bluetooth/BluetoothActivityEnergyInfo;": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sendConnectionStateChange-(Landroid/bluetooth/BluetoothDevice; I I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPairingConfirmation-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPasskey-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPin-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setRemoteAlias-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addCharacteristic-(I Landroid/os/ParcelUuid; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addDescriptor-(I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addIncludedService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginReliableWrite-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginServiceDeclaration-(I I I I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clearServices-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-configureMTU-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-connectionParameterUpdate-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-discoverServices-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endReliableWrite-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endServiceDeclaration-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readRemoteRssi-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-refreshDevice-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerClient-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerForNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerServer-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattServerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-removeService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendResponse-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startMultiAdvertising-(I Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseSettings;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScan-(I Z Landroid/bluetooth/le/ScanSettings; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopMultiAdvertising-(I)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopScan-(I Z)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterClient-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterServer-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-clccResponse-(I I I I Z Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-enableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioOn-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-phoneStateChanged-(I I I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-acceptCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dial-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dialMemory-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-enterPrivateMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-explicitCallTransfer-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgEvents-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgFeatures-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentCalls-(Landroid/bluetooth/BluetoothDevice;)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getLastVoiceTagNumber-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-holdCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-redial-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-rejectCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-sendDTMF-(Landroid/bluetooth/BluetoothDevice; B)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-terminateCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getProtocolMode-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getReport-(Landroid/bluetooth/BluetoothDevice; B B I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-sendData-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setProtocolMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setReport-(Landroid/bluetooth/BluetoothDevice; B Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-virtualUnplug-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getClient-()Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getDeviceSvn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIccSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIccSimChallengeResponse-(J I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimChallengeResponse-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimIst-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimPcscf-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getLine1AlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getMsisdn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-addSubInfoRecord-(Ljava/lang/String; I)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearDefaultsForInactiveSubIds-()V": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearSubInfo-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubInfoCount-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubInfoList-()Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoCount-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoList-()Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getSubInfoForSubscriber-(J)Landroid/telephony/SubInfoRecord;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getSubInfoUsingIccId-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getSubInfoUsingSlotId-(I)Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setColor-(I J)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDataRoaming-(I J)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayName-(Ljava/lang/String; J)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNameUsingSrc-(Ljava/lang/String; J J)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNumber-(Ljava/lang/String; J)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNumberFormat-(I J)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/UiccSmsController;-copyMessageToIccEf-(Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-copyMessageToIccEfForSubscriber-(J Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastForSubscriber-(J I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastRangeForSubscriber-(J I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcast-(I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastForSubscriber-(J I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastRange-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastRangeForSubscriber-(J I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-getAllMessagesFromIccEf-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-getAllMessagesFromIccEfForSubscriber-(J Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendData-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriber-(J Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendMultipartTextForSubscriber-(J Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredMultipartText-(J Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredText-(J Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriber-(J Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-updateMessageOnIccEf-(Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-updateMessageOnIccEfForSubscriber-(J Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-addNfcUnlockHandler-(Landroid/nfc/INfcUnlockHandler; [I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disable-(Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-dispatch-(Landroid/nfc/Tag;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enable-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-invokeBeam-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-invokeBeamInternal-(Landroid/nfc/BeamShareData;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-pausePolling-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-resumePolling-()V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setAppCallback-(Landroid/nfc/IAppCallback;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setForegroundDispatch-(Landroid/app/PendingIntent; [Landroid/content/IntentFilter; Landroid/nfc/TechListParcel;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setP2pModes-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$TagService;-close-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-connect-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-formatNdef-(I [B)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTechList-(I)[I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTimeout-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-isNdef-(I)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefMakeReadOnly-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefRead-(I)Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefWrite-(I Landroid/nfc/NdefMessage;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-reconnect-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-rediscover-(I)Landroid/nfc/Tag;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-resetTimeouts-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-setTimeout-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-transceive-(I [B Z)Landroid/nfc/TransceiveResult;": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-getAidGroupForService-(I Landroid/content/ComponentName; Ljava/lang/String;)Landroid/nfc/cardemulation/AidGroup;": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-getServices-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-isDefaultServiceForAid-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-isDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-registerAidGroupForService-(I Landroid/content/ComponentName; Landroid/nfc/cardemulation/AidGroup;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-removeAidGroupForService-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setDefaultForNextTap-(I Landroid/content/ComponentName;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setPreferredService-(Landroid/content/ComponentName;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-unsetPreferredService-()Z": [ "android.permission.NFC" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdatesForSubscriber-(J)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdatesForSubscriber-(J)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableSimplifiedNetworkSettingsForSubscriber-(J Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCallForSubscriber-(J)Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCalculatedPreferredNetworkType-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMdn-(J)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMin-(J)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-()Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataEnabled-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1AlphaTagForDisplay-(J)Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1NumberForDisplay-(J)Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getPcscfAddress-(Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPreferredNetworkType-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getSimplifiedNetworkSettingsEnabledForSubscriber-(J)Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmiForSubscriber-(J Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccCloseLogicalChannel-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccExchangeSimIO-(I I I I I Ljava/lang/String;)[B": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccOpenLogicalChannel-(Ljava/lang/String;)Landroid/telephony/IccOpenLogicalChannelResponse;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduBasicChannel-(I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduLogicalChannel-(I I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-invokeOemRilRequestRaw-([B [B)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isSimPinEnabled-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvReadItem-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvResetConfig-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteCdmaPrl-([B)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteItem-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-sendEnvelopeWithStatus-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setDataEnabled-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setImsRegistrationState-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setLine1NumberForDisplayForSubscriber-(J Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setOperatorBrandOverride-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setPreferredNetworkType-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioForSubscriber-(J Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioPower-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-shutdownMobileRadios-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinForSubscriber-(J Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResult-(Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResultForSubscriber-(J Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukForSubscriber-(J Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResult-(Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResultForSubscriber-(J Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOffForSubscriber-(J)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/server/AppOpsService;-checkAudioOperation-(I I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-checkOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-finishOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getOpsForPackage-(I Ljava/lang/String; [I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getPackagesForOps-([I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-noteOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-resetAllModes-()V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setAudioRestriction-(I I I I [Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setMode-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-startOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-captivePortalCheckCompleted-(Landroid/net/NetworkInfo; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-findConnectionTypeForIface-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveLinkQualityInfo-()Landroid/net/LinkQualityInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllLinkQualityInfo-()[Landroid/net/LinkQualityInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkPropertiesForType-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkQualityInfo-(I)Landroid/net/LinkQualityInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getMobileRedirectedProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkForType-(I)Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfoForNetwork-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getProvisioningOrActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredDhcpRanges-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-listenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; Landroid/os/IBinder;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-prepareVpn-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-registerNetworkAgent-(Landroid/os/Messenger; Landroid/net/NetworkInfo; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Landroid/net/NetworkMisc;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-registerNetworkFactory-(Landroid/os/Messenger; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-reportBadNetwork-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-requestNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; I Landroid/os/IBinder; I)Landroid/net/NetworkRequest;": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAirplaneMode-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setDataDependency-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setPolicyDataEnable-(I Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/ConnectivityService;-setProvisioningNotificationVisible-(Z I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-supplyMessenger-(I Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-unregisterNetworkFactory-(Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConsumerIrService;-getCarrierFrequencies-()[I": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/ConsumerIrService;-transmit-(Ljava/lang/String; I [I)V": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/DropBoxManagerService;-getNextEntry-(Ljava/lang/String; J)Landroid/os/DropBoxManager$Entry;": [ "android.permission.READ_LOGS" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Ljava/lang/String; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-shouldOfferSwitchingToNextInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInput-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; Landroid/view/inputmethod/EditorInfo; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-updateStatusIcon-(Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-windowGainedFocus-(Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext;)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/LocationManagerService;-addGpsMeasurementsListener-(Landroid/location/IGpsMeasurementsListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGpsNavigationMessageListener-(Landroid/location/IGpsNavigationMessageListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGpsStatusListener-(Landroid/location/IGpsStatusListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addTestProvider-(Ljava/lang/String; Lcom/android/internal/location/ProviderProperties;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeGeofence-(Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LocationManagerService;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LockSettingsService;-checkPassword-(Ljava/lang/String; I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkPattern-(Ljava/lang/String; I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkVoldPassword-(I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-getBoolean-(Ljava/lang/String; Z I)Z": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getLong-(Ljava/lang/String; J I)J": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getString-(Ljava/lang/String; Ljava/lang/String; I)Ljava/lang/String;": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-removeUser-(I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setBoolean-(Ljava/lang/String; Z I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPassword-(Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPattern-(Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLong-(Ljava/lang/String; J I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setString-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/MmsServiceBroker$BinderService;-addMultimediaMessageDraft-(Ljava/lang/String; Landroid/net/Uri;)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-addTextMessageDraft-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-archiveStoredConversation-(Ljava/lang/String; J Z)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-deleteStoredConversation-(Ljava/lang/String; J)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-deleteStoredMessage-(Ljava/lang/String; Landroid/net/Uri;)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-downloadMessage-(J Ljava/lang/String; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-importMultimediaMessage-(Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; J Z Z)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-importTextMessage-(Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String; J Z Z)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-sendMessage-(J Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-sendStoredMessage-(J Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-setAutoPersisting-(Ljava/lang/String; Z)V": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-updateStoredMessageStatus-(Ljava/lang/String; Landroid/net/Uri; Landroid/content/ContentValues;)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-encryptStorage-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getVolumeList-()[Landroid/os/storage/StorageVolume;": [ "android.permission.ACCESS_ALL_EXTERNAL_STORAGE" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-resizeSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-setUsbMassStorageEnabled-(Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToLocalNetwork-(Ljava/lang/String; Ljava/util/List;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addLegacyRouteForNetId-(I Landroid/net/RouteInfo; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-allowProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDefaultNetId-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearPermission-([I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createPhysicalNetwork-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createVirtualNetwork-(I Z Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-denyProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushNetworkDnsCache-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getRoutes-(Ljava/lang/String;)[Landroid/net/RouteInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isClatdStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromLocalNetwork-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeNetwork-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultNetId-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-(Landroid/net/Network; [Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForNetwork-(I [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMtu-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setPermission-(Ljava/lang/String; [I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidNetworkRules-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopClatd-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkScoreService;-clearScores-()Z": [ "android.permission.BROADCAST_SCORE_NETWORKS", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-disableScoring-()V": [ "android.permission.BROADCAST_SCORE_NETWORKS", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-registerNetworkScoreCache-(I Landroid/net/INetworkScoreCache;)V": [ "android.permission.BROADCAST_SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-setActiveScorer-(Ljava/lang/String;)Z": [ "android.permission.BROADCAST_SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-updateScores-([Landroid/net/ScoredNetwork;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listenForSubscriber-(J Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChangedForSubscriber-(J Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallStateForSubscriber-(J I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfoForSubscriber-(J Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocationForSubscriber-(J Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivityForSubscriber-(J I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailedForSubscriber-(J Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionForSubscriber-(J I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionRealTimeInfo-(Landroid/telephony/DataConnectionRealTimeInfo;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDisconnectCause-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChangedForPhoneId-(I J Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOemHookRawEventForSubscriber-(J [B)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseCallState-(I I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceStateForPhoneId-(I J Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrengthForSubscriber-(J Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyVoLteServiceStateChanged-(Landroid/telephony/VoLteServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(I Ljava/lang/String; J I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-(I Ljava/lang/String; [J I I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-computeClickPointInScreen-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByAccessibilityId-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; I J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByText-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByViewId-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findFocus-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-focusSearch-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindow-(I)Landroid/view/accessibility/AccessibilityWindowInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindows-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performAccessibilityAction-(I J I Landroid/os/Bundle; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performGlobalAction-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addAccessibilityInteractionConnection-(Landroid/view/IWindow; Landroid/view/accessibility/IAccessibilityInteractionConnection; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addClient-(Landroid/view/accessibility/IAccessibilityManagerClient; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getEnabledAccessibilityServiceList-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getInstalledAccessibilityServiceList-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getWindowToken-(I)Landroid/os/IBinder;": [ "getWindowToken" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-interrupt-(I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-removeAccessibilityInteractionConnection-(Landroid/view/IWindow;)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-sendAccessibilityEvent-(Landroid/view/accessibility/AccessibilityEvent; I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-temporaryEnableAccessibilityStateUntilKeyguardRemoved-(Landroid/content/ComponentName; Z)V": [ "temporaryEnableAccessibilityStateUntilKeyguardRemoved" ], "Lcom/android/server/accounts/AccountManagerService;-addAccount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByTypeForPackage-(Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsForPackage-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Z Landroid/os/Bundle;)V": [ "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthenticatorTypes-(I)[Landroid/accounts/AuthenticatorDescription;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-renameAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/am/ActivityManagerService;-activityDestroyed-(Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-activityIdle-(Landroid/os/IBinder; Landroid/content/res/Configuration; Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-activityPaused-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-activitySlept-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-activityStopped-(Landroid/os/IBinder; Landroid/os/Bundle; Landroid/os/PersistableBundle; Ljava/lang/CharSequence;)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-appNotRespondingViaProvider-(Landroid/os/IBinder;)V": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-attachApplication-(Landroid/app/IApplicationThread;)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-backgroundResourcesReleased-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)Z": [ "android.permission.CONFIRM_FULL_BACKUP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-bindService-(Landroid/app/IApplicationThread; Landroid/os/IBinder; Landroid/content/Intent; Ljava/lang/String; Landroid/app/IServiceConnection; I I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)Z": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-closeSystemDialogs-(Ljava/lang/String;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-convertFromTranslucent-(Landroid/os/IBinder;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-convertToTranslucent-(Landroid/os/IBinder; Landroid/app/ActivityOptions;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-createActivityContainer-(Landroid/os/IBinder; Landroid/app/IActivityContainerCallback;)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-deleteActivityContainer-(Landroid/app/IActivityContainer;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishActivity-(Landroid/os/IBinder; I Landroid/content/Intent; Z)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-finishActivityAffinity-(Landroid/os/IBinder;)Z": [ "android.permission.MANAGE_APP_TOKENS", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.FORCE_STOP_PACKAGES", "android.permission.MANAGE_APP_TOKENS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-finishInstrumentation-(Landroid/app/IApplicationThread; I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-finishReceiver-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/Bundle; Z)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-finishSubActivity-(Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-finishVoiceTask-(Landroid/service/voice/IVoiceInteractionSession;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.FORCE_STOP_PACKAGES", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-getAllStackInfos-()Ljava/util/List;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getAssistContextExtras-(I)Landroid/os/Bundle;": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-getContentProvider-(Landroid/app/IApplicationThread; Ljava/lang/String; I Z)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getHomeActivityToken-()Landroid/os/IBinder;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getProviderMimeType-(Landroid/net/Uri; I)Ljava/lang/String;": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Ljava/util/List;": [ "android.permission.GET_DETAILED_TASKS", "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getStackInfo-(I)Landroid/app/ActivityManager$StackInfo;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnail-(I)Landroid/app/ActivityManager$TaskThumbnail;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationCrash-(Landroid/os/IBinder; Landroid/app/ApplicationErrorReport$CrashInfo;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-handleApplicationWtf-(Landroid/os/IBinder; Ljava/lang/String; Z Landroid/app/ApplicationErrorReport$CrashInfo;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-hang-(Landroid/os/IBinder; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z Ljava/lang/String;)J": [ "android.permission.BROADCAST_STICKY", "android.permission.FILTER_EVENTS" ], "Lcom/android/server/am/ActivityManagerService;-isInHomeStack-(I)Z": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-keyguardWaitingForActivityDrawn-()V": [ "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killUid-(I Ljava/lang/String;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-launchAssistIntent-(Landroid/content/Intent; I Ljava/lang/String; I)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-moveActivityTaskToBack-(Landroid/os/IBinder; Z)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToBack-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToStack-(I I Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-noteWakeupAlarm-(Landroid/content/IIntentSender; I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-openContentUri-(Landroid/net/Uri;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-performIdleMaintenance-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Landroid/app/ProfilerInfo; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-publishContentProviders-(Landroid/app/IApplicationThread; Ljava/util/List;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-publishService-(Landroid/os/IBinder; Landroid/content/Intent; Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-releaseActivityInstance-(Landroid/os/IBinder;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-releaseSomeActivities-(Landroid/app/IApplicationThread;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProvider-(Landroid/os/IBinder; Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY", "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I I)Z": [ "android.permission.REMOVE_TASKS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-reportAssistContextExtras-(Landroid/os/IBinder; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-requestBugReport-()V": [ "android.permission.DUMP" ], "Lcom/android/server/am/ActivityManagerService;-requestVisibleBehind-(Landroid/os/IBinder; Z)Z": [ "android.permission.MANAGE_APP_TOKENS", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-resizeStack-(I Landroid/graphics/Rect;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-restart-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-setFocusedStack-(I)V": [ "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_APP_TOKENS", "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.DEVICE_POWER", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_APP_TOKENS", "android.permission.SET_SCREEN_COMPATIBILITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_PROCESS_LIMIT", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PROCESS_LIMIT", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-setRequestedOrientation-(Landroid/os/IBinder; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-setServiceForeground-(Landroid/content/ComponentName; Landroid/os/IBinder; I Landroid/app/Notification; Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.GET_APP_OPS_STATS", "android.permission.MANAGE_APP_TOKENS", "android.permission.SHUTDOWN", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; Ljava/lang/String; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle;)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsCaller-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityFromRecents-(I Landroid/os/Bundle;)I": [ "android.permission.BROADCAST_STICKY", "android.permission.START_TASKS_FROM_RECENTS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityIntentSender-(Landroid/app/IApplicationThread; Landroid/content/IntentSender; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I I Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startInstrumentation-(Landroid/content/ComponentName; Ljava/lang/String; I Landroid/os/Bundle; Landroid/app/IInstrumentationWatcher; Landroid/app/IUiAutomationConnection; I Ljava/lang/String;)Z": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-startLockTaskMode-(Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startLockTaskMode-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startLockTaskModeOnCurrent-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACTIVITY_STACKS", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startNextMatchingActivity-(Landroid/os/IBinder; Landroid/content/Intent; Landroid/os/Bundle;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startService-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; I)Landroid/content/ComponentName;": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-startUserInBackground-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-startVoiceActivity-(Ljava/lang/String; I I Landroid/content/Intent; Ljava/lang/String; Landroid/service/voice/IVoiceInteractionSession; Lcom/android/internal/app/IVoiceInteractor; I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.BIND_VOICE_INTERACTION", "android.permission.BROADCAST_STICKY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_TOKENS", "android.permission.START_ANY_ACTIVITY", "android.permission.STOP_APP_SWITCHES", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-stopLockTaskMode-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-stopLockTaskModeOnCurrent-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-stopService-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; I)I": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-stopServiceToken-(Landroid/content/ComponentName; Landroid/os/IBinder; I)Z": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Landroid/app/IStopUserCallback;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-unbindBackupAgent-(Landroid/content/pm/ApplicationInfo;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-unbindFinished-(Landroid/os/IBinder; Landroid/content/Intent; Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-unbindService-(Landroid/app/IServiceConnection;)Z": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-unregisterReceiver-(Landroid/content/IIntentReceiver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.START_ANY_ACTIVITY", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-unstableProviderDied-(Landroid/os/IBinder;)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.CHANGE_CONFIGURATION", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.CHANGE_CONFIGURATION", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatisticsStream-()Landroid/os/ParcelFileDescriptor;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteChangeWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteEvent-(I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInteractive-(Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteMobileRadioPowerState-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkStatsEnabled-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetAudio-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetVideo-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOn-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStartedFromSource-(Landroid/os/WorkSource; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRssiChanged-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiState-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiSupplicantStateChanged-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getCurrentStats-(Ljava/util/List;)[B": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getStatsOverTime-(J)Landroid/os/ParcelFileDescriptor;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindAppWidgetId-(Ljava/lang/String; I I Landroid/content/ComponentName; Landroid/os/Bundle;)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent; Landroid/os/IBinder;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-createAppWidgetConfigIntentSender-(Ljava/lang/String; I I)Landroid/content/IntentSender;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-deleteAppWidgetId-(Ljava/lang/String; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetInfo-(Ljava/lang/String; I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetOptions-(Ljava/lang/String; I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetViews-(Ljava/lang/String; I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-hasBindAppWidgetPermission-(Ljava/lang/String; I)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-notifyAppWidgetViewDataChanged-(Ljava/lang/String; [I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-partiallyUpdateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-setBindAppWidgetPermission-(Ljava/lang/String; I Z)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-unbindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetOptions-(Ljava/lang/String; I Landroid/os/Bundle;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-clearBackupData-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-fullTransportBackup-([Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-getDataManagementIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-getDataManagementLabel-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/connectivity/Tethering;-interfaceAdded-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceLinkStateChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceStatusChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-cancelSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-cancelSyncAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getCurrentSyncsAsUser-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getIsSyncableAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomaticallyAsUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypes-()[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypesAsUser-(I)[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getSyncStatusAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPendingAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomaticallyAsUser-(Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-sync-(Landroid/content/SyncRequest;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-syncAsUser-(Landroid/content/SyncRequest; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileIntentFilter-(Landroid/content/ComponentName; Landroid/content/IntentFilter; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addPersistentPreferredActivity-(Landroid/content/ComponentName; Landroid/content/IntentFilter; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearCrossProfileIntentFilters-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearPackagePersistentPreferredActivities-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearProfileOwner-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createAndInitializeUser-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; Landroid/content/ComponentName; Landroid/os/Bundle;)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createUser-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemApp-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemAppWithIntent-(Landroid/content/ComponentName; Landroid/content/Intent;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enforceCanManageCaCerts-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabled-()[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabledAsUser-(I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAutoTimeRequired-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileWidgetProviders-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerName-()Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLockTaskPackages-(Landroid/content/ComponentName;)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServices-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServicesForUser-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethods-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethodsForCurrentUser-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileOwnerName-(I)Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRestrictionsProvider-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getScreenCaptureDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryptionStatus-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getTrustAgentFeaturesEnabled-(Landroid/content/ComponentName; Landroid/content/ComponentName; I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasUserSetupCompleted-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installCaCert-(Landroid/content/ComponentName; [B)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installKeyPair-(Landroid/content/ComponentName; [B [B Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isActivePasswordSufficient-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isLockTaskPermitted-(Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isMasterVolumeMuted-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-lockNow-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyLockTaskModeChanged-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAccountManagementDisabled-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAutoTimeRequired-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCrossProfileCallerIdDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceOwner-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setLockTaskPackages-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMasterVolumeMuted-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedAccessibilityServices-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedInputMethods-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileEnabled-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileName-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileOwner-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRecommendedGlobalProxy-(Landroid/content/ComponentName; Landroid/net/ProxyInfo;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRestrictionsProvider-(Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setScreenCaptureDisabled-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSecureSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setTrustAgentFeaturesEnabled-(Landroid/content/ComponentName; Landroid/content/ComponentName; Ljava/util/List; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserRestriction-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-switchUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-uninstallCaCert-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-wipeData-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-createVirtualDisplay-(Landroid/hardware/display/IVirtualDisplayCallback; Landroid/media/projection/IMediaProjection; Ljava/lang/String; Ljava/lang/String; I I I Landroid/view/Surface; I)I": [ "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "android.permission.CAPTURE_VIDEO_OUTPUT" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-pauseWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-resumeWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-startWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-stopWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-getConfiguration-()Landroid/net/IpConfiguration;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-setConfiguration-(Landroid/net/IpConfiguration;)V": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addDeviceEventListener-(Landroid/hardware/hdmi/IHdmiDeviceEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHdmiMhlVendorCommandListener-(Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addVendorCommandListener-(Landroid/hardware/hdmi/IHdmiVendorCommandListener; I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-canChangeSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-clearTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-deviceSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getActiveSource-()Landroid/hardware/hdmi/HdmiDeviceInfo;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getInputDevices-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getPortInfo-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSupportedTypes-()[I": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-oneTouchPlay-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-portSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-queryDisplayStatus-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendKeyEvent-(I I Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendMhlVendorCommand-(I I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendStandby-(I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendVendorCommand-(I I [B Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setArcMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setHdmiRecordListener-(Landroid/hardware/hdmi/IHdmiRecordListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setInputChangeListener-(Landroid/hardware/hdmi/IHdmiInputChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setProhibitMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMode-(Z Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMute-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioVolume-(I I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startOneTouchRecord-(I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-stopOneTouchRecord-(I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setTouchCalibrationForInputDevice-(Ljava/lang/String; I Landroid/hardware/input/TouchCalibration;)V": [ "android.permission.SET_INPUT_CALIBRATION" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;-schedule-(Landroid/app/job/JobInfo;)I": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Lcom/android/server/media/MediaRouterService;-registerClientAsUser-(Landroid/media/IMediaRouterClient; Ljava/lang/String; I)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/media/MediaSessionRecord$SessionStub;-setFlags-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-addCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-createProjection-(I Ljava/lang/String; I Z)Landroid/media/projection/IMediaProjection;": [ "android.permission.MANAGE_MEDIA_PROJECTION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-getActiveProjectionInfo-()Landroid/media/projection/MediaProjectionInfo;": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-removeCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-stopActiveProjection-()V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/net/NetworkPolicyManagerService;-addUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-()[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getPowerSaveAppIdWhitelist-()[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-removeUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-openSession-()Landroid/net/INetworkStatsSession;": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageInstallerService;-setPermissionsResult-(I Z)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageInstallerService;-uninstall-(Ljava/lang/String; I Landroid/content/IntentSender; I)V": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-addCrossProfileIntentFilter-(Landroid/content/IntentFilter; Ljava/lang/String; I I I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-canForwardTo-(Landroid/content/Intent; Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearCrossProfileIntentFilters-(I Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES" ], "Lcom/android/server/pm/PackageManagerService;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver2; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-deletePackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationHiddenSettingAsUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getHomeActivities-(Ljava/util/List;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantPermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackageAsUser-(Ljava/lang/String; I)I": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackage-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Ljava/lang/String;)V": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Ljava/lang/String; I)V": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPackageAvailable-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)V": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentContentProviders-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetPreferredActivities-(I)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokePermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationHiddenSettingAsUser-(Ljava/lang/String; Z I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setBlockUninstallForUser-(Ljava/lang/String; Z I)Z": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I Landroid/content/IntentFilter; I Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLockWithUid-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-goToSleep-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-powerHint-(I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT", "android.permission.RECOVERY" ], "Lcom/android/server/power/PowerManagerService$BinderService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setPowerSaveMode-(Z)Z": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setStayOnSetting-(I)V": [ "android.permission.WRITE_SETTINGS" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-shutdown-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockUids-(Landroid/os/IBinder; [I)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-wakeUp-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-addPrintJobStateChangeListener-(Landroid/print/IPrintJobStateChangeListener; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-cancelPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfo-(Landroid/print/PrintJobId; I I)Landroid/print/PrintJobInfo;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfos-(I I)Ljava/util/List;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-print-(Ljava/lang/String; Landroid/print/IPrintDocumentAdapter; Landroid/print/PrintAttributes; Ljava/lang/String; I I)Landroid/os/Bundle;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-restartPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-()[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/statusbar/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandSettingsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onClearAllNotifications-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationExpansionChanged-(Ljava/lang/String; Z Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationVisibilityChanged-([Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelHidden-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelRevealed-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Lcom/android/internal/statusbar/StatusBarIconList; [I Ljava/util/List;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setSystemUiVisibility-(I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-topAppWindowChanged-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/telecom/TelecomServiceImpl;-acceptRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-cancelMissedCallsNotification-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-clearAccounts-(Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-endCall-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-getCurrentTtyMode-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-isInCall-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-isRinging-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-isTtySupported-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-registerPhoneAccount-(Landroid/telecom/PhoneAccount;)V": [ "android.permission.MODIFY_PHONE_STATE", "com.android.server.telecom.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION" ], "Lcom/android/server/telecom/TelecomServiceImpl;-setSimCallManager-(Landroid/telecom/PhoneAccountHandle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-setUserSelectedOutgoingPhoneAccount-(Landroid/telecom/PhoneAccountHandle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-showInCallScreen-(Z)V": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-silenceRinger-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomServiceImpl;-unregisterPhoneAccount-(Landroid/telecom/PhoneAccountHandle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-acquireTvInputHardware-(I Landroid/media/tv/ITvInputHardwareCallback; Landroid/media/tv/TvInputInfo; I)Landroid/media/tv/ITvInputHardware;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-addBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-captureFrame-(Ljava/lang/String; Landroid/view/Surface; Landroid/media/tv/TvStreamConfig; I)Z": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getAvailableTvStreamConfigList-(Ljava/lang/String; I)Ljava/util/List;": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getHardwareList-()Ljava/util/List;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-releaseTvInputHardware-(I Landroid/media/tv/ITvInputHardware; I)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-removeBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-setParentalControlsEnabled-(Z I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHardwareTvInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHdmiTvInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-removeTvInput-(Ljava/lang/String;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryConfigurationStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryEvents-(J J Ljava/lang/String;)Landroid/app/usage/UsageEvents;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryUsageStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usb/UsbService;-allowUsbDebugging-(Z Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearUsbDebuggingKeys-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-denyUsbDebugging-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String; I)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setMassStorageBackingFile-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-deleteKeyphraseSoundModel-(I Ljava/lang/String;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-getKeyphraseSoundModel-(I Ljava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-updateKeyphraseSoundModel-(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDimensionHints-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDisplayPadding-(Landroid/graphics/Rect;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaper-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableAggressiveHandover-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableVerboseLogging-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAggressiveHandover-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAllowScansWithTraffic-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getBatchedScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getChannelList-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionStatistics-()Landroid/net/wifi/WifiConnectionStatistics;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getPrivilegedConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getSupportedFeatures-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getVerboseLoggingLevel-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWpsNfcConfigurationToken-(I)Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-pollBatchedScan-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reportActivityInfo-()Landroid/net/wifi/WifiActivityEnergyInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-requestBatchedScan-(Landroid/net/wifi/BatchedScanSettings; Landroid/os/IBinder; Landroid/os/WorkSource;)Z": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiServiceImpl;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setAllowScansWithTraffic-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-startScan-(Landroid/net/wifi/ScanSettings; Landroid/os/WorkSource;)V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.LOCATION_HARDWARE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiServiceImpl;-startWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-stopBatchedScan-(Landroid/net/wifi/BatchedScanSettings;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-stopWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getP2pStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.LOCATION_HARDWARE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-setMiracastMode-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I I Z Z I I Z Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplayDensity-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplaySize-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearWindowContentFrameStats-(Landroid/os/IBinder;)Z": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getWindowContentFrameStats-(Landroid/os/IBinder;)Landroid/view/WindowContentFrameStats;": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-keyguardGoingAway-(Z Z)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I Z)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppGroupId-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I I Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppWillBeHidden-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayDensity-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplaySize-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setOverscan-(I I I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-addOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; Z)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccounts-()[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeAdvertiser-()Landroid/bluetooth/le/BluetoothLeAdvertiser;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeScanner-()Landroid/bluetooth/le/BluetoothLeScanner;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isMultipleAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-([Ljava/util/UUID; Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-stopLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createBond-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getType-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-setPairingConfirmation-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-setPin-([B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-beginReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-connect-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-disconnect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-discoverServices-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-executeReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readRemoteRssi-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestConnectionPriority-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestMtu-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-setCharacteristicNotification-(Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-addService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-cancelConnection-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-clearServices-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-connect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-notifyCharacteristicChanged-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-removeService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-sendResponse-(Landroid/bluetooth/BluetoothDevice; I I I [B)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectedDevices-(I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectionState-(Landroid/bluetooth/BluetoothDevice; I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getDevicesMatchingConnectionStates-(I [I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-openGattServer-(Landroid/content/Context; Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-stopAdvertising-(Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/le/BluetoothLeScanner;-flushPendingScanResults-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Ljava/util/List; Landroid/bluetooth/le/ScanSettings; Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-stopScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/hardware/ConsumerIrManager;-getCarrierFrequencies-()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/ConsumerIrManager;-transmit-(I [I)V": [ "android.permission.TRANSMIT_IR" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; Z Z Z Z Z Z Z I I)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeProximityAlert-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMicrophoneMute-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setAudioAttributes-(Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-reportBadNetwork-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-is5GHzBandSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isDeviceToApRttSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isEnhancedPowerReportingSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isP2pSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isPreferredNetworkOffloadSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isTdlsSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/nfc/NfcAdapter;-disableForegroundDispatch-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-disableForegroundNdefPush-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundDispatch-(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [L[java/lang/String;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundNdefPush-(Landroid/app/Activity; Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-invokeBeam-(Landroid/app/Activity;)Z": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUris-([Landroid/net/Uri; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUrisCallback-(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessage-(Landroid/nfc/NdefMessage; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessageCallback-(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setOnNdefPushCompleteCallback-(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-getAidsForService-(Landroid/content/ComponentName; Ljava/lang/String;)Ljava/util/List;": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-isDefaultServiceForAid-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-isDefaultServiceForCategory-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-registerAidsForService-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/util/List;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-removeAidsForService-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-setPreferredService-(Landroid/app/Activity; Landroid/content/ComponentName;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-unsetPreferredService-(Landroid/app/Activity;)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyA-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyB-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-decrement-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-increment-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-readBlock-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-restore-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transfer-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-writeBlock-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-readPages-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-writePage-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-getNdefMessage-()Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-makeReadOnly-()Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-writeNdefMessage-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-format-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-formatReadOnly-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; [J I Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; J Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/telecom/TelecomManager;-isInCall-()Z": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telecom/TelecomManager;-showInCallScreen-(Z)V": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/PhoneNumberUtils;-isVoiceMailNumber-(Ljava/lang/String;)Z": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SmsManager;-downloadMultimediaMessage-(Landroid/content/Context; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultimediaMessage-(Landroid/content/Context; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-sendStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-sendStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-sendStickyOrderedBroadcast-(Landroid/content/Intent; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-sendStickyOrderedBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle; Landroid/content/BroadcastReceiver; Landroid/os/Handler; I Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/widget/VideoView;-getAudioSessionId-()I": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri; Ljava/util/Map;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_22.json ================================================ { "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccountFromCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountCredentialsForCloning-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/hardware/location/ActivityRecognitionHardware;-disableActivityEvent-(Ljava/lang/String; I)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-enableActivityEvent-(Ljava/lang/String; I J)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-flush-()Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-getSupportedActivities-()[Ljava/lang/String;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-isActivitySupported-(Ljava/lang/String;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-registerSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-unregisterSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/media/AudioService;-adjustStreamVolume-(I I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-adjustSuggestedStreamVolume-(I I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-disableSafeMediaVolume-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-forceRemoteSubmixFullVolume-(Z Landroid/os/IBinder;)V": [ "android.permission.CAPTURE_AUDIO_OUTPUT" ], "Landroid/media/AudioService;-notifyVolumeControllerVisible-(Landroid/media/IVolumeController; Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-registerAudioPolicy-(Landroid/media/audiopolicy/AudioPolicyConfig; Landroid/media/audiopolicy/IAudioPolicyCallback; Z)Ljava/lang/String;": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Landroid/media/AudioService;-registerRemoteControlDisplay-(Landroid/media/IRemoteControlDisplay; I I)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Landroid/media/AudioService;-registerRemoteController-(Landroid/media/IRemoteControlDisplay; I I Landroid/content/ComponentName;)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Landroid/media/AudioService;-requestAudioFocus-(Landroid/media/AudioAttributes; I Landroid/os/IBinder; Landroid/media/IAudioFocusDispatcher; Ljava/lang/String; Ljava/lang/String; I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Landroid/media/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setFocusPropertiesForPolicy-(I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Landroid/media/AudioService;-setMicrophoneMute-(Z Ljava/lang/String;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setMode-(I Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS", "android.permission.MODIFY_PHONE_STATE" ], "Landroid/media/AudioService;-setRemoteStreamVolume-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-setRingerModeExternal-(I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-setRingerModeInternal-(I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Landroid/media/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-setStreamVolume-(I I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-setVolumeController-(Landroid/media/IVolumeController;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Landroid/media/AudioService;-startBluetoothSco-(Landroid/os/IBinder; I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-startBluetoothScoVirtualCall-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getAudioConfig-(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAudioConfig;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpSinkService$BluetoothA2dpSinkBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-sendPassThroughCmd-(Landroid/bluetooth/BluetoothDevice; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelBondProcess-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-configHciSnoopLog-(Z)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-connectSocket-(Landroid/bluetooth/BluetoothDevice; I Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBond-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createSocketChannel-(I Ljava/lang/String; Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteMasInstances-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.RECEIVE_BLUETOOTH_MAP" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getActivityEnergyInfoFromController-()V": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAdapterConnectionState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondedDevices-()[Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteAlias-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteClass-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteName-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteType-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isActivityAndEnergyReportingSupported-()Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isMultiAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-removeBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-reportActivityInfo-()Landroid/bluetooth/BluetoothActivityEnergyInfo;": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sendConnectionStateChange-(Landroid/bluetooth/BluetoothDevice; I I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPairingConfirmation-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPasskey-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPin-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setRemoteAlias-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addCharacteristic-(I Landroid/os/ParcelUuid; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addDescriptor-(I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addIncludedService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginReliableWrite-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginServiceDeclaration-(I I I I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clearServices-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-configureMTU-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-connectionParameterUpdate-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-discoverServices-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endReliableWrite-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endServiceDeclaration-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readRemoteRssi-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-refreshDevice-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerClient-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerForNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerServer-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattServerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-removeService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendResponse-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startMultiAdvertising-(I Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseSettings;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScan-(I Z Landroid/bluetooth/le/ScanSettings; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopMultiAdvertising-(I)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopScan-(I Z)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterClient-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterServer-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeCharacteristic-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeDescriptor-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; I I [B)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-clccResponse-(I I I I Z Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-enableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioOn-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-phoneStateChanged-(I I I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-acceptCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dial-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dialMemory-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-enterPrivateMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-explicitCallTransfer-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgEvents-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgFeatures-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentCalls-(Landroid/bluetooth/BluetoothDevice;)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getLastVoiceTagNumber-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-holdCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-redial-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-rejectCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-sendDTMF-(Landroid/bluetooth/BluetoothDevice; B)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-terminateCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getProtocolMode-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getReport-(Landroid/bluetooth/BluetoothDevice; B B I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-sendData-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setProtocolMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setReport-(Landroid/bluetooth/BluetoothDevice; B Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-virtualUnplug-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getClient-()Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getDeviceSvn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIccSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIccSimChallengeResponse-(I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimChallengeResponse-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimIst-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimPcscf-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getLine1AlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getMsisdn-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SMSDispatcher$MultipartSmsSenderCallback;-onSendMultipartSmsComplete-(I [I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/SMSDispatcher$SmsSenderCallback;-onSendSmsComplete-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE" ], "Lcom/android/internal/telephony/SubscriptionController;-addSubInfoRecord-(Ljava/lang/String; I)I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearDefaultsForInactiveSubIds-()V": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearSubInfo-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubInfoCount-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfo-(I)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForIccId-(Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForSimSlotIndex-(I)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoList-()Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoCount-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoList-()Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDataRoaming-(I I)I": [ "android.permission.MODIFY_PHONE_STATE", "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayName-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE", "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNameUsingSrc-(Ljava/lang/String; I J)I": [ "android.permission.MODIFY_PHONE_STATE", "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNumber-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE", "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setIconTint-(I I)I": [ "android.permission.MODIFY_PHONE_STATE", "android.permission.READ_PHONE_STATE" ], "Lcom/android/internal/telephony/UiccSmsController;-copyMessageToIccEf-(Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-copyMessageToIccEfForSubscriber-(I Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcast-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastRange-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcast-(I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastRange-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-getAllMessagesFromIccEf-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-getAllMessagesFromIccEfForSubscriber-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-injectSmsPdu-([B Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/internal/telephony/UiccSmsController;-sendData-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendMultipartText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendMultipartTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredMultipartText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendText-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-updateMessageOnIccEf-(Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-updateMessageOnIccEfForSubscriber-(I Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-addNfcUnlockHandler-(Landroid/nfc/INfcUnlockHandler; [I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disable-(Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-dispatch-(Landroid/nfc/Tag;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enable-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-invokeBeam-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-invokeBeamInternal-(Landroid/nfc/BeamShareData;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-pausePolling-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-resumePolling-()V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setAppCallback-(Landroid/nfc/IAppCallback;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setForegroundDispatch-(Landroid/app/PendingIntent; [Landroid/content/IntentFilter; Landroid/nfc/TechListParcel;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setP2pModes-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-verifyNfcPermission-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-close-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-connect-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-formatNdef-(I [B)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTechList-(I)[I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTimeout-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-isNdef-(I)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefMakeReadOnly-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefRead-(I)Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefWrite-(I Landroid/nfc/NdefMessage;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-reconnect-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-rediscover-(I)Landroid/nfc/Tag;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-resetTimeouts-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-setTimeout-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-transceive-(I [B Z)Landroid/nfc/TransceiveResult;": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-getAidGroupForService-(I Landroid/content/ComponentName; Ljava/lang/String;)Landroid/nfc/cardemulation/AidGroup;": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-getServices-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-isDefaultServiceForAid-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-isDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-registerAidGroupForService-(I Landroid/content/ComponentName; Landroid/nfc/cardemulation/AidGroup;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-removeAidGroupForService-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setDefaultForNextTap-(I Landroid/content/ComponentName;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setPreferredService-(Landroid/content/ComponentName;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-unsetPreferredService-()Z": [ "android.permission.NFC" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCallForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableVideoCalling-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCallForSubscriber-(I)Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCalculatedPreferredNetworkType-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMdn-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMin-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-()Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataEnabled-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1AlphaTagForDisplay-(I)Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1NumberForDisplay-(I)Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getPcscfAddress-(Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPreferredNetworkType-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getTetherApnRequired-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmiForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccCloseLogicalChannel-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccExchangeSimIO-(I I I I I Ljava/lang/String;)[B": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccOpenLogicalChannel-(Ljava/lang/String;)Landroid/telephony/IccOpenLogicalChannelResponse;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduBasicChannel-(I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduLogicalChannel-(I I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-invokeOemRilRequestRaw-([B [B)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isSimPinEnabled-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isVideoCallingEnabled-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvReadItem-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvResetConfig-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteCdmaPrl-([B)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteItem-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-sendEnvelopeWithStatus-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setDataEnabled-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setImsRegistrationState-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setPreferredNetworkType-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioForSubscriber-(I Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioPower-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-shutdownMobileRadios-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResult-(Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResultForSubscriber-(I Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResult-(Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResultForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOffForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.READ_SOCIAL_STREAM" ], "Lcom/android/server/AppOpsService;-checkAudioOperation-(I I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-checkOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-finishOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getOpsForPackage-(I Ljava/lang/String; [I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getPackagesForOps-([I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-noteOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-resetAllModes-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setAudioRestriction-(I I I I [Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setMode-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-startOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-captivePortalCheckCompleted-(Landroid/net/NetworkInfo; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-findConnectionTypeForIface-(Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getDefaultNetworkCapabilitiesForUser-(I)[Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLegacyVpnInfo-()Lcom/android/internal/net/LegacyVpnInfo;": [ "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkPropertiesForType-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getMobileRedirectedProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkForType-(I)Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfoForNetwork-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getProvisioningOrActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredDhcpRanges-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getVpnConfig-()Lcom/android/internal/net/VpnConfig;": [ "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-listenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; Landroid/os/IBinder;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-pendingRequestForNetwork-(Landroid/net/NetworkCapabilities; Landroid/app/PendingIntent;)Landroid/net/NetworkRequest;": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-prepareVpn-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-registerNetworkAgent-(Landroid/os/Messenger; Landroid/net/NetworkInfo; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Landroid/net/NetworkMisc;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-registerNetworkFactory-(Landroid/os/Messenger; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-reportBadNetwork-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-requestNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; I Landroid/os/IBinder; I)Landroid/net/NetworkRequest;": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAirplaneMode-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setDataDependency-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setProvisioningNotificationVisible-(Z I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setVpnPackageAuthorization-(Z)V": [ "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-supplyMessenger-(I Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-unregisterNetworkFactory-(Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConsumerIrService;-getCarrierFrequencies-()[I": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/ConsumerIrService;-transmit-(Ljava/lang/String; I [I)V": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/DropBoxManagerService;-getNextEntry-(Ljava/lang/String; J)Landroid/os/DropBoxManager$Entry;": [ "android.permission.READ_LOGS" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Ljava/lang/String; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-shouldOfferSwitchingToNextInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInput-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; Landroid/view/inputmethod/EditorInfo; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-updateStatusIcon-(Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-windowGainedFocus-(Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext;)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/LocationManagerService;-addGpsMeasurementsListener-(Landroid/location/IGpsMeasurementsListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGpsNavigationMessageListener-(Landroid/location/IGpsNavigationMessageListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGpsStatusListener-(Landroid/location/IGpsStatusListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addTestProvider-(Ljava/lang/String; Lcom/android/internal/location/ProviderProperties;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeGeofence-(Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LocationManagerService;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LocationManagerService;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Lcom/android/server/LockSettingsService;-checkPassword-(Ljava/lang/String; I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkPattern-(Ljava/lang/String; I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkVoldPassword-(I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-getBoolean-(Ljava/lang/String; Z I)Z": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getLong-(Ljava/lang/String; J I)J": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-getString-(Ljava/lang/String; Ljava/lang/String; I)Ljava/lang/String;": [ "android.permission.READ_PROFILE" ], "Lcom/android/server/LockSettingsService;-removeUser-(I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setBoolean-(Ljava/lang/String; Z I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPassword-(Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPattern-(Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLong-(Ljava/lang/String; J I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setString-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/MmsServiceBroker$BinderService;-addMultimediaMessageDraft-(Ljava/lang/String; Landroid/net/Uri;)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-addTextMessageDraft-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-archiveStoredConversation-(Ljava/lang/String; J Z)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-deleteStoredConversation-(Ljava/lang/String; J)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-deleteStoredMessage-(Ljava/lang/String; Landroid/net/Uri;)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-downloadMessage-(I Ljava/lang/String; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-importMultimediaMessage-(Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; J Z Z)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-importTextMessage-(Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String; J Z Z)Landroid/net/Uri;": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-sendMessage-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-sendStoredMessage-(I Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-setAutoPersisting-(Ljava/lang/String; Z)V": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-updateStoredMessageStatus-(Ljava/lang/String; Landroid/net/Uri; Landroid/content/ContentValues;)Z": [ "android.permission.WRITE_SMS" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-encryptStorage-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getVolumeList-()[Landroid/os/storage/StorageVolume;": [ "android.permission.ACCESS_ALL_EXTERNAL_STORAGE" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-resizeSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-runMaintenance-()V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setUsbMassStorageEnabled-(Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToLocalNetwork-(Ljava/lang/String; Ljava/util/List;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addLegacyRouteForNetId-(I Landroid/net/RouteInfo; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-allowProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDefaultNetId-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearPermission-([I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createPhysicalNetwork-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createVirtualNetwork-(I Z Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-denyProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushNetworkDnsCache-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getRoutes-(Ljava/lang/String;)[Landroid/net/RouteInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isClatdStarted-(Ljava/lang/String;)Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromLocalNetwork-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeNetwork-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultNetId-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-(Landroid/net/Network; [Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForNetwork-(I [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6NdOffload-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMtu-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setPermission-(Ljava/lang/String; [I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidNetworkRules-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkScoreService;-clearScores-()Z": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-disableScoring-()V": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-registerNetworkScoreCache-(I Landroid/net/INetworkScoreCache;)V": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED" ], "Lcom/android/server/NetworkScoreService;-setActiveScorer-(Ljava/lang/String;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-updateScores-([Landroid/net/ScoredNetwork;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/TelephonyRegistry;-addOnSubscriptionsChangedListener-(Ljava/lang/String; Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listenForSubscriber-(I Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChangedForSubscriber-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallStateForSubscriber-(I I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfoForSubscriber-(I Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocationForSubscriber-(I Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivityForSubscriber-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailedForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionForSubscriber-(I I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionRealTimeInfo-(Landroid/telephony/DataConnectionRealTimeInfo;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDisconnectCause-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChangedForPhoneId-(I I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOemHookRawEventForSubscriber-(I [B)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseCallState-(I I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceStateForPhoneId-(I I Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrengthForSubscriber-(I Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyVoLteServiceStateChanged-(Landroid/telephony/VoLteServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(I Ljava/lang/String; J I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-(I Ljava/lang/String; [J I I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByAccessibilityId-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; I J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByText-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByViewId-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findFocus-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-focusSearch-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindow-(I)Landroid/view/accessibility/AccessibilityWindowInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindows-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performAccessibilityAction-(I J I Landroid/os/Bundle; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performGlobalAction-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addAccessibilityInteractionConnection-(Landroid/view/IWindow; Landroid/view/accessibility/IAccessibilityInteractionConnection; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addClient-(Landroid/view/accessibility/IAccessibilityManagerClient; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getEnabledAccessibilityServiceList-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getInstalledAccessibilityServiceList-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getWindowToken-(I)Landroid/os/IBinder;": [ "getWindowToken" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-interrupt-(I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-removeAccessibilityInteractionConnection-(Landroid/view/IWindow;)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-sendAccessibilityEvent-(Landroid/view/accessibility/AccessibilityEvent; I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-temporaryEnableAccessibilityStateUntilKeyguardRemoved-(Landroid/content/ComponentName; Z)V": [ "temporaryEnableAccessibilityStateUntilKeyguardRemoved" ], "Lcom/android/server/accounts/AccountManagerService;-addAccount-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-copyAccountToUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-editProperties-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByFeatures-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByTypeForPackage-(Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsForPackage-(Ljava/lang/String; I)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthToken-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Z Landroid/os/Bundle;)V": [ "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthenticatorTypes-(I)[Landroid/accounts/AuthenticatorDescription;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-hasFeatures-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.GET_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Lcom/android/server/accounts/AccountManagerService;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccountExplicitly-(Landroid/accounts/Account;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-renameAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Lcom/android/server/accounts/AccountManagerService;-updateCredentials-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Ljava/lang/String; Z Landroid/os/Bundle;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Lcom/android/server/am/ActivityManagerService;-appNotRespondingViaProvider-(Landroid/os/IBinder;)V": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)Z": [ "android.permission.CONFIRM_FULL_BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-bootAnimationComplete-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-createActivityContainer-(Landroid/os/IBinder; Landroid/app/IActivityContainerCallback;)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-deleteActivityContainer-(Landroid/app/IActivityContainer;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-getAllStackInfos-()Ljava/util/List;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getAssistContextExtras-(I)Landroid/os/Bundle;": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getHomeActivityToken-()Landroid/os/IBinder;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Ljava/util/List;": [ "android.permission.GET_DETAILED_TASKS", "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningExternalApplications-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getStackInfo-(I)Landroid/app/ActivityManager$StackInfo;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnail-(I)Landroid/app/ActivityManager$TaskThumbnail;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-hang-(Landroid/os/IBinder; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z Ljava/lang/String;)J": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/am/ActivityManagerService;-isInHomeStack-(I)Z": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-launchAssistIntent-(Landroid/content/Intent; I Ljava/lang/String; I)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToBack-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToStack-(I I Z)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-performIdleMaintenance-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Landroid/app/ProfilerInfo; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-requestBugReport-()V": [ "android.permission.DUMP" ], "Lcom/android/server/am/ActivityManagerService;-resizeStack-(I Landroid/graphics/Rect;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-restart-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; Ljava/lang/String; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsCaller-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityFromRecents-(I Landroid/os/Bundle;)I": [ "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startLockTaskModeOnCurrent-()V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-startUserInBackground-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-startVoiceActivity-(Ljava/lang/String; I I Landroid/content/Intent; Ljava/lang/String; Landroid/service/voice/IVoiceInteractionSession; Lcom/android/internal/app/IVoiceInteractor; I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.BIND_VOICE_INTERACTION" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-stopLockTaskModeOnCurrent-()V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Landroid/app/IStopUserCallback;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-systemBackupRestored-()V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatisticsStream-()Landroid/os/ParcelFileDescriptor;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteChangeWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteConnectivityChanged-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteEvent-(I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInteractive-(Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteMobileRadioPowerState-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkStatsEnabled-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetAudio-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetVideo-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOn-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStartedFromSource-(Landroid/os/WorkSource; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRssiChanged-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiState-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiSupplicantStateChanged-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getCurrentStats-(Ljava/util/List;)[B": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getStatsOverTime-(J)Landroid/os/ParcelFileDescriptor;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindAppWidgetId-(Ljava/lang/String; I I Landroid/content/ComponentName; Landroid/os/Bundle;)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent; Landroid/os/IBinder;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-createAppWidgetConfigIntentSender-(Ljava/lang/String; I)Landroid/content/IntentSender;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-deleteAppWidgetId-(Ljava/lang/String; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetInfo-(Ljava/lang/String; I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetOptions-(Ljava/lang/String; I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetViews-(Ljava/lang/String; I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-hasBindAppWidgetPermission-(Ljava/lang/String; I)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-notifyAppWidgetViewDataChanged-(Ljava/lang/String; [I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-partiallyUpdateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-setBindAppWidgetPermission-(Ljava/lang/String; I Z)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-unbindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetOptions-(Ljava/lang/String; I Landroid/os/Bundle;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-clearBackupData-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullTransportBackup-([Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDataManagementIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDataManagementLabel-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/connectivity/Tethering;-interfaceAdded-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceLinkStateChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceStatusChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-cancelSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-cancelSyncAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getCurrentSyncsAsUser-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getIsSyncableAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomaticallyAsUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypes-()[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypesAsUser-(I)[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getSyncStatusAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPendingAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomaticallyAsUser-(Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-sync-(Landroid/content/SyncRequest;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-syncAsUser-(Landroid/content/SyncRequest; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileIntentFilter-(Landroid/content/ComponentName; Landroid/content/IntentFilter; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addPersistentPreferredActivity-(Landroid/content/ComponentName; Landroid/content/IntentFilter; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearCrossProfileIntentFilters-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearPackagePersistentPreferredActivities-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearProfileOwner-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createAndInitializeUser-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; Landroid/content/ComponentName; Landroid/os/Bundle;)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createUser-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemApp-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemAppWithIntent-(Landroid/content/ComponentName; Landroid/content/Intent;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enforceCanManageCaCerts-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabled-()[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabledAsUser-(I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAutoTimeRequired-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileWidgetProviders-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerName-()Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLockTaskPackages-(Landroid/content/ComponentName;)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServices-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethods-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileOwnerName-(I)Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileWithMinimumFailedPasswordsForWipe-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRestrictionsProvider-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getScreenCaptureDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryptionStatus-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasUserSetupCompleted-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installCaCert-(Landroid/content/ComponentName; [B)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installKeyPair-(Landroid/content/ComponentName; [B [B Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isActivePasswordSufficient-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isLockTaskPermitted-(Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isMasterVolumeMuted-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isRemovingAdmin-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-lockNow-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyLockTaskModeChanged-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAccountManagementDisabled-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAutoTimeRequired-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCrossProfileCallerIdDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceOwner-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setLockTaskPackages-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMasterVolumeMuted-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedAccessibilityServices-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedInputMethods-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileEnabled-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileName-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileOwner-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRecommendedGlobalProxy-(Landroid/content/ComponentName; Landroid/net/ProxyInfo;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRestrictionsProvider-(Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setScreenCaptureDisabled-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSecureSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; Landroid/os/PersistableBundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserRestriction-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-switchUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-uninstallCaCert-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-wipeData-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-createVirtualDisplay-(Landroid/hardware/display/IVirtualDisplayCallback; Landroid/media/projection/IMediaProjection; Ljava/lang/String; Ljava/lang/String; I I I Landroid/view/Surface; I)I": [ "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "android.permission.CAPTURE_VIDEO_OUTPUT" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-pauseWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-resumeWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-startWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-stopWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-addListener-(Landroid/net/IEthernetServiceListener;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-getConfiguration-()Landroid/net/IpConfiguration;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-isAvailable-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-removeListener-(Landroid/net/IEthernetServiceListener;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-setConfiguration-(Landroid/net/IpConfiguration;)V": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addDeviceEventListener-(Landroid/hardware/hdmi/IHdmiDeviceEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHdmiMhlVendorCommandListener-(Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addVendorCommandListener-(Landroid/hardware/hdmi/IHdmiVendorCommandListener; I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-canChangeSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-clearTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-deviceSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getActiveSource-()Landroid/hardware/hdmi/HdmiDeviceInfo;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getDeviceList-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getInputDevices-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getPortInfo-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSupportedTypes-()[I": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-oneTouchPlay-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-portSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-queryDisplayStatus-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendKeyEvent-(I I Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendMhlVendorCommand-(I I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendStandby-(I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendVendorCommand-(I I [B Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setArcMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setHdmiRecordListener-(Landroid/hardware/hdmi/IHdmiRecordListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setInputChangeListener-(Landroid/hardware/hdmi/IHdmiInputChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setProhibitMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMode-(Z Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMute-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioVolume-(I I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startOneTouchRecord-(I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-stopOneTouchRecord-(I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setTouchCalibrationForInputDevice-(Ljava/lang/String; I Landroid/hardware/input/TouchCalibration;)V": [ "android.permission.SET_INPUT_CALIBRATION" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;-schedule-(Landroid/app/job/JobInfo;)I": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Lcom/android/server/media/MediaRouterService;-registerClientAsUser-(Landroid/media/IMediaRouterClient; Ljava/lang/String; I)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/media/MediaSessionRecord$SessionStub;-setFlags-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-addCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-createProjection-(I Ljava/lang/String; I Z)Landroid/media/projection/IMediaProjection;": [ "android.permission.MANAGE_MEDIA_PROJECTION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-getActiveProjectionInfo-()Landroid/media/projection/MediaProjectionInfo;": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-removeCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-stopActiveProjection-()V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/net/NetworkPolicyManagerService;-addUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-()[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getPowerSaveAppIdWhitelist-()[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-removeUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdateIfaces-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-openSession-()Landroid/net/INetworkStatsSession;": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageInstallerService;-setPermissionsResult-(I Z)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageInstallerService;-uninstall-(Ljava/lang/String; I Landroid/content/IntentSender; I)V": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-addCrossProfileIntentFilter-(Landroid/content/IntentFilter; Ljava/lang/String; I I I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-canForwardTo-(Landroid/content/Intent; Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearCrossProfileIntentFilters-(I Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES" ], "Lcom/android/server/pm/PackageManagerService;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver2; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-deletePackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationHiddenSettingAsUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getHomeActivities-(Ljava/util/List;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantPermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackageAsUser-(Ljava/lang/String; I)I": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackage-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Ljava/lang/String;)V": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Ljava/lang/String; I)V": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPackageAvailable-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver; I)V": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentContentProviders-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetPreferredActivities-(I)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokePermission-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationHiddenSettingAsUser-(Ljava/lang/String; Z I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setBlockUninstallForUser-(Ljava/lang/String; Z I)Z": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I Landroid/content/IntentFilter; I Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLockWithUid-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-boostScreenBrightness-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-goToSleep-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-powerHint-(I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT", "android.permission.RECOVERY" ], "Lcom/android/server/power/PowerManagerService$BinderService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setPowerSaveMode-(Z)Z": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setStayOnSetting-(I)V": [ "android.permission.WRITE_SETTINGS" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-shutdown-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockUids-(Landroid/os/IBinder; [I)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-wakeUp-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-addPrintJobStateChangeListener-(Landroid/print/IPrintJobStateChangeListener; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-cancelPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfo-(Landroid/print/PrintJobId; I I)Landroid/print/PrintJobInfo;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfos-(I I)Ljava/util/List;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-print-(Ljava/lang/String; Landroid/print/IPrintDocumentAdapter; Landroid/print/PrintAttributes; Ljava/lang/String; I I)Landroid/os/Bundle;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-restartPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-()[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/statusbar/StatusBarManagerService;-clearNotificationEffects-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandSettingsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onClearAllNotifications-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationActionClick-(Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationExpansionChanged-(Ljava/lang/String; Z Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationVisibilityChanged-([Ljava/lang/String; [Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelHidden-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelRevealed-(Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Lcom/android/internal/statusbar/StatusBarIconList; [I Ljava/util/List;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setSystemUiVisibility-(I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-topAppWindowChanged-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-acceptRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-cancelMissedCallsNotification-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-clearAccounts-(Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-endCall-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-getAdnUriForPhoneAccount-(Landroid/telecom/PhoneAccountHandle;)Landroid/net/Uri;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-getCallCapablePhoneAccounts-()Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-getCurrentTtyMode-()I": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-getDefaultOutgoingPhoneAccount-(Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-getLine1Number-(Landroid/telecom/PhoneAccountHandle;)Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-getPhoneAccountsSupportingScheme-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-getSimCallManagers-()Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-handlePinMmiForPhoneAccount-(Landroid/telecom/PhoneAccountHandle; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-hasVoiceMailNumber-(Landroid/telecom/PhoneAccountHandle;)Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-isInCall-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-isRinging-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-isTtySupported-()Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-isVoiceMailNumber-(Landroid/telecom/PhoneAccountHandle; Ljava/lang/String;)Z": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-registerPhoneAccount-(Landroid/telecom/PhoneAccount;)V": [ "android.permission.MODIFY_PHONE_STATE", "android.permission.REGISTER_CONNECTION_MANAGER" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-setSimCallManager-(Landroid/telecom/PhoneAccountHandle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-setUserSelectedOutgoingPhoneAccount-(Landroid/telecom/PhoneAccountHandle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-showInCallScreen-(Z)V": [ "android.permission.READ_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-silenceRinger-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/telecom/TelecomService$TelecomServiceImpl;-unregisterPhoneAccount-(Landroid/telecom/PhoneAccountHandle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-acquireTvInputHardware-(I Landroid/media/tv/ITvInputHardwareCallback; Landroid/media/tv/TvInputInfo; I)Landroid/media/tv/ITvInputHardware;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-addBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-captureFrame-(Ljava/lang/String; Landroid/view/Surface; Landroid/media/tv/TvStreamConfig; I)Z": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getAvailableTvStreamConfigList-(Ljava/lang/String; I)Ljava/util/List;": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getHardwareList-()Ljava/util/List;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-releaseTvInputHardware-(I Landroid/media/tv/ITvInputHardware; I)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-removeBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-setParentalControlsEnabled-(Z I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHardwareTvInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHdmiTvInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-removeTvInput-(Ljava/lang/String;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryConfigurationStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryEvents-(J J Ljava/lang/String;)Landroid/app/usage/UsageEvents;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryUsageStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usb/UsbService;-allowUsbDebugging-(Z Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearUsbDebuggingKeys-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-denyUsbDebugging-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String; I)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setMassStorageBackingFile-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-deleteKeyphraseSoundModel-(I Ljava/lang/String;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-getKeyphraseSoundModel-(I Ljava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-updateKeyphraseSoundModel-(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDimensionHints-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDisplayPadding-(Landroid/graphics/Rect;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaper-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disableEphemeralNetwork-(Ljava/lang/String;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableAggressiveHandover-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableVerboseLogging-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAggressiveHandover-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAllowScansWithTraffic-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getBatchedScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getChannelList-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionStatistics-()Landroid/net/wifi/WifiConnectionStatistics;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getPrivilegedConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getSupportedFeatures-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getVerboseLoggingLevel-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWpsNfcConfigurationToken-(I)Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-pollBatchedScan-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reportActivityInfo-()Landroid/net/wifi/WifiActivityEnergyInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-requestBatchedScan-(Landroid/net/wifi/BatchedScanSettings; Landroid/os/IBinder; Landroid/os/WorkSource;)Z": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiServiceImpl;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setAllowScansWithTraffic-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-startLocationRestrictedScan-(Landroid/os/WorkSource;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE", "android.permission.LOCATION_HARDWARE" ], "Lcom/android/server/wifi/WifiServiceImpl;-startScan-(Landroid/net/wifi/ScanSettings; Landroid/os/WorkSource;)V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiServiceImpl;-startWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-stopBatchedScan-(Landroid/net/wifi/BatchedScanSettings;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-stopWifi-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getP2pStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.LOCATION_HARDWARE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-setMiracastMode-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I I Z Z I I Z Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplayDensity-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplaySize-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearWindowContentFrameStats-(Landroid/os/IBinder;)Z": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getWindowContentFrameStats-(Landroid/os/IBinder;)Landroid/view/WindowContentFrameStats;": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-keyguardGoingAway-(Z Z)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I Z)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppGroupId-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I I Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppWillBeHidden-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayDensity-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplaySize-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setOverscan-(I I I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountManager;-addAccountExplicitly-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-addOnAccountsUpdatedListener-(Landroid/accounts/OnAccountsUpdateListener; Landroid/os/Handler; Z)V": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-clearPassword-(Landroid/accounts/Account;)V": [ "android.permission.MANAGE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccounts-()[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getAccountsByType-(Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.GET_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getPassword-(Landroid/accounts/Account;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-getUserData-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-invalidateAuthToken-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MANAGE_ACCOUNTS", "android.permission.USE_CREDENTIALS" ], "Landroid/accounts/AccountManager;-peekAuthToken-(Landroid/accounts/Account; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-removeAccountExplicitly-(Landroid/accounts/Account;)Z": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setAuthToken-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setPassword-(Landroid/accounts/Account; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/accounts/AccountManager;-setUserData-(Landroid/accounts/Account; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.AUTHENTICATE_ACCOUNTS" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/bluetooth/BluetoothA2dp;-finalize-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeAdvertiser-()Landroid/bluetooth/le/BluetoothLeAdvertiser;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeScanner-()Landroid/bluetooth/le/BluetoothLeScanner;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isMultipleAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-([Ljava/util/UUID; Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-stopLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createBond-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getType-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-setPairingConfirmation-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-setPin-([B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-beginReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-connect-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-disconnect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-discoverServices-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-executeReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readRemoteRssi-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestConnectionPriority-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestMtu-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-setCharacteristicNotification-(Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-addService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-cancelConnection-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-clearServices-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-connect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-notifyCharacteristicChanged-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-removeService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-sendResponse-(Landroid/bluetooth/BluetoothDevice; I I I [B)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectedDevices-(I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectionState-(Landroid/bluetooth/BluetoothDevice; I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getDevicesMatchingConnectionStates-(I [I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-openGattServer-(Landroid/content/Context; Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-stopAdvertising-(Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/le/BluetoothLeScanner;-flushPendingScanResults-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Ljava/util/List; Landroid/bluetooth/le/ScanSettings; Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-stopScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/hardware/ConsumerIrManager;-getCarrierFrequencies-()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/ConsumerIrManager;-transmit-(I [I)V": [ "android.permission.TRANSMIT_IR" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addTestProvider-(Ljava/lang/String; Z Z Z Z Z Z Z I I)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderEnabled-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderLocation-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-clearTestProviderStatus-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeProximityAlert-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeTestProvider-(Ljava/lang/String;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/location/LocationManager;-setTestProviderEnabled-(Ljava/lang/String; Z)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderLocation-(Ljava/lang/String; Landroid/location/Location;)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/location/LocationManager;-setTestProviderStatus-(Ljava/lang/String; I Landroid/os/Bundle; J)V": [ "android.permission.ACCESS_MOCK_LOCATION" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMicrophoneMute-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setAudioAttributes-(Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-reportBadNetwork-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/app/PendingIntent;)V": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-setProcessDefaultNetwork-(Landroid/net/Network;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/Network;-openConnection-(Ljava/net/URL;)Ljava/net/URLConnection;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-is5GHzBandSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isDeviceToApRttSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isEnhancedPowerReportingSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isP2pSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isPreferredNetworkOffloadSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isTdlsSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/nfc/NfcAdapter;-disableForegroundDispatch-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-disableForegroundNdefPush-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundDispatch-(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [L[java/lang/String;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundNdefPush-(Landroid/app/Activity; Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-invokeBeam-(Landroid/app/Activity;)Z": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUris-([Landroid/net/Uri; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUrisCallback-(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessage-(Landroid/nfc/NdefMessage; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessageCallback-(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setOnNdefPushCompleteCallback-(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-getAidsForService-(Landroid/content/ComponentName; Ljava/lang/String;)Ljava/util/List;": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-isDefaultServiceForAid-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-isDefaultServiceForCategory-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-registerAidsForService-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/util/List;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-removeAidsForService-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-setPreferredService-(Landroid/app/Activity; Landroid/content/ComponentName;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-unsetPreferredService-(Landroid/app/Activity;)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyA-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyB-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-decrement-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-increment-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-readBlock-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-restore-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transfer-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-writeBlock-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-readPages-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-writePage-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-getNdefMessage-()Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-makeReadOnly-()Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-writeNdefMessage-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-format-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-formatReadOnly-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; [J I Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; J Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/telecom/TelecomManager;-isInCall-()Z": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telecom/TelecomManager;-showInCallScreen-(Z)V": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/PhoneNumberUtils;-isVoiceMailNumber-(Ljava/lang/String;)Z": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SmsManager;-downloadMultimediaMessage-(Landroid/content/Context; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultimediaMessage-(Landroid/content/Context; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SubscriptionManager;-addOnSubscriptionsChangedListener-(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SubscriptionManager;-getActiveSubscriptionInfo-(I)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SubscriptionManager;-getActiveSubscriptionInfoCount-()I": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SubscriptionManager;-getActiveSubscriptionInfoForSimSlotIndex-(I)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/SubscriptionManager;-getActiveSubscriptionInfoList-()Ljava/util/List;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getDeviceSoftwareVersion-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/widget/VideoView;-getAudioSessionId-()I": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri; Ljava/util/Map;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_23.json ================================================ { "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccount-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-addAccountFromCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-confirmCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-editProperties-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountCredentialsForCloning-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAccountRemovalAllowed-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthToken-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-getAuthTokenLabel-(Landroid/accounts/IAccountAuthenticatorResponse; Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-hasFeatures-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; [Ljava/lang/String;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/accounts/AbstractAccountAuthenticator$Transport;-updateCredentials-(Landroid/accounts/IAccountAuthenticatorResponse; Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.ACCOUNT_MANAGER" ], "Landroid/hardware/location/ActivityRecognitionHardware;-disableActivityEvent-(Ljava/lang/String; I)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-enableActivityEvent-(Ljava/lang/String; I J)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-flush-()Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-getSupportedActivities-()[Ljava/lang/String;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-isActivitySupported-(Ljava/lang/String;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-registerSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-unregisterSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getDeviceId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getDeviceSvn-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getGroupIdLevel1-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIccSerialNumber-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIccSimChallengeResponse-(I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimChallengeResponse-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimIst-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getIsimPcscf-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getLine1AlphaTag-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getLine1Number-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getMsisdn-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getSubscriberId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getVoiceMailAlphaTag-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoProxy;-getVoiceMailNumber-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SMSDispatcher$MultipartSmsSenderCallback;-onSendMultipartSmsComplete-(I [I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/SubscriptionController;-addSubInfoRecord-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearDefaultsForInactiveSubIds-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearSubInfo-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubInfoCount-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfo-(I Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForIccId-(Ljava/lang/String; Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForSimSlotIndex-(I Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoList-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoCount-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoList-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getSubscriptionProperty-(I Ljava/lang/String; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDataRoaming-(I I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultDataSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultSmsSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultVoiceSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayName-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNameUsingSrc-(Ljava/lang/String; I J)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNumber-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setIconTint-(I I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setSubscriptionProperty-(I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/UiccSmsController;-copyMessageToIccEfForSubscriber-(I Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-getAllMessagesFromIccEfForSubscriber-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-injectSmsPduForSubscriber-(I [B Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriberWithSelfPermissions-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendMultipartTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredMultipartText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriberWithSelfPermissions-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SEND_RESPOND_VIA_MESSAGE", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/internal/telephony/UiccSmsController;-updateMessageOnIccEfForSubscriber-(I Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-addNfcUnlockHandler-(Landroid/nfc/INfcUnlockHandler; [I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disable-(Z)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-disableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-dispatch-(Landroid/nfc/Tag;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enable-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-enableNdefPush-()Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-invokeBeam-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-invokeBeamInternal-(Landroid/nfc/BeamShareData;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-pausePolling-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-resumePolling-()V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setAppCallback-(Landroid/nfc/IAppCallback;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setForegroundDispatch-(Landroid/app/PendingIntent; [Landroid/content/IntentFilter; Landroid/nfc/TechListParcel;)V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-setP2pModes-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/NfcService$NfcAdapterService;-verifyNfcPermission-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-close-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-connect-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-formatNdef-(I [B)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTechList-(I)[I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-getTimeout-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-isNdef-(I)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefMakeReadOnly-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefRead-(I)Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-ndefWrite-(I Landroid/nfc/NdefMessage;)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-reconnect-(I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-rediscover-(I)Landroid/nfc/Tag;": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-resetTimeouts-()V": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-setTimeout-(I I)I": [ "android.permission.NFC" ], "Lcom/android/nfc/NfcService$TagService;-transceive-(I [B Z)Landroid/nfc/TransceiveResult;": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-getAidGroupForService-(I Landroid/content/ComponentName; Ljava/lang/String;)Landroid/nfc/cardemulation/AidGroup;": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-getServices-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-isDefaultServiceForAid-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-isDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-registerAidGroupForService-(I Landroid/content/ComponentName; Landroid/nfc/cardemulation/AidGroup;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-removeAidGroupForService-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setDefaultForNextTap-(I Landroid/content/ComponentName;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setDefaultServiceForCategory-(I Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-setPreferredService-(Landroid/content/ComponentName;)Z": [ "android.permission.NFC" ], "Lcom/android/nfc/cardemulation/CardEmulationManager$CardEmulationInterface;-unsetPreferredService-()Z": [ "android.permission.NFC" ], "Lcom/android/phone/CarrierConfigLoader;-getConfigForSubId-(I)Landroid/os/PersistableBundle;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/CarrierConfigLoader;-updateConfigForPhoneId-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCallForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-canChangeDtmfToneLength-()Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableVideoCalling-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCallForSubscriber-(I)Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-factoryReset-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCalculatedPreferredNetworkType-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconIndex-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconIndexForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconMode-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconModeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriText-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriTextForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMdn-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMin-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-(Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellNetworkScanResults-(I)Lcom/android/internal/telephony/CellNetworkScanResult;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataEnabled-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataNetworkType-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDeviceId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1AlphaTagForDisplay-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1NumberForDisplay-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLteOnCdmaMode-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLteOnCdmaModeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getMergedSubscriberIds-(Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/phone/PhoneInterfaceManager;-getNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPcscfAddress-(Ljava/lang/String; Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPreferredNetworkType-(I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getRadioAccessFamily-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getTetherApnRequired-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getVoiceNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmiForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccCloseLogicalChannel-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccExchangeSimIO-(I I I I I Ljava/lang/String;)[B": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccOpenLogicalChannel-(Ljava/lang/String;)Landroid/telephony/IccOpenLogicalChannelResponse;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduBasicChannel-(I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduLogicalChannel-(I I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-invokeOemRilRequestRaw-([B [B)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isIdle-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isIdleForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isOffhook-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isOffhookForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRadioOn-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRadioOnForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRinging-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRingingForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isSimPinEnabled-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isVideoCallingEnabled-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isWorldPhone-()Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvReadItem-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvResetConfig-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteCdmaPrl-([B)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteItem-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-sendEnvelopeWithStatus-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setDataEnabled-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setImsRegistrationState-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setNetworkSelectionModeAutomatic-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setNetworkSelectionModeManual-(I Lcom/android/internal/telephony/OperatorInfo; Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setPreferredNetworkType-(I I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioForSubscriber-(I Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioPower-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-shutdownMobileRadios-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResult-(Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResultForSubscriber-(I Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResult-(Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResultForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOffForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/AppOpsService;-checkAudioOperation-(I I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-checkOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-finishOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getOpsForPackage-(I Ljava/lang/String; [I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getPackagesForOps-([I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-noteOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-resetAllModes-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setAudioRestriction-(I I I I [Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setMode-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setUidMode-(I I I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-startOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH", "android.permission.LOCAL_MAC_ADDRESS" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-factoryReset-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllVpnInfo-()[Lcom/android/internal/net/VpnInfo;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getDefaultNetworkCapabilitiesForUser-(I)[Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLegacyVpnInfo-(I)Lcom/android/internal/net/LegacyVpnInfo;": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkPropertiesForType-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkForType-(I)Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfoForNetwork-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredDhcpRanges-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getVpnConfig-(I)Lcom/android/internal/net/VpnConfig;": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-listenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; Landroid/os/IBinder;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-pendingListenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-pendingRequestForNetwork-(Landroid/net/NetworkCapabilities; Landroid/app/PendingIntent;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-prepareVpn-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-registerNetworkAgent-(Landroid/os/Messenger; Landroid/net/NetworkInfo; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Landroid/net/NetworkMisc;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-registerNetworkFactory-(Landroid/os/Messenger; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-reportNetworkConnectivity-(Landroid/net/Network; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-requestBandwidthUpdate-(Landroid/net/Network;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-requestNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; I Landroid/os/IBinder; I)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAcceptUnvalidated-(Landroid/net/Network; Z Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAirplaneMode-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setProvisioningNotificationVisible-(Z I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setVpnPackageAuthorization-(Ljava/lang/String; I Z)V": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-startNattKeepalive-(Landroid/net/Network; I Landroid/os/Messenger; Landroid/os/IBinder; Ljava/lang/String; I Ljava/lang/String;)V": [ "android.permission.PACKET_KEEPALIVE_OFFLOAD" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-unregisterNetworkFactory-(Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConsumerIrService;-getCarrierFrequencies-()[I": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/ConsumerIrService;-transmit-(Ljava/lang/String; I [I)V": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistApp-(Ljava/lang/String; J I Ljava/lang/String;)V": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistAppForMms-(Ljava/lang/String; I Ljava/lang/String;)J": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistAppForSms-(Ljava/lang/String; I Ljava/lang/String;)J": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveWhitelistApp-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/DeviceIdleController$BinderService;-exitIdle-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/DeviceIdleController$BinderService;-removePowerSaveWhitelistApp-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/DropBoxManagerService;-getNextEntry-(Ljava/lang/String; J)Landroid/os/DropBoxManager$Entry;": [ "android.permission.READ_LOGS" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Ljava/lang/String; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-shouldOfferSwitchingToNextInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInput-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; Landroid/view/inputmethod/EditorInfo; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-updateStatusIcon-(Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/InputMethodManagerService;-windowGainedFocus-(Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext;)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.STATUS_BAR" ], "Lcom/android/server/LocationManagerService;-addGpsMeasurementsListener-(Landroid/location/IGpsMeasurementsListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGpsNavigationMessageListener-(Landroid/location/IGpsNavigationMessageListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGpsStatusListener-(Landroid/location/IGpsStatusListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LockSettingsService;-checkPassword-(Ljava/lang/String; I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkPattern-(Ljava/lang/String; I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkVoldPassword-(I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-getBoolean-(Ljava/lang/String; Z I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getLong-(Ljava/lang/String; J I)J": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getString-(Ljava/lang/String; Ljava/lang/String; I)Ljava/lang/String;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-registerStrongAuthTracker-(Landroid/app/trust/IStrongAuthTracker;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-requireStrongAuth-(I I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setBoolean-(Ljava/lang/String; Z I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPassword-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPattern-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLong-(Ljava/lang/String; J I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setString-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-unregisterStrongAuthTracker-(Landroid/app/trust/IStrongAuthTracker;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyPassword-(Ljava/lang/String; J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyPattern-(Ljava/lang/String; J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/MmsServiceBroker$BinderService;-downloadMessage-(I Ljava/lang/String; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-sendMessage-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/server/MountService;-benchmark-(Ljava/lang/String;)J": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-encryptStorage-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-forgetAllVolumes-()V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-forgetVolume-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-format-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getPassword-()Ljava/lang/String;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/MountService;-getPrimaryStorageUuid-()Ljava/lang/String;": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-mount-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionMixed-(Ljava/lang/String; I)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionPrivate-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionPublic-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-resizeSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-runMaintenance-()V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setDebugFlags-(I I)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setPrimaryStorageUuid-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setVolumeNickname-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setVolumeUserFlags-(Ljava/lang/String; I I)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unmount-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToLocalNetwork-(Ljava/lang/String; Ljava/util/List;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addLegacyRouteForNetId-(I Landroid/net/RouteInfo; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-allowProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDefaultNetId-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearPermission-([I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createPhysicalNetwork-(I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createVirtualNetwork-(I Z Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-denyProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-flushNetworkDnsCache-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getRoutes-(Ljava/lang/String;)[Landroid/net/RouteInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isClatdStarted-(Ljava/lang/String;)Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromLocalNetwork-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeNetwork-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultNetId-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-(Landroid/net/Network; [Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForNetwork-(I [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6NdOffload-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMtu-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setNetworkPermission-(I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setPermission-(Ljava/lang/String; [I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidCleartextNetworkPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidNetworkRules-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startInterfaceForwarding-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopInterfaceForwarding-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkScoreService;-clearScores-()Z": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-disableScoring-()V": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-registerNetworkScoreCache-(I Landroid/net/INetworkScoreCache;)V": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED" ], "Lcom/android/server/NetworkScoreService;-setActiveScorer-(Ljava/lang/String;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-updateScores-([Landroid/net/ScoredNetwork;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/TelephonyRegistry;-addOnSubscriptionsChangedListener-(Ljava/lang/String; Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listenForSubscriber-(I Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChangedForSubscriber-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallStateForSubscriber-(I I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCarrierNetworkChange-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfoForSubscriber-(I Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocationForSubscriber-(I Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivityForSubscriber-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailedForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionForSubscriber-(I I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionRealTimeInfo-(Landroid/telephony/DataConnectionRealTimeInfo;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDisconnectCause-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChangedForPhoneId-(I I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOemHookRawEventForSubscriber-(I [B)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseCallState-(I I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceStateForPhoneId-(I I Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrengthForSubscriber-(I Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyVoLteServiceStateChanged-(Landroid/telephony/VoLteServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(I Ljava/lang/String; J I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-(I Ljava/lang/String; [J I I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-copyAccountToUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByTypeForPackage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsForPackage-(Ljava/lang/String; I Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthenticatorTypes-(I)[Landroid/accounts/AuthenticatorDescription;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-appNotRespondingViaProvider-(Landroid/os/IBinder;)V": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Landroid/content/pm/ApplicationInfo; I)Z": [ "android.permission.CONFIRM_FULL_BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-bootAnimationComplete-()V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-createStackOnDisplay-(I)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-createVirtualActivityContainer-(Landroid/os/IBinder; Landroid/app/IActivityContainerCallback;)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-deleteActivityContainer-(Landroid/app/IActivityContainer;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-getAllStackInfos-()Ljava/util/List;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getAssistContextExtras-(I)Landroid/os/Bundle;": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getPackageProcessState-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Ljava/util/List;": [ "android.permission.GET_DETAILED_TASKS", "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningExternalApplications-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getStackInfo-(I)Landroid/app/ActivityManager$StackInfo;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnail-(I)Landroid/app/ActivityManager$TaskThumbnail;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-hang-(Landroid/os/IBinder; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z Ljava/lang/String;)J": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/am/ActivityManagerService;-isInHomeStack-(I)Z": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killUid-(I I Ljava/lang/String;)V": [ "android.permission.KILL_UID" ], "Lcom/android/server/am/ActivityManagerService;-launchAssistIntent-(Landroid/content/Intent; I Ljava/lang/String; I Landroid/os/Bundle;)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToStack-(I I Z)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.START_ANY_ACTIVITY" ], "Lcom/android/server/am/ActivityManagerService;-performIdleMaintenance-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Landroid/app/ProfilerInfo; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUidObserver-(Landroid/app/IUidObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I)Z": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-requestAssistContextExtras-(I Lcom/android/internal/os/IResultReceiver; Landroid/os/IBinder;)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-requestBugReport-()V": [ "android.permission.DUMP" ], "Lcom/android/server/am/ActivityManagerService;-resizeStack-(I Landroid/graphics/Rect;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-resizeTask-(I Landroid/graphics/Rect;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-restart-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setDumpHeapDebugLimit-(Ljava/lang/String; I J Ljava/lang/String;)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; Ljava/lang/String; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsCaller-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; Z I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityFromRecents-(I Landroid/os/Bundle;)I": [ "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startLockTaskModeOnCurrent-()V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-startUserInBackground-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-startVoiceActivity-(Ljava/lang/String; I I Landroid/content/Intent; Ljava/lang/String; Landroid/service/voice/IVoiceInteractionSession; Lcom/android/internal/app/IVoiceInteractor; I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.BIND_VOICE_INTERACTION" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-stopLockTaskModeOnCurrent-()V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Landroid/app/IStopUserCallback;)I": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatisticsStream-()Landroid/os/ParcelFileDescriptor;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteChangeWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteConnectivityChanged-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteDeviceIdleMode-(Z Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteEvent-(I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOn-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInteractive-(Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteMobileRadioPowerState-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkStatsEnabled-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetAudio-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetCamera-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetFlashlight-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetVideo-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartCamera-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopCamera-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOn-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWakeUp-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStartedFromSource-(Landroid/os/WorkSource; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRadioPowerState-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRssiChanged-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiState-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiSupplicantStateChanged-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getCurrentStats-(Ljava/util/List;)[B": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getStatsOverTime-(J)Landroid/os/ParcelFileDescriptor;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/audio/AudioService;-disableSafeMediaVolume-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-forceRemoteSubmixFullVolume-(Z Landroid/os/IBinder;)V": [ "android.permission.CAPTURE_AUDIO_OUTPUT" ], "Lcom/android/server/audio/AudioService;-notifyVolumeControllerVisible-(Landroid/media/IVolumeController; Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-registerAudioPolicy-(Landroid/media/audiopolicy/AudioPolicyConfig; Landroid/media/audiopolicy/IAudioPolicyCallback; Z)Ljava/lang/String;": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Lcom/android/server/audio/AudioService;-registerRemoteControlDisplay-(Landroid/media/IRemoteControlDisplay; I I)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Lcom/android/server/audio/AudioService;-registerRemoteController-(Landroid/media/IRemoteControlDisplay; I I Landroid/content/ComponentName;)Z": [ "android.permission.MEDIA_CONTENT_CONTROL" ], "Lcom/android/server/audio/AudioService;-requestAudioFocus-(Landroid/media/AudioAttributes; I Landroid/os/IBinder; Landroid/media/IAudioFocusDispatcher; Ljava/lang/String; Ljava/lang/String; I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/audio/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setFocusPropertiesForPolicy-(I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Lcom/android/server/audio/AudioService;-setMasterMute-(Z I Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/audio/AudioService;-setMicrophoneMute-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setMode-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/audio/AudioService;-setRemoteStreamVolume-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-setRingerModeInternal-(I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Lcom/android/server/audio/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setVolumeController-(Landroid/media/IVolumeController;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-setVolumePolicy-(Landroid/media/VolumePolicy;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-startBluetoothSco-(Landroid/os/IBinder; I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-startBluetoothScoVirtualCall-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/connectivity/Tethering;-interfaceAdded-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceLinkStateChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/Tethering;-interfaceStatusChanged-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-cancelSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-cancelSyncAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getCurrentSyncsAsUser-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getIsSyncableAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomaticallyAsUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAdapterPackagesForAuthorityAsUser-(Ljava/lang/String; I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypes-()[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypesAsUser-(I)[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getSyncStatusAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPendingAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomaticallyAsUser-(Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-sync-(Landroid/content/SyncRequest;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-syncAsUser-(Landroid/content/SyncRequest; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileIntentFilter-(Landroid/content/ComponentName; Landroid/content/IntentFilter; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addPersistentPreferredActivity-(Landroid/content/ComponentName; Landroid/content/IntentFilter; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-choosePrivateKeyAlias-(I Landroid/net/Uri; Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearCrossProfileIntentFilters-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearDeviceInitializer-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearDeviceOwner-(Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearPackagePersistentPreferredActivities-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearProfileOwner-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createAndInitializeUser-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; Landroid/content/ComponentName; Landroid/os/Bundle;)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createUser-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemApp-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemAppWithIntent-(Landroid/content/ComponentName; Landroid/content/Intent;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enforceCanManageCaCerts-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabled-()[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabledAsUser-(I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAutoTimeRequired-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getBluetoothContactSharingDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getBluetoothContactSharingDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCertInstallerPackage-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileWidgetProviders-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerName-()Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDoNotAskCredentialsOnBoot-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLockTaskPackages-(Landroid/content/ComponentName;)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermissionGrantState-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermissionPolicy-(Landroid/content/ComponentName;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServices-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethods-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileOwnerName-(I)Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileWithMinimumFailedPasswordsForWipe-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRestrictionsProvider-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getScreenCaptureDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryptionStatus-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasUserSetupCompleted-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installCaCert-(Landroid/content/ComponentName; [B)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installKeyPair-(Landroid/content/ComponentName; [B [B Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isActivePasswordSufficient-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isLockTaskPermitted-(Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isMasterVolumeMuted-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isRemovingAdmin-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-lockNow-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyLockTaskModeChanged-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyPendingSystemUpdate-(J)V": [ "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAccountManagementDisabled-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAutoTimeRequired-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setBluetoothContactSharingDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCertInstallerPackage-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCrossProfileCallerIdDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceInitializer-(Landroid/content/ComponentName; Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceOwner-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabled-(Landroid/content/ComponentName; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setLockTaskPackages-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMasterVolumeMuted-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermissionGrantState-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermissionPolicy-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedAccessibilityServices-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedInputMethods-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileEnabled-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileName-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileOwner-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRecommendedGlobalProxy-(Landroid/content/ComponentName; Landroid/net/ProxyInfo;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRestrictionsProvider-(Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setScreenCaptureDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSecureSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStatusBarDisabled-(Landroid/content/ComponentName; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSystemUpdatePolicy-(Landroid/content/ComponentName; Landroid/app/admin/SystemUpdatePolicy;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; Landroid/os/PersistableBundle;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserEnabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserIcon-(Landroid/content/ComponentName; Landroid/graphics/Bitmap;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserRestriction-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-switchUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-uninstallCaCerts-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-wipeData-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-createVirtualDisplay-(Landroid/hardware/display/IVirtualDisplayCallback; Landroid/media/projection/IMediaProjection; Ljava/lang/String; Ljava/lang/String; I I I Landroid/view/Surface; I)I": [ "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "android.permission.CAPTURE_VIDEO_OUTPUT" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-pauseWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-requestColorTransform-(I I)V": [ "android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-resumeWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-startWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-stopWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-authenticate-(Landroid/os/IBinder; J I Landroid/hardware/fingerprint/IFingerprintServiceReceiver; I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT", "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-cancelAuthentication-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-cancelEnrollment-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-enroll-(Landroid/os/IBinder; [B I Landroid/hardware/fingerprint/IFingerprintServiceReceiver; I)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-getEnrolledFingerprints-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-hasEnrolledFingerprints-(I Ljava/lang/String;)Z": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-isHardwareDetected-(J Ljava/lang/String;)Z": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-postEnroll-(Landroid/os/IBinder;)I": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-preEnroll-(Landroid/os/IBinder;)J": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-remove-(Landroid/os/IBinder; I I Landroid/hardware/fingerprint/IFingerprintServiceReceiver;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-rename-(I I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-resetTimeout-([B)V": [ "android.permission.RESET_FINGERPRINT_LOCKOUT" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addDeviceEventListener-(Landroid/hardware/hdmi/IHdmiDeviceEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHdmiMhlVendorCommandListener-(Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addVendorCommandListener-(Landroid/hardware/hdmi/IHdmiVendorCommandListener; I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-canChangeSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-clearTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-deviceSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getActiveSource-()Landroid/hardware/hdmi/HdmiDeviceInfo;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getDeviceList-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getInputDevices-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getPortInfo-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSupportedTypes-()[I": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-oneTouchPlay-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-portSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-queryDisplayStatus-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendKeyEvent-(I I Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendMhlVendorCommand-(I I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendStandby-(I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendVendorCommand-(I I [B Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setArcMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setHdmiRecordListener-(Landroid/hardware/hdmi/IHdmiRecordListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setInputChangeListener-(Landroid/hardware/hdmi/IHdmiInputChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setProhibitMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMode-(Z Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMute-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioVolume-(I I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startOneTouchRecord-(I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-stopOneTouchRecord-(I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-registerTabletModeChangedListener-(Landroid/hardware/input/ITabletModeChangedListener;)V": [ "android.permission.TABLET_MODE_LISTENER" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setTouchCalibrationForInputDevice-(Ljava/lang/String; I Landroid/hardware/input/TouchCalibration;)V": [ "android.permission.SET_INPUT_CALIBRATION" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;-schedule-(Landroid/app/job/JobInfo;)I": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Lcom/android/server/media/MediaRouterService;-registerClientAsUser-(Landroid/media/IMediaRouterClient; Ljava/lang/String; I)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/media/MediaSessionRecord$SessionStub;-setFlags-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-addCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-createProjection-(I Ljava/lang/String; I Z)Landroid/media/projection/IMediaProjection;": [ "android.permission.MANAGE_MEDIA_PROJECTION", "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-getActiveProjectionInfo-()Landroid/media/projection/MediaProjectionInfo;": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-removeCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-stopActiveProjection-()V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/net/NetworkPolicyManagerService;-addUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-factoryReset-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-(Ljava/lang/String;)[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-removeUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setDeviceIdleMode-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdateIfaces-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageInstallerService;-setPermissionsResult-(I Z)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageInstallerService;-uninstall-(Ljava/lang/String; Ljava/lang/String; I Landroid/content/IntentSender; I)V": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-addCrossProfileIntentFilter-(Landroid/content/IntentFilter; Ljava/lang/String; I I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-addOnPermissionsChangeListener-(Landroid/content/pm/IOnPermissionsChangeListener;)V": [ "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-canForwardTo-(Landroid/content/Intent; Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearCrossProfileIntentFilters-(I Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES" ], "Lcom/android/server/pm/PackageManagerService;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver2; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deletePackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PACKAGE_VERIFICATION_AGENT", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(Ljava/lang/String; J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(Ljava/lang/String; J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationHiddenSettingAsUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getHomeActivities-(Ljava/util/List;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getMoveStatus-(I)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-getPackageGids-(Ljava/lang/String; I)[I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPermissionFlags-(Ljava/lang/String; Ljava/lang/String; I)I": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantRuntimePermission-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackageAsUser-(Ljava/lang/String; I)I": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackage-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Ljava/lang/String;)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-installPackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; Landroid/content/pm/VerificationParams; Ljava/lang/String; I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-isPackageAvailable-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPermissionRevokedByPolicy-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MOVE_PACKAGE", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-movePrimaryStorage-(Ljava/lang/String;)I": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentContentProviders-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-registerMoveCallback-(Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetApplicationPreferences-(I)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetRuntimePermissions-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokeRuntimePermission-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationHiddenSettingAsUser-(Ljava/lang/String; Z I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setBlockUninstallForUser-(Ljava/lang/String; Z I)Z": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setDefaultBrowserPackageName-(Ljava/lang/String; I)Z": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I Landroid/content/IntentFilter; I Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-shouldShowRequestPermissionRationale-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-systemReady-()V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-unregisterMoveCallback-(Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-updateExternalMediaStatus-(Z Z)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-updateIntentVerificationStatus-(Ljava/lang/String; I I)Z": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-updatePermissionFlags-(Ljava/lang/String; Ljava/lang/String; I I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-updatePermissionFlagsForAllApps-(I I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyIntentFilter-(I I Ljava/util/List;)V": [ "android.permission.INTENT_FILTER_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PACKAGE_VERIFICATION_AGENT", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLockWithUid-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-boostScreenBrightness-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-goToSleep-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-powerHint-(I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT", "android.permission.RECOVERY" ], "Lcom/android/server/power/PowerManagerService$BinderService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setPowerSaveMode-(Z)Z": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-shutdown-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockUids-(Landroid/os/IBinder; [I)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-wakeUp-(J Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-(Ljava/lang/String;)[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/statusbar/StatusBarManagerService;-clearNotificationEffects-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable2-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable2ForUser-(I Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disableForUser-(I Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandSettingsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onClearAllNotifications-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationActionClick-(Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationExpansionChanged-(Ljava/lang/String; Z Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationVisibilityChanged-([Lcom/android/internal/statusbar/NotificationVisibility; [Lcom/android/internal/statusbar/NotificationVisibility;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelHidden-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelRevealed-(Z I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Lcom/android/internal/statusbar/StatusBarIconList; [I Ljava/util/List;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setSystemUiVisibility-(I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-topAppWindowChanged-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-acquireTvInputHardware-(I Landroid/media/tv/ITvInputHardwareCallback; Landroid/media/tv/TvInputInfo; I)Landroid/media/tv/ITvInputHardware;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-addBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-captureFrame-(Ljava/lang/String; Landroid/view/Surface; Landroid/media/tv/TvStreamConfig; I)Z": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getAvailableTvStreamConfigList-(Ljava/lang/String; I)Ljava/util/List;": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getDvbDeviceList-()Ljava/util/List;": [ "android.permission.DVB_DEVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getHardwareList-()Ljava/util/List;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-openDvbDevice-(Landroid/media/tv/DvbDeviceInfo; I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.DVB_DEVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-releaseTvInputHardware-(I Landroid/media/tv/ITvInputHardware; I)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-removeBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-setParentalControlsEnabled-(Z I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHardwareTvInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHdmiTvInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-removeTvInput-(Ljava/lang/String;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-clearWallpaper-(Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDimensionHints-(I I Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDisplayPadding-(Landroid/graphics/Rect; Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaper-(Ljava/lang/String; Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponentChecked-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I I Z Z I I Z Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplayDensity-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplaySize-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearWindowContentFrameStats-(Landroid/os/IBinder;)Z": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getWindowContentFrameStats-(Landroid/os/IBinder;)Landroid/view/WindowContentFrameStats;": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-keyguardGoingAway-(Z Z)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-lockNow-(Landroid/os/Bundle;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-requestAssistScreenshot-(Lcom/android/internal/app/IAssistScreenshotReceiver;)Z": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I I Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppTask-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppWillBeHidden-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayDensity-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayScalingMode-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplaySize-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setOverscan-(I I I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/hardware/ConsumerIrManager;-getCarrierFrequencies-()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/ConsumerIrManager;-transmit-(I [I)V": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/fingerprint/FingerprintManager;-authenticate-(Landroid/hardware/fingerprint/FingerprintManager$CryptoObject; Landroid/os/CancellationSignal; I Landroid/hardware/fingerprint/FingerprintManager$AuthenticationCallback; Landroid/os/Handler;)V": [ "android.permission.USE_FINGERPRINT" ], "Landroid/hardware/fingerprint/FingerprintManager;-hasEnrolledFingerprints-()Z": [ "android.permission.USE_FINGERPRINT" ], "Landroid/hardware/fingerprint/FingerprintManager;-isHardwareDetected-()Z": [ "android.permission.USE_FINGERPRINT" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMicrophoneMute-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setAudioAttributes-(Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/ConnectivityManager;-getActiveNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/ConnectivityManager;-reportBadNetwork-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-reportNetworkConnectivity-(Landroid/net/Network; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-requestBandwidthUpdate-(Landroid/net/Network;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE" ], "Landroid/nfc/NfcAdapter;-disableForegroundDispatch-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-disableForegroundNdefPush-(Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundDispatch-(Landroid/app/Activity; Landroid/app/PendingIntent; [Landroid/content/IntentFilter; [L[java/lang/String;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-enableForegroundNdefPush-(Landroid/app/Activity; Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-invokeBeam-(Landroid/app/Activity;)Z": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUris-([Landroid/net/Uri; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setBeamPushUrisCallback-(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback; Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessage-(Landroid/nfc/NdefMessage; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setNdefPushMessageCallback-(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/NfcAdapter;-setOnNdefPushCompleteCallback-(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback; Landroid/app/Activity; [Landroid/app/Activity;)V": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-getAidsForService-(Landroid/content/ComponentName; Ljava/lang/String;)Ljava/util/List;": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-isDefaultServiceForAid-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-isDefaultServiceForCategory-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-registerAidsForService-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/util/List;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-removeAidsForService-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-setPreferredService-(Landroid/app/Activity; Landroid/content/ComponentName;)Z": [ "android.permission.NFC" ], "Landroid/nfc/cardemulation/CardEmulation;-unsetPreferredService-(Landroid/app/Activity;)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/BasicTagTechnology;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/IsoDep;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyA-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-authenticateSectorWithKeyB-(I [B)Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-decrement-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-increment-(I I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-readBlock-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-restore-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-transfer-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareClassic;-writeBlock-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-readPages-(I)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/MifareUltralight;-writePage-(I [B)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-getNdefMessage-()Landroid/nfc/NdefMessage;": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-makeReadOnly-()Z": [ "android.permission.NFC" ], "Landroid/nfc/tech/Ndef;-writeNdefMessage-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-format-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NdefFormatable;-formatReadOnly-(Landroid/nfc/NdefMessage;)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcA;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcB;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcBarcode;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-getTimeout-()I": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-setTimeout-(I)V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcF;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-close-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-connect-()V": [ "android.permission.NFC" ], "Landroid/nfc/tech/NfcV;-transceive-([B)[B": [ "android.permission.NFC" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; [J I Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; J Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/telephony/SmsManager;-downloadMultimediaMessage-(Landroid/content/Context; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultimediaMessage-(Landroid/content/Context; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/widget/VideoView;-getAudioSessionId-()I": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri; Ljava/util/Map;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_24.json ================================================ { "Landroid/hardware/location/ActivityRecognitionHardware;-disableActivityEvent-(Ljava/lang/String; I)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-enableActivityEvent-(Ljava/lang/String; I J)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-flush-()Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-getSupportedActivities-()[Ljava/lang/String;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-isActivitySupported-(Ljava/lang/String;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-registerSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-unregisterSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-findNanoAppOnHub-(I Landroid/hardware/location/NanoAppFilter;)[I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-getContextHubHandles-()[I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-getContextHubInfo-(I)Landroid/hardware/location/ContextHubInfo;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-getNanoAppInstanceInfo-(I)Landroid/hardware/location/NanoAppInstanceInfo;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-loadNanoApp-(I Landroid/hardware/location/NanoApp;)I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-registerCallback-(Landroid/hardware/location/IContextHubCallback;)I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-sendMessage-(I I Landroid/hardware/location/ContextHubMessage;)I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-unloadNanoApp-(I)I": [ "android.permission.LOCATION_HARDWARE" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getAudioConfig-(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAudioConfig;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getMetadata-(Landroid/bluetooth/BluetoothDevice;)Landroid/media/MediaMetadata;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getPlaybackState-(Landroid/bluetooth/BluetoothDevice;)Landroid/media/session/PlaybackState;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getPlayerSettings-(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAvrcpPlayerSettings;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-sendGroupNavigationCmd-(Landroid/bluetooth/BluetoothDevice; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-sendPassThroughCmd-(Landroid/bluetooth/BluetoothDevice; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-setPlayerApplicationSetting-(Landroid/bluetooth/BluetoothAvrcpPlayerSettings;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelBondProcess-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-configHciSnoopLog-(Z)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-connectSocket-(Landroid/bluetooth/BluetoothDevice; I Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBond-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBondOutOfBand-(Landroid/bluetooth/BluetoothDevice; I Landroid/bluetooth/OobData;)Z": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createSocketChannel-(I Ljava/lang/String; Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-factoryReset-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAdapterConnectionState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondedDevices-()[Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteAlias-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteClass-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteName-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteType-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getSimAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isActivityAndEnergyReportingSupported-()Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isMultiAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-removeBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-reportActivityInfo-()Landroid/bluetooth/BluetoothActivityEnergyInfo;": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-requestActivityInfo-(Landroid/os/ResultReceiver;)V": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sdpSearch-(Landroid/bluetooth/BluetoothDevice; Landroid/os/ParcelUuid;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sendConnectionStateChange-(Landroid/bluetooth/BluetoothDevice; I I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPairingConfirmation-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPasskey-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPin-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setRemoteAlias-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setSimAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addCharacteristic-(I Landroid/os/ParcelUuid; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addDescriptor-(I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addIncludedService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginReliableWrite-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginServiceDeclaration-(I I I I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clearServices-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-configureMTU-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-connectionParameterUpdate-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-disconnectAll-()V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-discoverServices-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endReliableWrite-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endServiceDeclaration-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-numHwTrackFiltersAvailable-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readCharacteristic-(I Ljava/lang/String; I I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readDescriptor-(I Ljava/lang/String; I I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readRemoteRssi-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-refreshDevice-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerClient-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerForNotification-(I Ljava/lang/String; I Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerServer-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattServerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-removeService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendResponse-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startMultiAdvertising-(I Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseSettings;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScan-(I Z Landroid/bluetooth/le/ScanSettings; Ljava/util/List; Landroid/os/WorkSource; Ljava/util/List; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED", "android.permission.PEERS_MAC_ADDRESS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopMultiAdvertising-(I)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopScan-(I Z)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregAll-()V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterClient-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterServer-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeCharacteristic-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeDescriptor-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-clccResponse-(I I I I Z Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-enableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioOn-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-phoneStateChanged-(I I I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-acceptCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dial-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dialMemory-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-enterPrivateMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-explicitCallTransfer-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgEvents-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgFeatures-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentCalls-(Landroid/bluetooth/BluetoothDevice;)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getLastVoiceTagNumber-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-holdCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-redial-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-rejectCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-sendDTMF-(Landroid/bluetooth/BluetoothDevice; B)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-terminateCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getProtocolMode-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getReport-(Landroid/bluetooth/BluetoothDevice; B B I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-sendData-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setProtocolMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setReport-(Landroid/bluetooth/BluetoothDevice; B Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-virtualUnplug-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getClient-()Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getClient-()Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/car/CarRadioService;-setPreset-(Landroid/car/hardware/radio/CarRadioPreset;)Z": [ "android.car.permission.CAR_RADIO" ], "Lcom/android/car/ICarImpl;-getCarService-(Ljava/lang/String;)Landroid/os/IBinder;": [ "android.car.permission.CAR_CAMERA", "android.car.permission.CAR_HVAC", "android.car.permission.CAR_MOCK_VEHICLE_HAL", "android.car.permission.CAR_NAVIGATION_MANAGER", "android.car.permission.CAR_PROJECTION", "android.car.permission.CAR_RADIO" ], "Lcom/android/car/pm/CarPackageManagerService;-setAppBlockingPolicy-(Ljava/lang/String; Landroid/car/content/pm/CarAppBlockingPolicy; I)V": [ "android.car.permission.CONTROL_APP_BLOCKING" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getCompleteVoiceMailNumberForSubscriber-(I)Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceIdForPhone-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceSvn-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceSvnUsingSubId-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getGroupIdLevel1-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getGroupIdLevel1ForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIccSerialNumber-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIccSerialNumberForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIccSimChallengeResponse-(I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getImeiForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimChallengeResponse-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimIst-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimPcscf-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1AlphaTag-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1AlphaTagForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1Number-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1NumberForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getMsisdn-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getMsisdnForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getNaiForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getSubscriberId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getSubscriberIdForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailAlphaTag-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailAlphaTagForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailNumber-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailNumberForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-addSubInfoRecord-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearDefaultsForInactiveSubIds-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearSubInfo-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubInfoCount-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfo-(I Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForIccId-(Ljava/lang/String; Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForSimSlotIndex-(I Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoList-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoCount-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoList-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getSubscriptionProperty-(I Ljava/lang/String; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDataRoaming-(I I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultDataSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultSmsSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultVoiceSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayName-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNameUsingSrc-(Ljava/lang/String; I J)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNumber-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setIconTint-(I I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setSimProvisioningStatus-(I I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setSubscriptionProperty-(I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-getAdnRecordsInEfForSubscriber-(I I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfByIndexForSubscriber-(I I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfBySearchForSubscriber-(I I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccSmsController;-copyMessageToIccEfForSubscriber-(I Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-getAllMessagesFromIccEfForSubscriber-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriberWithSelfPermissions-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendMultipartTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List; Z)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredMultipartText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent; Z)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriberWithSelfPermissions-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-updateMessageOnIccEfForSubscriber-(I Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/phone/CarrierConfigLoader;-getConfigForSubId-(I)Landroid/os/PersistableBundle;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/CarrierConfigLoader;-updateConfigForPhoneId-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCallForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-canChangeDtmfToneLength-()Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableVideoCalling-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCallForSubscriber-(I)Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-factoryReset-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/phone/PhoneInterfaceManager;-getCalculatedPreferredNetworkType-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconIndex-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconIndexForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconMode-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconModeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriText-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriTextForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMdn-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMin-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-(Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellNetworkScanResults-(I)Lcom/android/internal/telephony/CellNetworkScanResult;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataEnabled-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataNetworkType-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDeviceId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDeviceSoftwareVersionForSlot-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getImeiForSlot-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1AlphaTagForDisplay-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1NumberForDisplay-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLteOnCdmaMode-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLteOnCdmaModeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getMergedSubscriberIds-(Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/phone/PhoneInterfaceManager;-getNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPcscfAddress-(Ljava/lang/String; Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPreferredNetworkType-(I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getRadioAccessFamily-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getServiceStateForSubscriber-(I Ljava/lang/String;)Landroid/telephony/ServiceState;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getTetherApnRequired-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getVoiceNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmiForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccCloseLogicalChannel-(I I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccExchangeSimIO-(I I I I I I Ljava/lang/String;)[B": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccOpenLogicalChannel-(I Ljava/lang/String;)Landroid/telephony/IccOpenLogicalChannelResponse;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduBasicChannel-(I I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduLogicalChannel-(I I I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-invokeOemRilRequestRaw-([B [B)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isIdle-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isIdleForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isOffhook-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isOffhookForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRadioOn-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRadioOnForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRinging-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRingingForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isVideoCallingEnabled-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isWorldPhone-()Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvReadItem-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvResetConfig-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteCdmaPrl-([B)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteItem-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-requestModemActivityInfo-(Landroid/os/ResultReceiver;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-sendEnvelopeWithStatus-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setDataEnabled-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setImsRegistrationState-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setNetworkSelectionModeAutomatic-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setNetworkSelectionModeManual-(I Lcom/android/internal/telephony/OperatorInfo; Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setPreferredNetworkType-(I I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioForSubscriber-(I Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioPower-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-shutdownMobileRadios-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResult-(Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResultForSubscriber-(I Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResult-(Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResultForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOffForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/providers/contacts/ProfileProvider;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/AppOpsService;-checkAudioOperation-(I I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-checkOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-finishOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getOpsForPackage-(I Ljava/lang/String; [I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getPackagesForOps-([I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-noteOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-resetAllModes-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setAudioRestriction-(I I I I [Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setMode-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setUidMode-(I I I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setUserRestriction-(I Z Landroid/os/IBinder; I [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_OPS_RESTRICTIONS" ], "Lcom/android/server/AppOpsService;-startOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH", "android.permission.LOCAL_MAC_ADDRESS" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-factoryReset-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkForUid-(I Z)Landroid/net/Network;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I Z)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllVpnInfo-()[Lcom/android/internal/net/VpnInfo;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getAlwaysOnVpnPackage-(I)Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-getDefaultNetworkCapabilitiesForUser-(I)[Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLegacyVpnInfo-(I)Lcom/android/internal/net/LegacyVpnInfo;": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkPropertiesForType-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkForType-(I)Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfoForUid-(Landroid/net/Network; I Z)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredDhcpRanges-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getVpnConfig-(I)Lcom/android/internal/net/VpnConfig;": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-listenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; Landroid/os/IBinder;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-pendingListenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-pendingRequestForNetwork-(Landroid/net/NetworkCapabilities; Landroid/app/PendingIntent;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-prepareVpn-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-registerNetworkAgent-(Landroid/os/Messenger; Landroid/net/NetworkInfo; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Landroid/net/NetworkMisc;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-registerNetworkFactory-(Landroid/os/Messenger; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-reportNetworkConnectivity-(Landroid/net/Network; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-requestBandwidthUpdate-(Landroid/net/Network;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-requestNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; I Landroid/os/IBinder; I)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAcceptUnvalidated-(Landroid/net/Network; Z Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAirplaneMode-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAlwaysOnVpnPackage-(I Ljava/lang/String; Z)Z": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setProvisioningNotificationVisible-(Z I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-setVpnPackageAuthorization-(Ljava/lang/String; I Z)V": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-startNattKeepalive-(Landroid/net/Network; I Landroid/os/Messenger; Landroid/os/IBinder; Ljava/lang/String; I Ljava/lang/String;)V": [ "android.permission.PACKET_KEEPALIVE_OFFLOAD" ], "Lcom/android/server/ConnectivityService;-startTethering-(I Landroid/os/ResultReceiver; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-stopTethering-(I)V": [ "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-unregisterNetworkFactory-(Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConsumerIrService;-getCarrierFrequencies-()[I": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/ConsumerIrService;-transmit-(Ljava/lang/String; I [I)V": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistApp-(Ljava/lang/String; J I Ljava/lang/String;)V": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistAppForMms-(Ljava/lang/String; I Ljava/lang/String;)J": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistAppForSms-(Ljava/lang/String; I Ljava/lang/String;)J": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveWhitelistApp-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/DeviceIdleController$BinderService;-exitIdle-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/DeviceIdleController$BinderService;-removePowerSaveWhitelistApp-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-clearLastInputMethodWindowForTransition-(Landroid/os/IBinder;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Ljava/lang/String; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-shouldOfferSwitchingToNextInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_EXTERNAL_STORAGE" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInputOrWindowGainedFocus-(I Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/LocationManagerService;-addGnssMeasurementsListener-(Landroid/location/IGnssMeasurementsListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGnssNavigationMessageListener-(Landroid/location/IGnssNavigationMessageListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-registerGnssStatusCallback-(Landroid/location/IGnssStatusListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LockSettingsService;-checkPassword-(Ljava/lang/String; I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkPattern-(Ljava/lang/String; I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkVoldPassword-(I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-getBoolean-(Ljava/lang/String; Z I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getLong-(Ljava/lang/String; J I)J": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getSeparateProfileChallengeEnabled-(I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getString-(Ljava/lang/String; Ljava/lang/String; I)Ljava/lang/String;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getStrongAuthForUser-(I)I": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-registerStrongAuthTracker-(Landroid/app/trust/IStrongAuthTracker;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-requireStrongAuth-(I I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-resetKeyStore-(I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setBoolean-(Ljava/lang/String; Z I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPassword-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPattern-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLong-(Ljava/lang/String; J I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setSeparateProfileChallengeEnabled-(I Z Ljava/lang/String;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setString-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-systemReady-()V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-unregisterStrongAuthTracker-(Landroid/app/trust/IStrongAuthTracker;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-userPresent-(I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyPassword-(Ljava/lang/String; J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyPattern-(Ljava/lang/String; J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyTiedProfileChallenge-(Ljava/lang/String; Z J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/MmsServiceBroker$BinderService;-downloadMessage-(I Ljava/lang/String; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-sendMessage-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/server/MountService;-addUserKeyAuth-(I I [B [B)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-benchmark-(Ljava/lang/String;)J": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-clearPassword-()V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-createUserKey-(I I Z)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-destroyUserKey-(I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-destroyUserStorage-(Ljava/lang/String; I I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-encryptStorage-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixateNewestUserKeyAuth-(I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-forgetAllVolumes-()V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-forgetVolume-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-format-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getField-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-getPassword-()Ljava/lang/String;": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-getPasswordType-()I": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-getPrimaryStorageUuid-()Ljava/lang/String;": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-isConvertibleToFBE-()Z": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-lockUserKey-(I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-mount-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionMixed-(Ljava/lang/String; I)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionPrivate-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionPublic-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-prepareUserStorage-(Ljava/lang/String; I I I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-resizeSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-runMaintenance-()V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setDebugFlags-(I I)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setField-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-setPrimaryStorageUuid-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setVolumeNickname-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setVolumeUserFlags-(Ljava/lang/String; I I)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unlockUserKey-(I I [B [B)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-unmount-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToLocalNetwork-(Ljava/lang/String; Ljava/util/List;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addLegacyRouteForNetId-(I Landroid/net/RouteInfo; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-allowProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDefaultNetId-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearPermission-([I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createPhysicalNetwork-(I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createVirtualNetwork-(I Z Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-denyProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isClatdStarted-(Ljava/lang/String;)Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromLocalNetwork-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeNetwork-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultNetId-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsConfigurationForNetwork-(I [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-(Landroid/net/Network; [Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForNetwork-(I [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6NdOffload-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMtu-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setNetworkPermission-(I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setPermission-(Ljava/lang/String; [I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidCleartextNetworkPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidMeteredNetworkBlacklist-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidMeteredNetworkWhitelist-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startInterfaceForwarding-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopInterfaceForwarding-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkScoreService;-clearScores-()Z": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-disableScoring-()V": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-registerNetworkScoreCache-(I Landroid/net/INetworkScoreCache;)V": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED" ], "Lcom/android/server/NetworkScoreService;-setActiveScorer-(Ljava/lang/String;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-updateScores-([Landroid/net/ScoredNetwork;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/RecoverySystemService$BinderService;-clearBcb-()Z": [ "android.permission.RECOVERY" ], "Lcom/android/server/RecoverySystemService$BinderService;-setupBcb-(Ljava/lang/String;)Z": [ "android.permission.RECOVERY" ], "Lcom/android/server/RecoverySystemService$BinderService;-uncrypt-(Ljava/lang/String; Landroid/os/IRecoverySystemProgressListener;)Z": [ "android.permission.RECOVERY" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/TelephonyRegistry;-addOnSubscriptionsChangedListener-(Ljava/lang/String; Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listenForSubscriber-(I Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChangedForSubscriber-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallStateForPhoneId-(I I I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCarrierNetworkChange-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfoForSubscriber-(I Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocationForSubscriber-(I Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivityForSubscriber-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailedForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionForSubscriber-(I I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDisconnectCause-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChangedForPhoneId-(I I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOemHookRawEventForSubscriber-(I [B)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseCallState-(I I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceStateForPhoneId-(I I Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrengthForPhoneId-(I I Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyVoLteServiceStateChanged-(Landroid/telephony/VoLteServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(I Ljava/lang/String; J I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-(I Ljava/lang/String; [J I I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-disableSelf-()V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByAccessibilityId-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; I J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByText-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByViewId-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findFocus-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-focusSearch-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationCenterX-()F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationCenterY-()F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationRegion-()Landroid/graphics/Region;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationScale-()F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindow-(I)Landroid/view/accessibility/AccessibilityWindowInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindows-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performAccessibilityAction-(I J I Landroid/os/Bundle; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performGlobalAction-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-resetMagnification-(Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-setMagnificationScaleAndCenter-(F F F Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-setSoftKeyboardShowMode-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addAccessibilityInteractionConnection-(Landroid/view/IWindow; Landroid/view/accessibility/IAccessibilityInteractionConnection; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addClient-(Landroid/view/accessibility/IAccessibilityManagerClient; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-disableAccessibilityService-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-enableAccessibilityService-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getEnabledAccessibilityServiceList-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getInstalledAccessibilityServiceList-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getWindowToken-(I I)Landroid/os/IBinder;": [ "getWindowToken" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-interrupt-(I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-removeAccessibilityInteractionConnection-(Landroid/view/IWindow;)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-sendAccessibilityEvent-(Landroid/view/accessibility/AccessibilityEvent; I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-temporaryEnableAccessibilityStateUntilKeyguardRemoved-(Landroid/content/ComponentName; Z)V": [ "temporaryEnableAccessibilityStateUntilKeyguardRemoved" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-addSharedAccountsFromParentUser-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-copyAccountToUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-finishSessionAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/os/Bundle; Z Landroid/os/Bundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByTypeForPackage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsForPackage-(Ljava/lang/String; I Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthenticatorTypes-(I)[Landroid/accounts/AuthenticatorDescription;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService$ProcessInfoService;-getProcessStatesAndOomScoresFromPids-([I [I [I)V": [ "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE" ], "Lcom/android/server/am/ActivityManagerService$ProcessInfoService;-getProcessStatesFromPids-([I [I)V": [ "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE" ], "Lcom/android/server/am/ActivityManagerService;-appNotRespondingViaProvider-(Landroid/os/IBinder;)V": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Ljava/lang/String; I I)Z": [ "android.permission.CONFIRM_FULL_BACKUP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-bindService-(Landroid/app/IApplicationThread; Landroid/os/IBinder; Landroid/content/Intent; Ljava/lang/String; Landroid/app/IServiceConnection; I Ljava/lang/String; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-bootAnimationComplete-()V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-clearGrantedUriPermissions-(Ljava/lang/String; I)V": [ "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-createStackOnDisplay-(I)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-createVirtualActivityContainer-(Landroid/os/IBinder; Landroid/app/IActivityContainerCallback;)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-deleteActivityContainer-(Landroid/app/IActivityContainer;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-getAllStackInfos-()Ljava/util/List;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getAssistContextExtras-(I)Landroid/os/Bundle;": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getGrantedUriPermissions-(Ljava/lang/String; I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.GET_APP_GRANTED_URI_PERMISSIONS" ], "Lcom/android/server/am/ActivityManagerService;-getIntentForIntentSender-(Landroid/content/IIntentSender;)Landroid/content/Intent;": [ "android.permission.GET_INTENT_SENDER_INTENT" ], "Lcom/android/server/am/ActivityManagerService;-getPackageProcessState-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.GET_DETAILED_TASKS", "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningExternalApplications-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getStackInfo-(I)Landroid/app/ActivityManager$StackInfo;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskBounds-(I)Landroid/graphics/Rect;": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskDescriptionIcon-(Ljava/lang/String; I)Landroid/graphics/Bitmap;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnail-(I)Landroid/app/ActivityManager$TaskThumbnail;": [ "android.permission.BROADCAST_STICKY", "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-hang-(Landroid/os/IBinder; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z Ljava/lang/String;)J": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/am/ActivityManagerService;-isInHomeStack-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killPackageDependents-(Ljava/lang/String; I)V": [ "android.permission.KILL_UID" ], "Lcom/android/server/am/ActivityManagerService;-killUid-(I I Ljava/lang/String;)V": [ "android.permission.KILL_UID" ], "Lcom/android/server/am/ActivityManagerService;-launchAssistIntent-(Landroid/content/Intent; I Ljava/lang/String; I Landroid/os/Bundle;)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToDockedStack-(I I Z Z Landroid/graphics/Rect; Z)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToStack-(I I Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTasksToFullscreenStack-(I Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTopActivityToPinnedStack-(I Landroid/graphics/Rect;)Z": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-performIdleMaintenance-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-positionTaskInStack-(I I I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Landroid/app/ProfilerInfo; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerTaskStackListener-(Landroid/app/ITaskStackListener;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-registerUidObserver-(Landroid/app/IUidObserver; I)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-removeStack-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-requestAssistContextExtras-(I Lcom/android/internal/os/IResultReceiver; Landroid/os/Bundle; Landroid/os/IBinder; Z Z)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-requestBugReport-(I)V": [ "android.permission.DUMP" ], "Lcom/android/server/am/ActivityManagerService;-resizeDockedStack-(Landroid/graphics/Rect; Landroid/graphics/Rect; Landroid/graphics/Rect; Landroid/graphics/Rect; Landroid/graphics/Rect;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-resizePinnedStack-(Landroid/graphics/Rect; Landroid/graphics/Rect;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-resizeStack-(I Landroid/graphics/Rect; Z Z Z I)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-resizeTask-(I Landroid/graphics/Rect; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-restart-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-sendIdleJobTrigger-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setDumpHeapDebugLimit-(Ljava/lang/String; I J Ljava/lang/String;)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFocusedStack-(I)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-setFocusedTask-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setLenientBackgroundCheck-(Z)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setTaskDescription-(Landroid/os/IBinder; Landroid/app/ActivityManager$TaskDescription;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; Ljava/lang/String; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsCaller-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; Z I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityFromRecents-(I Landroid/os/Bundle;)I": [ "android.permission.BROADCAST_STICKY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startBinderTracking-()Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-startConfirmDeviceCredentialIntent-(Landroid/content/Intent;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-startSystemLockTaskMode-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-startUserInBackground-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-startVoiceActivity-(Ljava/lang/String; I I Landroid/content/Intent; Ljava/lang/String; Landroid/service/voice/IVoiceInteractionSession; Lcom/android/internal/app/IVoiceInteractor; I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.BIND_VOICE_INTERACTION" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-stopBinderTrackingAndDump-(Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-stopLockTaskMode-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-stopService-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-stopServiceToken-(Landroid/content/ComponentName; Landroid/os/IBinder; I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-stopSystemLockTaskMode-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Z Landroid/app/IStopUserCallback;)I": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-suppressResizeConfigChanges-(Z)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-swapDockedAndFullscreenStack-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-unbindService-(Landroid/app/IServiceConnection;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-unlockUser-(I [B [B Landroid/os/IProgressListener;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatisticsStream-()Landroid/os/ParcelFileDescriptor;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBleScanStarted-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBleScanStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothControllerActivity-(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteChangeWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteConnectivityChanged-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteDeviceIdleMode-(I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteEvent-(I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOn-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInteractive-(Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteMobileRadioPowerState-(I J I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteModemControllerActivity-(Landroid/telephony/ModemActivityInfo;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkStatsEnabled-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetAudio-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetBleScan-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetCamera-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetFlashlight-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetVideo-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartCamera-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopCamera-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOn-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWakeUp-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStartedFromSource-(Landroid/os/WorkSource; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiControllerActivity-(Landroid/net/wifi/WifiActivityEnergyInfo;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRadioPowerState-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRssiChanged-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiState-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiSupplicantStateChanged-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-takeUidSnapshot-(I)Landroid/os/health/HealthStatsParceler;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-takeUidSnapshots-([I)[Landroid/os/health/HealthStatsParceler;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getCurrentStats-(Ljava/util/List;)[B": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getStatsOverTime-(J)Landroid/os/ParcelFileDescriptor;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindAppWidgetId-(Ljava/lang/String; I I Landroid/content/ComponentName; Landroid/os/Bundle;)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent; Landroid/os/IBinder;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-createAppWidgetConfigIntentSender-(Ljava/lang/String; I I)Landroid/content/IntentSender;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-deleteAppWidgetId-(Ljava/lang/String; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetInfo-(Ljava/lang/String; I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetOptions-(Ljava/lang/String; I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetViews-(Ljava/lang/String; I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-hasBindAppWidgetPermission-(Ljava/lang/String; I)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-notifyAppWidgetViewDataChanged-(Ljava/lang/String; [I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-partiallyUpdateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-setBindAppWidgetPermission-(Ljava/lang/String; I Z)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-unbindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetOptions-(Ljava/lang/String; I Landroid/os/Bundle;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/audio/AudioService;-disableSafeMediaVolume-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-forceRemoteSubmixFullVolume-(Z Landroid/os/IBinder;)V": [ "android.permission.CAPTURE_AUDIO_OUTPUT" ], "Lcom/android/server/audio/AudioService;-notifyVolumeControllerVisible-(Landroid/media/IVolumeController; Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-registerAudioPolicy-(Landroid/media/audiopolicy/AudioPolicyConfig; Landroid/media/audiopolicy/IAudioPolicyCallback; Z)Ljava/lang/String;": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Lcom/android/server/audio/AudioService;-requestAudioFocus-(Landroid/media/AudioAttributes; I Landroid/os/IBinder; Landroid/media/IAudioFocusDispatcher; Ljava/lang/String; Ljava/lang/String; I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/audio/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setFocusPropertiesForPolicy-(I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Lcom/android/server/audio/AudioService;-setMasterMute-(Z I Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/audio/AudioService;-setMicrophoneMute-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setMode-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setRingerModeInternal-(I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Lcom/android/server/audio/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setVolumeController-(Landroid/media/IVolumeController;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-setVolumePolicy-(Landroid/media/VolumePolicy;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-startBluetoothSco-(Landroid/os/IBinder; I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-startBluetoothScoVirtualCall-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-clearBackupData-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullTransportBackup-([Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getAvailableRestoreToken-(Ljava/lang/String;)J": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDataManagementIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDataManagementLabel-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-isAppEligibleForBackup-(Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-requestBackup-([Ljava/lang/String; Landroid/app/backup/IBackupObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-restoreAtInstall-(Ljava/lang/String; I)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-cancelSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-cancelSyncAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getCache-(Ljava/lang/String; Landroid/net/Uri; I)Landroid/os/Bundle;": [ "android.permission.CACHE_CONTENT", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getCurrentSyncsAsUser-(I)Ljava/util/List;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getIsSyncableAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomaticallyAsUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAdapterPackagesForAuthorityAsUser-(Ljava/lang/String; I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypes-()[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypesAsUser-(I)[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getSyncStatusAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPendingAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-putCache-(Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; I)V": [ "android.permission.CACHE_CONTENT", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomaticallyAsUser-(Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-sync-(Landroid/content/SyncRequest;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-syncAsUser-(Landroid/content/SyncRequest; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileIntentFilter-(Landroid/content/ComponentName; Landroid/content/IntentFilter; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addPersistentPreferredActivity-(Landroid/content/ComponentName; Landroid/content/IntentFilter; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-approveCaCert-(Ljava/lang/String; I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-choosePrivateKeyAlias-(I Landroid/net/Uri; Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearCrossProfileIntentFilters-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearDeviceOwner-(Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearPackagePersistentPreferredActivities-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearProfileOwner-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createAndManageUser-(Landroid/content/ComponentName; Ljava/lang/String; Landroid/content/ComponentName; Landroid/os/PersistableBundle; I)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemApp-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemAppWithIntent-(Landroid/content/ComponentName; Landroid/content/Intent;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enforceCanManageCaCerts-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-forceRemoveActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabled-()[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabledAsUser-(I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAlwaysOnVpnPackage-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getApplicationRestrictionsManagingPackage-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAutoTimeRequired-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getBluetoothContactSharingDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getBluetoothContactSharingDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCertInstallerPackage-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileContactsSearchDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileContactsSearchDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileWidgetProviders-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerComponent-(Z)Landroid/content/ComponentName;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerName-()Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerUserId-()I": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDoNotAskCredentialsOnBoot-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getForceEphemeralUsers-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getKeepUninstalledPackages-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLockTaskPackages-(Landroid/content/ComponentName;)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLongSupportMessage-(Landroid/content/ComponentName;)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLongSupportMessageForUser-(Landroid/content/ComponentName; I)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I Z)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumTimeToLockForUserAndProfiles-(I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationColor-(Landroid/content/ComponentName;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationColorForUser-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationName-(Landroid/content/ComponentName;)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationNameForUser-(I)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I Z)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I Z)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermissionGrantState-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermissionPolicy-(Landroid/content/ComponentName;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServices-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServicesForUser-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethods-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethodsForCurrentUser-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileOwnerName-(I)Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileWithMinimumFailedPasswordsForWipe-(I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRestrictionsProvider-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getScreenCaptureDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getShortSupportMessage-(Landroid/content/ComponentName;)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getShortSupportMessageForUser-(Landroid/content/ComponentName; I)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryptionStatus-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; I Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getUserProvisioningState-()I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getUserRestrictions-(Landroid/content/ComponentName;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getWifiMacAddress-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasUserSetupCompleted-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installCaCert-(Landroid/content/ComponentName; [B)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installKeyPair-(Landroid/content/ComponentName; [B [B [B Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAccessibilityServicePermittedByAdmin-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isActivePasswordSufficient-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAffiliatedUser-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isCaCertApproved-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isCallerApplicationRestrictionsManagingPackage-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isInputMethodPermittedByAdmin-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isLockTaskPermitted-(Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isManagedProfile-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isMasterVolumeMuted-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isPackageSuspended-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isProfileActivePasswordSufficientForParent-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isProvisioningAllowed-(Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isRemovingAdmin-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isSecurityLoggingEnabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isSystemOnlyUser-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isUninstallInQueue-(Ljava/lang/String;)Z": [ "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-lockNow-(Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyLockTaskModeChanged-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyPendingSystemUpdate-(J)V": [ "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reboot-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeKeyPair-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportFailedFingerprintAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportKeyguardDismissed-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportKeyguardSecured-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportSuccessfulFingerprintAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-requestBugreport-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-retrievePreRebootSecurityLogs-(Landroid/content/ComponentName;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-retrieveSecurityLogs-(Landroid/content/ComponentName;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAccountManagementDisabled-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAffiliationIds-(Landroid/content/ComponentName; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAlwaysOnVpnPackage-(Landroid/content/ComponentName; Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationRestrictionsManagingPackage-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAutoTimeRequired-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setBluetoothContactSharingDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCertInstallerPackage-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCrossProfileCallerIdDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCrossProfileContactsSearchDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceOwner-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceOwnerLockScreenInfo-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setForceEphemeralUsers-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeepUninstalledPackages-(Landroid/content/ComponentName; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabled-(Landroid/content/ComponentName; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setLockTaskPackages-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setLongSupportMessage-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMasterVolumeMuted-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setOrganizationColor-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setOrganizationColorForUser-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setOrganizationName-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPackagesSuspended-(Landroid/content/ComponentName; [Ljava/lang/String; Z)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermissionGrantState-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermissionPolicy-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedAccessibilityServices-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedInputMethods-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileEnabled-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileName-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileOwner-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRecommendedGlobalProxy-(Landroid/content/ComponentName; Landroid/net/ProxyInfo;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRestrictionsProvider-(Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setScreenCaptureDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSecureSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSecurityLoggingEnabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setShortSupportMessage-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStatusBarDisabled-(Landroid/content/ComponentName; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSystemUpdatePolicy-(Landroid/content/ComponentName; Landroid/app/admin/SystemUpdatePolicy;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; Landroid/os/PersistableBundle; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserIcon-(Landroid/content/ComponentName; Landroid/graphics/Bitmap;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserProvisioningState-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserRestriction-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-switchUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-uninstallCaCerts-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-uninstallPackageWithActiveAdmins-(Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-wipeData-(I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-createVirtualDisplay-(Landroid/hardware/display/IVirtualDisplayCallback; Landroid/media/projection/IMediaProjection; Ljava/lang/String; Ljava/lang/String; I I I Landroid/view/Surface; I)I": [ "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "android.permission.CAPTURE_VIDEO_OUTPUT" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-pauseWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-requestColorTransform-(I I)V": [ "android.permission.CONFIGURE_DISPLAY_COLOR_TRANSFORM" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-resumeWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-startWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-stopWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-addListener-(Landroid/net/IEthernetServiceListener;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-getConfiguration-()Landroid/net/IpConfiguration;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-isAvailable-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-removeListener-(Landroid/net/IEthernetServiceListener;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-setConfiguration-(Landroid/net/IpConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-authenticate-(Landroid/os/IBinder; J I Landroid/hardware/fingerprint/IFingerprintServiceReceiver; I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT", "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-cancelAuthentication-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-cancelEnrollment-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-enroll-(Landroid/os/IBinder; [B I Landroid/hardware/fingerprint/IFingerprintServiceReceiver; I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-getEnrolledFingerprints-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-hasEnrolledFingerprints-(I Ljava/lang/String;)Z": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-isHardwareDetected-(J Ljava/lang/String;)Z": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-postEnroll-(Landroid/os/IBinder;)I": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-preEnroll-(Landroid/os/IBinder;)J": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-remove-(Landroid/os/IBinder; I I I Landroid/hardware/fingerprint/IFingerprintServiceReceiver;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-rename-(I I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-resetTimeout-([B)V": [ "android.permission.RESET_FINGERPRINT_LOCKOUT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-setActiveUser-(I)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addDeviceEventListener-(Landroid/hardware/hdmi/IHdmiDeviceEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHdmiMhlVendorCommandListener-(Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addVendorCommandListener-(Landroid/hardware/hdmi/IHdmiVendorCommandListener; I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-canChangeSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-clearTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-deviceSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getActiveSource-()Landroid/hardware/hdmi/HdmiDeviceInfo;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getDeviceList-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getInputDevices-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getPortInfo-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSupportedTypes-()[I": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-oneTouchPlay-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-portSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-queryDisplayStatus-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendKeyEvent-(I I Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendMhlVendorCommand-(I I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendStandby-(I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendVendorCommand-(I I [B Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setArcMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setHdmiRecordListener-(Landroid/hardware/hdmi/IHdmiRecordListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setInputChangeListener-(Landroid/hardware/hdmi/IHdmiInputChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setProhibitMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMode-(Z Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMute-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioVolume-(I I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startOneTouchRecord-(I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-stopOneTouchRecord-(I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-isInTabletMode-()I": [ "android.permission.TABLET_MODE" ], "Lcom/android/server/input/InputManagerService;-registerTabletModeChangedListener-(Landroid/hardware/input/ITabletModeChangedListener;)V": [ "android.permission.TABLET_MODE" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Landroid/view/inputmethod/InputMethodInfo; Landroid/view/inputmethod/InputMethodSubtype; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setTouchCalibrationForInputDevice-(Ljava/lang/String; I Landroid/hardware/input/TouchCalibration;)V": [ "android.permission.SET_INPUT_CALIBRATION" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;-schedule-(Landroid/app/job/JobInfo;)I": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;-scheduleAsPackage-(Landroid/app/job/JobInfo; Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/media/MediaRouterService;-registerClientAsUser-(Landroid/media/IMediaRouterClient; Ljava/lang/String; I)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/media/MediaSessionRecord$SessionStub;-setFlags-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-addCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-createProjection-(I Ljava/lang/String; I Z)Landroid/media/projection/IMediaProjection;": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-getActiveProjectionInfo-()Landroid/media/projection/MediaProjectionInfo;": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-removeCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-stopActiveProjection-()V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/net/NetworkPolicyManagerService;-addRestrictBackgroundWhitelistedUid-(I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-addUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-factoryReset-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-(Ljava/lang/String;)[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackgroundByCaller-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackgroundWhitelistedUids-()[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-onTetheringChanged-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-removeRestrictBackgroundWhitelistedUid-(I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-removeUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setConnectivityListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setDeviceIdleMode-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdateIfaces-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-registerUsageCallback-(Ljava/lang/String; Landroid/net/DataUsageRequest; Landroid/os/Messenger; Landroid/os/IBinder;)Landroid/net/DataUsageRequest;": [ "android.permission.PACKAGE_USAGE_STATS", "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageInstallerService;-setPermissionsResult-(I Z)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageInstallerService;-uninstall-(Ljava/lang/String; Ljava/lang/String; I Landroid/content/IntentSender; I)V": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-addCrossProfileIntentFilter-(Landroid/content/IntentFilter; Ljava/lang/String; I I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-addOnPermissionsChangeListener-(Landroid/content/pm/IOnPermissionsChangeListener;)V": [ "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-canForwardTo-(Landroid/content/Intent; Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearCrossProfileIntentFilters-(I Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFilesAsUser-(Ljava/lang/String; I Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver2; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deletePackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PACKAGE_VERIFICATION_AGENT", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-flushPackageRestrictionsAsUser-(I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(Ljava/lang/String; J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(Ljava/lang/String; J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationHiddenSettingAsUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getHomeActivities-(Ljava/util/List;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getMoveStatus-(I)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-getPackageGids-(Ljava/lang/String; I I)[I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPermissionFlags-(Ljava/lang/String; Ljava/lang/String; I)I": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantRuntimePermission-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackageAsUser-(Ljava/lang/String; I)I": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-isEphemeralApplication-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPackageAvailable-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPackageSuspendedForUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPermissionRevokedByPolicy-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MOVE_PACKAGE", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-movePrimaryStorage-(Ljava/lang/String;)I": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentContentProviders-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-registerMoveCallback-(Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetApplicationPreferences-(I)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetRuntimePermissions-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokeRuntimePermission-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationHiddenSettingAsUser-(Ljava/lang/String; Z I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setBlockUninstallForUser-(Ljava/lang/String; Z I)Z": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setDefaultBrowserPackageName-(Ljava/lang/String; I)Z": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setHomeActivity-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I Landroid/content/IntentFilter; I Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPackagesSuspendedAsUser-([Ljava/lang/String; Z I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-shouldShowRequestPermissionRationale-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-systemReady-()V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-unregisterMoveCallback-(Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-updateExternalMediaStatus-(Z Z)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-updateIntentVerificationStatus-(Ljava/lang/String; I I)Z": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-updatePermissionFlags-(Ljava/lang/String; Ljava/lang/String; I I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-updatePermissionFlagsForAllApps-(I I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyIntentFilter-(I I Ljava/util/List;)V": [ "android.permission.INTENT_FILTER_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PACKAGE_VERIFICATION_AGENT", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/ShortcutService;-onApplicationActive-(Ljava/lang/String; I)V": [ "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLockWithUid-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-boostScreenBrightness-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-goToSleep-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-powerHint-(I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT", "android.permission.RECOVERY" ], "Lcom/android/server/power/PowerManagerService$BinderService;-rebootSafeMode-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setPowerSaveMode-(Z)Z": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-shutdown-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockUids-(Landroid/os/IBinder; [I)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-wakeUp-(J Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-addPrintJobStateChangeListener-(Landroid/print/IPrintJobStateChangeListener; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-cancelPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfo-(Landroid/print/PrintJobId; I I)Landroid/print/PrintJobInfo;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfos-(I I)Ljava/util/List;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-print-(Ljava/lang/String; Landroid/print/IPrintDocumentAdapter; Landroid/print/PrintAttributes; Ljava/lang/String; I I)Landroid/os/Bundle;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-restartPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-(Ljava/lang/String;)[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-deleteSoundModel-(Landroid/os/ParcelUuid;)V": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-getSoundModel-(Landroid/os/ParcelUuid;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-startRecognition-(Landroid/os/ParcelUuid; Landroid/hardware/soundtrigger/IRecognitionStatusCallback; Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-stopRecognition-(Landroid/os/ParcelUuid; Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)I": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-updateSoundModel-(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)V": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/statusbar/StatusBarManagerService;-addTile-(Landroid/content/ComponentName;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-clearNotificationEffects-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-clickTile-(Landroid/content/ComponentName;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable2-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable2ForUser-(I Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disableForUser-(I Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandSettingsPanel-(Ljava/lang/String;)V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onClearAllNotifications-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationActionClick-(Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationExpansionChanged-(Ljava/lang/String; Z Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationVisibilityChanged-([Lcom/android/internal/statusbar/NotificationVisibility; [Lcom/android/internal/statusbar/NotificationVisibility;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelHidden-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelRevealed-(Z I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Ljava/util/List; Ljava/util/List; [I Ljava/util/List; Landroid/graphics/Rect; Landroid/graphics/Rect;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-remTile-(Landroid/content/ComponentName;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setSystemUiVisibility-(I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-acquireTvInputHardware-(I Landroid/media/tv/ITvInputHardwareCallback; Landroid/media/tv/TvInputInfo; I)Landroid/media/tv/ITvInputHardware;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-addBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-captureFrame-(Ljava/lang/String; Landroid/view/Surface; Landroid/media/tv/TvStreamConfig; I)Z": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getAvailableTvStreamConfigList-(Ljava/lang/String; I)Ljava/util/List;": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getDvbDeviceList-()Ljava/util/List;": [ "android.permission.DVB_DEVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getHardwareList-()Ljava/util/List;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-openDvbDevice-(Landroid/media/tv/DvbDeviceInfo; I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.DVB_DEVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-releaseTvInputHardware-(I Landroid/media/tv/ITvInputHardware; I)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-removeBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-setParentalControlsEnabled-(Z I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-unblockContent-(Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHardwareInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHdmiInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-removeHardwareInput-(Ljava/lang/String;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-onCarrierPrivilegedAppsChanged-()V": [ "android.permission.BIND_CARRIER_SERVICES" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryConfigurationStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryEvents-(J J Ljava/lang/String;)Landroid/app/usage/UsageEvents;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryUsageStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-setAppInactive-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_APP_IDLE_STATE" ], "Lcom/android/server/usb/UsbService;-allowUsbDebugging-(Z Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearUsbDebuggingKeys-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-denyUsbDebugging-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-getPortStatus-(Ljava/lang/String;)Landroid/hardware/usb/UsbPortStatus;": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-getPorts-()[Landroid/hardware/usb/UsbPort;": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String; I)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-isFunctionEnabled-(Ljava/lang/String;)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setPortRoles-(Ljava/lang/String; I I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setUsbDataUnlocked-(Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-activeServiceSupportsAssist-()Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-activeServiceSupportsLaunchFromKeyguard-()Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-deleteKeyphraseSoundModel-(I Ljava/lang/String;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-getActiveServiceComponentName-()Landroid/content/ComponentName;": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-getKeyphraseSoundModel-(I Ljava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-hideCurrentSession-()V": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-isSessionRunning-()Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-launchVoiceAssistFromKeyguard-()V": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-onLockscreenShown-()V": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-showSessionForActiveService-(Landroid/os/Bundle; I Lcom/android/internal/app/IVoiceInteractionSessionShowCallback; Landroid/os/IBinder;)Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-updateKeyphraseSoundModel-(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-clearWallpaper-(Ljava/lang/String; I I)V": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDimensionHints-(I I Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDisplayPadding-(Landroid/graphics/Rect; Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setLockWallpaperCallback-(Landroid/app/IWallpaperManagerCallback;)Z": [ "android.permission.INTERNAL_SYSTEM_WINDOW" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaper-(Ljava/lang/String; Ljava/lang/String; Landroid/graphics/Rect; Z Landroid/os/Bundle; I Landroid/app/IWallpaperManagerCallback;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponentChecked-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/webkit/WebViewUpdateService$BinderService;-changeProviderAndSetting-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/webkit/WebViewUpdateService$BinderService;-enableFallbackLogic-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disableEphemeralNetwork-(Ljava/lang/String;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableAggressiveHandover-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableVerboseLogging-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableWifiConnectivityManager-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-factoryReset-()V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAggressiveHandover-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAllowScansWithTraffic-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionStatistics-()Landroid/net/wifi/WifiConnectionStatistics;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getCountryCode-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getCurrentNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getEnableAutoJoinWhenAssociated-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getMatchingWifiConfig-(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getPrivilegedConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PEERS_MAC_ADDRESS", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/wifi/WifiServiceImpl;-getSupportedFeatures-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getVerboseLoggingLevel-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWpsNfcConfigurationToken-(I)Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reportActivityInfo-()Landroid/net/wifi/WifiActivityEnergyInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-requestActivityInfo-(Landroid/os/ResultReceiver;)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setAllowScansWithTraffic-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-setEnableAutoJoinWhenAssociated-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-startScan-(Landroid/net/wifi/ScanSettings; Landroid/os/WorkSource;)V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiServiceImpl;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getP2pStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.LOCATION_HARDWARE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-setMiracastMode-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I I Z Z I I Z Z Landroid/graphics/Rect; Landroid/content/res/Configuration; I Z Z I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplayDensity-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplaySize-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearWindowContentFrameStats-(Landroid/os/IBinder;)Z": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getWindowContentFrameStats-(Landroid/os/IBinder;)Landroid/view/WindowContentFrameStats;": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-keyguardGoingAway-(I)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-lockNow-(Landroid/os/Bundle;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/wm/WindowManagerService;-notifyAppStopped-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-registerDockedStackListener-(Landroid/view/IDockedStackListener;)V": [ "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS" ], "Lcom/android/server/wm/WindowManagerService;-registerShortcutKey-(J Lcom/android/internal/policy/IShortcutService;)V": [ "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-requestAssistScreenshot-(Lcom/android/internal/app/IAssistScreenshotReceiver;)Z": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I F)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I I Landroid/os/IBinder; Z)Z": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppTask-(Landroid/os/IBinder; I I Landroid/graphics/Rect; Landroid/content/res/Configuration; I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayDensity-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayScalingMode-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplaySize-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)[I": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setOverscan-(I I I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-stopLockTask-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/JobSchedulerImpl;-schedule-(Landroid/app/job/JobInfo;)I": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Service;-stopSelf-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Service;-stopSelf-(I)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Service;-stopSelfResult-(I)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-clear-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap; Landroid/graphics/Rect; Z)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap; Landroid/graphics/Rect; Z I)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I I)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream; Landroid/graphics/Rect; Z)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream; Landroid/graphics/Rect; Z I)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/admin/DevicePolicyManager;-getWifiMacAddress-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupManager;-dataChanged-()V": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Landroid/app/backup/BackupManager;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH", "android.permission.BROADCAST_STICKY" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeAdvertiser-()Landroid/bluetooth/le/BluetoothLeAdvertiser;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeScanner-()Landroid/bluetooth/le/BluetoothLeScanner;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BROADCAST_STICKY" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isMultipleAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-([Ljava/util/UUID; Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-stopLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback; I)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createBond-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getType-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-setPairingConfirmation-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-setPin-([B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-beginReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-connect-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-disconnect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-discoverServices-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-executeReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readRemoteRssi-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestConnectionPriority-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestMtu-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-setCharacteristicNotification-(Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-addService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-cancelConnection-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-clearServices-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-connect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-notifyCharacteristicChanged-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-removeService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-sendResponse-(Landroid/bluetooth/BluetoothDevice; I I I [B)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectedDevices-(I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectionState-(Landroid/bluetooth/BluetoothDevice; I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getDevicesMatchingConnectionStates-(I [I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-openGattServer-(Landroid/content/Context; Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-stopAdvertising-(Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/le/BluetoothLeScanner;-flushPendingScanResults-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Ljava/util/List; Landroid/bluetooth/le/ScanSettings; Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-stopScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/hardware/ConsumerIrManager;-getCarrierFrequencies-()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/ConsumerIrManager;-transmit-(I [I)V": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/fingerprint/FingerprintManager;-authenticate-(Landroid/hardware/fingerprint/FingerprintManager$CryptoObject; Landroid/os/CancellationSignal; I Landroid/hardware/fingerprint/FingerprintManager$AuthenticationCallback; Landroid/os/Handler;)V": [ "android.permission.USE_FINGERPRINT" ], "Landroid/hardware/fingerprint/FingerprintManager;-hasEnrolledFingerprints-()Z": [ "android.permission.USE_FINGERPRINT" ], "Landroid/hardware/fingerprint/FingerprintManager;-isHardwareDetected-()Z": [ "android.permission.USE_FINGERPRINT" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/OnNmeaMessageListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/OnNmeaMessageListener; Landroid/os/Handler;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-registerGnssStatusCallback-(Landroid/location/GnssStatus$Callback;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-registerGnssStatusCallback-(Landroid/location/GnssStatus$Callback; Landroid/os/Handler;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-adjustStreamVolume-(I I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMicrophoneMute-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setStreamMute-(I Z)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-setStreamVolume-(I I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaRouter$RouteGroup;-requestSetVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteGroup;-requestUpdateVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteInfo;-requestSetVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteInfo;-requestUpdateVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaScannerConnection;-disconnect-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setAudioAttributes-(Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/browse/MediaBrowser;-disconnect-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/ConnectivityManager;-getActiveNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getRestrictBackgroundStatus-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-registerDefaultNetworkCallback-(Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-reportBadNetwork-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-reportNetworkConnectivity-(Landroid/net/Network; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-requestBandwidthUpdate-(Landroid/net/Network;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-onRevoke-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-cancelWps-(Landroid/net/wifi/WifiManager$WpsCallback;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-is5GHzBandSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isDeviceToApRttSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isEnhancedPowerReportingSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isP2pSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isPreferredNetworkOffloadSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isTdlsSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startWps-(Landroid/net/wifi/WpsInfo; Landroid/net/wifi/WifiManager$WpsCallback;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; [J I Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; J Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/security/KeyChain;-getCertificateChain-(Landroid/content/Context; Ljava/lang/String;)[Ljava/security/cert/X509Certificate;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/security/KeyChain;-getPrivateKey-(Landroid/content/Context; Ljava/lang/String;)Ljava/security/PrivateKey;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-dispatchGenericMotionEvent-(Landroid/view/MotionEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchKeyEvent-(Landroid/view/KeyEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchKeyShortcutEvent-(Landroid/view/KeyEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchTouchEvent-(Landroid/view/MotionEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchTrackballEvent-(Landroid/view/MotionEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-finish-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-onWakeUp-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-wakeUp-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/quicksettings/TileService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/quicksettings/TileService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/quicksettings/TileService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/SpeechRecognizer;-destroy-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getAvailableLanguages-()Ljava/util/Set;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getDefaultLanguage-()Ljava/util/Locale;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getDefaultVoice-()Landroid/speech/tts/Voice;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getFeatures-(Ljava/util/Locale;)Ljava/util/Set;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getLanguage-()Ljava/util/Locale;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getVoice-()Landroid/speech/tts/Voice;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getVoices-()Ljava/util/Set;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-isLanguageAvailable-(Ljava/util/Locale;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-isSpeaking-()Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playEarcon-(Ljava/lang/String; I Landroid/os/Bundle; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playEarcon-(Ljava/lang/String; I Ljava/util/HashMap;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playSilence-(J I Ljava/util/HashMap;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playSilentUtterance-(J I Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-setLanguage-(Ljava/util/Locale;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-setVoice-(Landroid/speech/tts/Voice;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-shutdown-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-speak-(Ljava/lang/CharSequence; I Landroid/os/Bundle; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-speak-(Ljava/lang/String; I Ljava/util/HashMap;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-stop-()I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-synthesizeToFile-(Ljava/lang/CharSequence; Landroid/os/Bundle; Ljava/io/File; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-synthesizeToFile-(Ljava/lang/String; Ljava/util/HashMap; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/telephony/PhoneNumberUtils;-isVoiceMailNumber-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/SmsManager;-downloadMultimediaMessage-(Landroid/content/Context; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultimediaMessage-(Landroid/content/Context; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-(I)Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/TelephonyManager;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getIccAuthentication-(I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getPhoneCount-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getSimState-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/inputmethod/InputMethodManager;-showInputMethodAndSubtypeEnabler-(Ljava/lang/String;)V": [ "android.permission.READ_EXTERNAL_STORAGE" ], "Landroid/widget/VideoView;-getAudioSessionId-()I": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri; Ljava/util/Map;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ] } ================================================ FILE: libs/androguard/core/api_specific_resources/api_permission_mappings/permissions_25.json ================================================ { "Landroid/hardware/location/ActivityRecognitionHardware;-disableActivityEvent-(Ljava/lang/String; I)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-enableActivityEvent-(Ljava/lang/String; I J)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-flush-()Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-getSupportedActivities-()[Ljava/lang/String;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-isActivitySupported-(Ljava/lang/String;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-registerSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ActivityRecognitionHardware;-unregisterSink-(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-findNanoAppOnHub-(I Landroid/hardware/location/NanoAppFilter;)[I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-getContextHubHandles-()[I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-getContextHubInfo-(I)Landroid/hardware/location/ContextHubInfo;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-getNanoAppInstanceInfo-(I)Landroid/hardware/location/NanoAppInstanceInfo;": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-loadNanoApp-(I Landroid/hardware/location/NanoApp;)I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-registerCallback-(Landroid/hardware/location/IContextHubCallback;)I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-sendMessage-(I I Landroid/hardware/location/ContextHubMessage;)I": [ "android.permission.LOCATION_HARDWARE" ], "Landroid/hardware/location/ContextHubService;-unloadNanoApp-(I)I": [ "android.permission.LOCATION_HARDWARE" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dp/A2dpService$BluetoothA2dpBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getAudioConfig-(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAudioConfig;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/a2dpsink/A2dpSinkService$BluetoothA2dpSinkBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getMetadata-(Landroid/bluetooth/BluetoothDevice;)Landroid/media/MediaMetadata;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getPlaybackState-(Landroid/bluetooth/BluetoothDevice;)Landroid/media/session/PlaybackState;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-getPlayerSettings-(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothAvrcpPlayerSettings;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-sendGroupNavigationCmd-(Landroid/bluetooth/BluetoothDevice; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-sendPassThroughCmd-(Landroid/bluetooth/BluetoothDevice; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/avrcp/AvrcpControllerService$BluetoothAvrcpControllerBinder;-setPlayerApplicationSetting-(Landroid/bluetooth/BluetoothAvrcpPlayerSettings;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelBondProcess-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-configHciSnoopLog-(Z)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-connectSocket-(Landroid/bluetooth/BluetoothDevice; I Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBond-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createBondOutOfBand-(Landroid/bluetooth/BluetoothDevice; I Landroid/bluetooth/OobData;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-createSocketChannel-(I Ljava/lang/String; Landroid/os/ParcelUuid; I I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-factoryReset-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-fetchRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAdapterConnectionState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getBondedDevices-()[Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getDiscoverableTimeout-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteAlias-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteClass-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteName-(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteType-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getRemoteUuids-(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getSimAccessPermission-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isActivityAndEnergyReportingSupported-()Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isMultiAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-removeBond-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-reportActivityInfo-()Landroid/bluetooth/BluetoothActivityEnergyInfo;": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-requestActivityInfo-(Landroid/os/ResultReceiver;)V": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sdpSearch-(Landroid/bluetooth/BluetoothDevice; Landroid/os/ParcelUuid;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-sendConnectionStateChange-(Landroid/bluetooth/BluetoothDevice; I I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setDiscoverableTimeout-(I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setMessageAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPairingConfirmation-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPasskey-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPhonebookAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setPin-(Landroid/bluetooth/BluetoothDevice; Z I [B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setRemoteAlias-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setScanMode-(I I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-setSimAccessPermission-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/btservice/AdapterService$AdapterServiceBinder;-startDiscovery-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addCharacteristic-(I Landroid/os/ParcelUuid; I I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addDescriptor-(I Landroid/os/ParcelUuid; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-addIncludedService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginReliableWrite-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-beginServiceDeclaration-(I I I I Landroid/os/ParcelUuid; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clearServices-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-clientDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-configureMTU-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-connectionParameterUpdate-(I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-disconnectAll-()V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-discoverServices-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endReliableWrite-(I Ljava/lang/String; Z)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-endServiceDeclaration-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-numHwTrackFiltersAvailable-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readCharacteristic-(I Ljava/lang/String; I I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readDescriptor-(I Ljava/lang/String; I I)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-readRemoteRssi-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-refreshDevice-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerClient-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerForNotification-(I Ljava/lang/String; I Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-registerServer-(Landroid/os/ParcelUuid; Landroid/bluetooth/IBluetoothGattServerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-removeService-(I I I Landroid/os/ParcelUuid;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendNotification-(I Ljava/lang/String; I I Landroid/os/ParcelUuid; I Landroid/os/ParcelUuid; Z [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-sendResponse-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverConnect-(I Ljava/lang/String; Z I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-serverDisconnect-(I Ljava/lang/String;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startMultiAdvertising-(I Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseSettings;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-startScan-(I Z Landroid/bluetooth/le/ScanSettings; Ljava/util/List; Landroid/os/WorkSource; Ljava/util/List; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.BLUETOOTH_ADMIN", "android.permission.BLUETOOTH_PRIVILEGED", "android.permission.PEERS_MAC_ADDRESS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopMultiAdvertising-(I)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-stopScan-(I Z)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregAll-()V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterClient-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-unregisterServer-(I)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeCharacteristic-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/gatt/GattService$BluetoothGattBinder;-writeDescriptor-(I Ljava/lang/String; I I I [B)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_PRIVILEGED" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSink-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getConnectedHealthDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDeviceConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getHealthDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-registerAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration; Landroid/bluetooth/IBluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hdp/HealthService$BluetoothHealthBinder;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-bindResponse-(I Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-clccResponse-(I I I I Z Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-enableWBS-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-isAudioOn-()Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-phoneStateChanged-(I I I Ljava/lang/String; I)V": [ "android.permission.BLUETOOTH_ADMIN", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfp/HeadsetService$BluetoothHeadsetBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-acceptCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-connectAudio-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dial-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-dialMemory-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-disconnectAudio-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-enterPrivateMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-explicitCallTransfer-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgEvents-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentAgFeatures-(Landroid/bluetooth/BluetoothDevice;)Landroid/os/Bundle;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getCurrentCalls-(Landroid/bluetooth/BluetoothDevice;)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getLastVoiceTagNumber-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-holdCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-redial-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-rejectCall-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-sendDTMF-(Landroid/bluetooth/BluetoothDevice; B)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hfpclient/HeadsetClientService$BluetoothHeadsetClientBinder;-terminateCall-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getProtocolMode-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-getReport-(Landroid/bluetooth/BluetoothDevice; B B I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-sendData-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setProtocolMode-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-setReport-(Landroid/bluetooth/BluetoothDevice; B Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/hid/HidService$BluetoothInputDeviceBinder;-virtualUnplug-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getClient-()Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/map/BluetoothMapService$BluetoothMapBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pan/PanService$BluetoothPanBinder;-setBluetoothTethering-(Z)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/pbapclient/PbapClientService$BluetoothPbapClientBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-connect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-disconnect-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getClient-()Landroid/bluetooth/BluetoothDevice;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getPriority-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-getState-()I": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-isConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/bluetooth/sap/SapService$SapBinder;-setPriority-(Landroid/bluetooth/BluetoothDevice; I)Z": [ "android.permission.BLUETOOTH" ], "Lcom/android/car/CarRadioService;-setPreset-(Landroid/car/hardware/radio/CarRadioPreset;)Z": [ "android.car.permission.CAR_RADIO" ], "Lcom/android/car/ICarImpl;-getCarService-(Ljava/lang/String;)Landroid/os/IBinder;": [ "android.car.permission.CAR_CAMERA", "android.car.permission.CAR_HVAC", "android.car.permission.CAR_MOCK_VEHICLE_HAL", "android.car.permission.CAR_NAVIGATION_MANAGER", "android.car.permission.CAR_PROJECTION", "android.car.permission.CAR_RADIO" ], "Lcom/android/car/pm/CarPackageManagerService;-setAppBlockingPolicy-(Ljava/lang/String; Landroid/car/content/pm/CarAppBlockingPolicy; I)V": [ "android.car.permission.CONTROL_APP_BLOCKING" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getCompleteVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getCompleteVoiceMailNumberForSubscriber-(I)Ljava/lang/String;": [ "android.permission.CALL_PRIVILEGED" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceIdForPhone-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceSvn-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getDeviceSvnUsingSubId-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getGroupIdLevel1-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getGroupIdLevel1ForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIccSerialNumber-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIccSerialNumberForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIccSimChallengeResponse-(I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getImeiForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimChallengeResponse-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimDomain-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimImpi-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimImpu-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimIst-()Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getIsimPcscf-()[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1AlphaTag-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1AlphaTagForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1Number-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getLine1NumberForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getMsisdn-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getMsisdnForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getNaiForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getSubscriberId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getSubscriberIdForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailAlphaTag-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailAlphaTagForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailNumber-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/PhoneSubInfoController;-getVoiceMailNumberForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-addSubInfoRecord-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearDefaultsForInactiveSubIds-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-clearSubInfo-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubInfoCount-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfo-(I Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForIccId-(Ljava/lang/String; Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoForSimSlotIndex-(I Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getActiveSubscriptionInfoList-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoCount-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getAllSubInfoList-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-getSubscriptionProperty-(I Ljava/lang/String; Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDataRoaming-(I I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultDataSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultSmsSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDefaultVoiceSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayName-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNameUsingSrc-(Ljava/lang/String; I J)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setDisplayNumber-(Ljava/lang/String; I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setIconTint-(I I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/SubscriptionController;-setSubscriptionProperty-(I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-getAdnRecordsInEf-(I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-getAdnRecordsInEfForSubscriber-(I I)Ljava/util/List;": [ "android.permission.READ_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfByIndex-(I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfByIndexForSubscriber-(I I Ljava/lang/String; Ljava/lang/String; I Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfBySearch-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccPhoneBookController;-updateAdnRecordsInEfBySearchForSubscriber-(I I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.WRITE_CONTACTS" ], "Lcom/android/internal/telephony/UiccSmsController;-copyMessageToIccEfForSubscriber-(I Ljava/lang/String; I [B [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-disableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastForSubscriber-(I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-enableCellBroadcastRangeForSubscriber-(I I I I)Z": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-getAllMessagesFromIccEfForSubscriber-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.RECEIVE_SMS" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendDataForSubscriberWithSelfPermissions-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; I [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendMultipartTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/util/List; Ljava/util/List; Ljava/util/List; Z)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredMultipartText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Ljava/util/List; Ljava/util/List;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendStoredText-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriber-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent; Z)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-sendTextForSubscriberWithSelfPermissions-(I Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent; Z)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS", "android.permission.SEND_SMS_NO_CONFIRMATION" ], "Lcom/android/internal/telephony/UiccSmsController;-updateMessageOnIccEfForSubscriber-(I Ljava/lang/String; I I [B)Z": [ "android.permission.RECEIVE_SMS", "android.permission.SEND_SMS" ], "Lcom/android/phone/CarrierConfigLoader;-getConfigForSubId-(I)Landroid/os/PersistableBundle;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/CarrierConfigLoader;-notifyConfigChangedForSubId-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/CarrierConfigLoader;-updateConfigForPhoneId-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCall-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-answerRingingCallForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-call-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-carrierActionSetMeteredApnsEnabled-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-carrierActionSetRadioEnabled-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-disableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableDataConnectivity-()Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdates-()V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableLocationUpdatesForSubscriber-(I)V": [ "android.permission.CONTROL_LOCATION_UPDATES" ], "Lcom/android/phone/PhoneInterfaceManager;-enableVideoCalling-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCall-()Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-endCallForSubscriber-(I)Z": [ "android.permission.CALL_PHONE" ], "Lcom/android/phone/PhoneInterfaceManager;-factoryReset-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAidForAppType-(I I)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/phone/PhoneInterfaceManager;-getAllowedCarriers-(I)Ljava/util/List;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCalculatedPreferredNetworkType-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconIndex-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconIndexForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconMode-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriIconModeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriText-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaEriTextForSubscriber-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMdn-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaMin-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCdmaPrlVersion-(I)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellLocation-(Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.ACCESS_FINE_LOCATION", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/phone/PhoneInterfaceManager;-getCellNetworkScanResults-(I)Lcom/android/internal/telephony/CellNetworkScanResult;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataEnabled-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataNetworkType-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDataNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDeviceId-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getDeviceSoftwareVersionForSlot-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getEsn-(I)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getImeiForSlot-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1AlphaTagForDisplay-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLine1NumberForDisplay-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLteOnCdmaMode-(Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getLteOnCdmaModeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getMergedSubscriberIds-(Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getNeighboringCellInfo-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/phone/PhoneInterfaceManager;-getNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPcscfAddress-(Ljava/lang/String; Ljava/lang/String;)[Ljava/lang/String;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getPreferredNetworkType-(I)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getRadioAccessFamily-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getServiceStateForSubscriber-(I Ljava/lang/String;)Landroid/telephony/ServiceState;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getSystemVisualVoicemailSmsFilterSettings-(Ljava/lang/String; I)Landroid/telephony/VisualVoicemailSmsFilterSettings;": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getTelephonyHistograms-()Ljava/util/List;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getTetherApnRequired-()I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getVoiceNetworkTypeForSubscriber-(I Ljava/lang/String;)I": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-getVtDataUsage-()J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmi-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-handlePinMmiForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccCloseLogicalChannel-(I I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccExchangeSimIO-(I I I I I I Ljava/lang/String;)[B": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccOpenLogicalChannel-(I Ljava/lang/String;)Landroid/telephony/IccOpenLogicalChannelResponse;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduBasicChannel-(I I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-iccTransmitApduLogicalChannel-(I I I I I I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-invokeOemRilRequestRaw-([B [B)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isIdle-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isIdleForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isOffhook-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isOffhookForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRadioOn-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRadioOnForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRinging-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isRingingForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isVideoCallingEnabled-(Ljava/lang/String;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-isVisualVoicemailEnabled-(Ljava/lang/String; Landroid/telecom/PhoneAccountHandle;)Z": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvReadItem-(I)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvResetConfig-(I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteCdmaPrl-([B)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-nvWriteItem-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-requestModemActivityInfo-(Landroid/os/ResultReceiver;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-sendEnvelopeWithStatus-(I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setAllowedCarriers-(I Ljava/util/List;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setDataEnabled-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setImsRegistrationState-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setNetworkSelectionModeAutomatic-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setNetworkSelectionModeManual-(I Lcom/android/internal/telephony/OperatorInfo; Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setPolicyDataEnabled-(Z I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setPreferredNetworkType-(I I)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadio-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioForSubscriber-(I Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setRadioPower-(Z)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-setVisualVoicemailEnabled-(Ljava/lang/String; Landroid/telecom/PhoneAccountHandle; Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-shutdownMobileRadios-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPin-(Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinForSubscriber-(I Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResult-(Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPinReportResultForSubscriber-(I Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPuk-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResult-(Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-supplyPukReportResultForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)[I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOff-()V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/phone/PhoneInterfaceManager;-toggleRadioOnOffForSubscriber-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/providers/contacts/ContactsProvider2;-getType-(Landroid/net/Uri;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/AppOpsService;-checkAudioOperation-(I I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-checkOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-finishOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getOpsForPackage-(I Ljava/lang/String; [I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-getPackagesForOps-([I)Ljava/util/List;": [ "android.permission.GET_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-noteOperation-(I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-resetAllModes-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setAudioRestriction-(I I I I [Ljava/lang/String;)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setMode-(I I Ljava/lang/String; I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setUidMode-(I I I)V": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/AppOpsService;-setUserRestriction-(I Z Landroid/os/IBinder; I [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_APP_OPS_RESTRICTIONS" ], "Lcom/android/server/AppOpsService;-startOperation-(Landroid/os/IBinder; I I Ljava/lang/String;)I": [ "android.permission.UPDATE_APP_OPS_STATS" ], "Lcom/android/server/BluetoothManagerService;-disable-(Z)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-enableNoAutoConnect-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Lcom/android/server/BluetoothManagerService;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH", "android.permission.LOCAL_MAC_ADDRESS" ], "Lcom/android/server/BluetoothManagerService;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-registerStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterAdapter-(Landroid/bluetooth/IBluetoothManagerCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/BluetoothManagerService;-unregisterStateChangeCallback-(Landroid/bluetooth/IBluetoothStateChangeCallback;)V": [ "android.permission.BLUETOOTH" ], "Lcom/android/server/ConnectivityService;-factoryReset-()V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-getActiveLinkProperties-()Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkForUid-(I Z)Landroid/net/Network;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkInfoForUid-(I Z)Landroid/net/NetworkInfo;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getActiveNetworkQuotaInfo-()Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllNetworkState-()[Landroid/net/NetworkState;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getAllVpnInfo-()[Lcom/android/internal/net/VpnInfo;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getAlwaysOnVpnPackage-(I)Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-getDefaultNetworkCapabilitiesForUser-(I)[Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLastTetherError-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLegacyVpnInfo-(I)Lcom/android/internal/net/LegacyVpnInfo;": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getLinkPropertiesForType-(I)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getMobileProvisioningUrl-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkForType-(I)Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getNetworkInfoForUid-(Landroid/net/Network; I Z)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableBluetoothRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableUsbRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetherableWifiRegexs-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheredDhcpRanges-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-getTetheredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getTetheringErroredIfaces-()[Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-getVpnConfig-(I)Lcom/android/internal/net/VpnConfig;": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isNetworkSupported-(I)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-isTetheringSupported-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-listenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; Landroid/os/IBinder;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-pendingListenForNetwork-(Landroid/net/NetworkCapabilities; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-pendingRequestForNetwork-(Landroid/net/NetworkCapabilities; Landroid/app/PendingIntent;)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" ], "Lcom/android/server/ConnectivityService;-prepareVpn-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-registerNetworkAgent-(Landroid/os/Messenger; Landroid/net/NetworkInfo; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Landroid/net/NetworkMisc;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-registerNetworkFactory-(Landroid/os/Messenger; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-reportInetCondition-(I I)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-reportNetworkConnectivity-(Landroid/net/Network; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Lcom/android/server/ConnectivityService;-requestBandwidthUpdate-(Landroid/net/Network;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ConnectivityService;-requestNetwork-(Landroid/net/NetworkCapabilities; Landroid/os/Messenger; I Landroid/os/IBinder; I)Landroid/net/NetworkRequest;": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" ], "Lcom/android/server/ConnectivityService;-requestRouteToHostAddress-(I [B)Z": [ "android.permission.CHANGE_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAcceptUnvalidated-(Landroid/net/Network; Z Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAirplaneMode-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setAlwaysOnVpnPackage-(I Ljava/lang/String; Z)Z": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-setAvoidUnvalidated-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setGlobalProxy-(Landroid/net/ProxyInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setProvisioningNotificationVisible-(Z I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-setUsbTethering-(Z)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-setVpnPackageAuthorization-(Ljava/lang/String; I Z)V": [ "android.permission.CONTROL_VPN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/ConnectivityService;-startLegacyVpn-(Lcom/android/internal/net/VpnProfile;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONTROL_VPN" ], "Lcom/android/server/ConnectivityService;-startNattKeepalive-(Landroid/net/Network; I Landroid/os/Messenger; Landroid/os/IBinder; Ljava/lang/String; I Ljava/lang/String;)V": [ "android.permission.PACKET_KEEPALIVE_OFFLOAD" ], "Lcom/android/server/ConnectivityService;-startTethering-(I Landroid/os/ResultReceiver; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-stopTethering-(I)V": [ "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-tether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-unregisterNetworkFactory-(Landroid/os/Messenger;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConnectivityService;-untether-(Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/ConnectivityService;-updateLockdownVpn-()Z": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/ConsumerIrService;-getCarrierFrequencies-()[I": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/ConsumerIrService;-transmit-(Ljava/lang/String; I [I)V": [ "android.permission.TRANSMIT_IR" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistApp-(Ljava/lang/String; J I Ljava/lang/String;)V": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistAppForMms-(Ljava/lang/String; I Ljava/lang/String;)J": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveTempWhitelistAppForSms-(Ljava/lang/String; I Ljava/lang/String;)J": [ "android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" ], "Lcom/android/server/DeviceIdleController$BinderService;-addPowerSaveWhitelistApp-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/DeviceIdleController$BinderService;-exitIdle-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/DeviceIdleController$BinderService;-removePowerSaveWhitelistApp-(Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/InputMethodManagerService;-addClient-(Lcom/android/internal/view/IInputMethodClient; Lcom/android/internal/view/IInputContext; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-clearLastInputMethodWindowForTransition-(Landroid/os/IBinder;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-createInputContentUriToken-(Landroid/os/IBinder; Landroid/net/Uri; Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getCurrentInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getEnabledInputMethodSubtypeList-(Ljava/lang/String; Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getInputMethodList-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-getLastInputMethodSubtype-()Landroid/view/inputmethod/InputMethodSubtype;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-hideSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-notifySuggestionPicked-(Landroid/text/style/SuggestionSpan; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-registerSuggestionSpansForNotification-([Landroid/text/style/SuggestionSpan;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-removeClient-(Lcom/android/internal/view/IInputMethodClient;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setAdditionalInputMethodSubtypes-(Ljava/lang/String; [Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setCurrentInputMethodSubtype-(Landroid/view/inputmethod/InputMethodSubtype;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-setInputMethod-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodAndSubtype-(Landroid/os/IBinder; Ljava/lang/String; Landroid/view/inputmethod/InputMethodSubtype;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-setInputMethodEnabled-(Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-shouldOfferSwitchingToNextInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodAndSubtypeEnablerFromClient-(Lcom/android/internal/view/IInputMethodClient; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_EXTERNAL_STORAGE" ], "Lcom/android/server/InputMethodManagerService;-showInputMethodPickerFromClient-(Lcom/android/internal/view/IInputMethodClient; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showMySoftInput-(Landroid/os/IBinder; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-showSoftInput-(Lcom/android/internal/view/IInputMethodClient; I Landroid/os/ResultReceiver;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-startInputOrWindowGainedFocus-(I Lcom/android/internal/view/IInputMethodClient; Landroid/os/IBinder; I I I Landroid/view/inputmethod/EditorInfo; Lcom/android/internal/view/IInputContext; I)Lcom/android/internal/view/InputBindResult;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/InputMethodManagerService;-switchToLastInputMethod-(Landroid/os/IBinder;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/InputMethodManagerService;-switchToNextInputMethod-(Landroid/os/IBinder; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/LocationManagerService;-addGnssMeasurementsListener-(Landroid/location/IGnssMeasurementsListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-addGnssNavigationMessageListener-(Landroid/location/IGnssNavigationMessageListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getLastLocation-(Landroid/location/LocationRequest; Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviderProperties-(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-registerGnssStatusCallback-(Landroid/location/IGnssStatusListener; Ljava/lang/String;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-removeUpdates-(Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-reportLocation-(Landroid/location/Location; Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.INSTALL_LOCATION_PROVIDER" ], "Lcom/android/server/LocationManagerService;-requestGeofence-(Landroid/location/LocationRequest; Landroid/location/Geofence; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Lcom/android/server/LocationManagerService;-requestLocationUpdates-(Landroid/location/LocationRequest; Landroid/location/ILocationListener; Landroid/app/PendingIntent; Ljava/lang/String;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.UPDATE_APP_OPS_STATS", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/LocationManagerService;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Lcom/android/server/LockSettingsService;-checkPassword-(Ljava/lang/String; I Lcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkPattern-(Ljava/lang/String; I Lcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-checkVoldPassword-(I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-getBoolean-(Ljava/lang/String; Z I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getLong-(Ljava/lang/String; J I)J": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getSeparateProfileChallengeEnabled-(I)Z": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getString-(Ljava/lang/String; Ljava/lang/String; I)Ljava/lang/String;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-getStrongAuthForUser-(I)I": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-registerStrongAuthTracker-(Landroid/app/trust/IStrongAuthTracker;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-requireStrongAuth-(I I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-resetKeyStore-(I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setBoolean-(Ljava/lang/String; Z I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPassword-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLockPattern-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setLong-(Ljava/lang/String; J I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setSeparateProfileChallengeEnabled-(I Z Ljava/lang/String;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-setString-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-systemReady-()V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE", "android.permission.READ_CONTACTS" ], "Lcom/android/server/LockSettingsService;-unregisterStrongAuthTracker-(Landroid/app/trust/IStrongAuthTracker;)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-userPresent-(I)V": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyPassword-(Ljava/lang/String; J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyPattern-(Ljava/lang/String; J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/LockSettingsService;-verifyTiedProfileChallenge-(Ljava/lang/String; Z J I)Lcom/android/internal/widget/VerifyCredentialResponse;": [ "android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" ], "Lcom/android/server/MmsServiceBroker$BinderService;-downloadMessage-(I Ljava/lang/String; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Lcom/android/server/MmsServiceBroker$BinderService;-sendMessage-(I Ljava/lang/String; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Lcom/android/server/MountService;-addUserKeyAuth-(I I [B [B)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-benchmark-(Ljava/lang/String;)J": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-changeEncryptionPassword-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-clearPassword-()V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-createSecureContainer-(Ljava/lang/String; I Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-createUserKey-(I I Z)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-decryptStorage-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-destroySecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_DESTROY" ], "Lcom/android/server/MountService;-destroyUserKey-(I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-destroyUserStorage-(Ljava/lang/String; I I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-encryptStorage-(I Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-finalizeSecureContainer-(Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixPermissionsSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-fixateNewestUserKeyAuth-(I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-forgetAllVolumes-()V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-forgetVolume-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-format-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-formatVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getEncryptionState-()I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/MountService;-getField-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-getPassword-()Ljava/lang/String;": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-getPasswordType-()I": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-getPrimaryStorageUuid-()Ljava/lang/String;": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-getSecureContainerFilesystemPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerList-()[Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getSecureContainerPath-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-getStorageUsers-(Ljava/lang/String;)[I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-isConvertibleToFBE-()Z": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-isSecureContainerMounted-(Ljava/lang/String;)Z": [ "android.permission.ASEC_ACCESS" ], "Lcom/android/server/MountService;-lockUserKey-(I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-mount-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-mountSecureContainer-(Ljava/lang/String; Ljava/lang/String; I Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-mountVolume-(Ljava/lang/String;)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionMixed-(Ljava/lang/String; I)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionPrivate-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-partitionPublic-(Ljava/lang/String;)V": [ "android.permission.MOUNT_FORMAT_FILESYSTEMS" ], "Lcom/android/server/MountService;-prepareUserStorage-(Ljava/lang/String; I I I)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-renameSecureContainer-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.ASEC_RENAME" ], "Lcom/android/server/MountService;-resizeSecureContainer-(Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.ASEC_CREATE" ], "Lcom/android/server/MountService;-runMaintenance-()V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setDebugFlags-(I I)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setField-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-setPrimaryStorageUuid-(Ljava/lang/String; Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setVolumeNickname-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-setVolumeUserFlags-(Ljava/lang/String; I I)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-shutdown-(Landroid/os/storage/IMountShutdownObserver;)V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/MountService;-unlockUserKey-(I I [B [B)V": [ "android.permission.STORAGE_INTERNAL" ], "Lcom/android/server/MountService;-unmount-(Ljava/lang/String;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-unmountSecureContainer-(Ljava/lang/String; Z)I": [ "android.permission.ASEC_MOUNT_UNMOUNT" ], "Lcom/android/server/MountService;-unmountVolume-(Ljava/lang/String; Z Z)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/MountService;-verifyEncryptionPassword-(Ljava/lang/String;)I": [ "android.permission.CRYPT_KEEPER" ], "Lcom/android/server/NetworkManagementService;-addIdleTimer-(Ljava/lang/String; I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToLocalNetwork-(Ljava/lang/String; Ljava/util/List;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addInterfaceToNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addLegacyRouteForNetId-(I Landroid/net/RouteInfo; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-addVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-allowProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-attachPppd-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearDefaultNetId-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearInterfaceAddresses-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-clearPermission-([I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createPhysicalNetwork-(I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-createVirtualNetwork-(I Z Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-denyProtect-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-detachPppd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-disableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableIpv6-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-enableNat-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getDnsForwarders-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getInterfaceConfig-(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getIpForwardingEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsDetail-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryDev-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsSummaryXt-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsTethering-()Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-getNetworkStatsUidDetail-(I)Landroid/net/NetworkStats;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isBandwidthControlEnabled-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isClatdStarted-(Ljava/lang/String;)Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-isTetheringStarted-()Z": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTetheredInterfaces-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-listTtys-()[Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-registerObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeIdleTimer-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceAlert-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromLocalNetwork-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceFromNetwork-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeInterfaceQuota-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeNetwork-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoute-(I Landroid/net/RouteInfo;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeRoutesFromLocalNetwork-(Ljava/util/List;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-removeVpnUidRanges-(I [Landroid/net/UidRange;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDefaultNetId-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsConfigurationForNetwork-(I [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsForwarders-(Landroid/net/Network; [Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setDnsServersForNetwork-(I [Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setGlobalAlert-(J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceAlert-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceConfig-(Ljava/lang/String; Landroid/net/InterfaceConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceDown-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6NdOffload-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceIpv6PrivacyExtensions-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceQuota-(Ljava/lang/String; J)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setInterfaceUp-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setIpForwardingEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setMtu-(Ljava/lang/String; I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setNetworkPermission-(I Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setPermission-(Ljava/lang/String; [I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidCleartextNetworkPolicy-(I I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidMeteredNetworkBlacklist-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-setUidMeteredNetworkWhitelist-(I Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-shutdown-()V": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/NetworkManagementService;-startAccessPoint-(Landroid/net/wifi/WifiConfiguration; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startInterfaceForwarding-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-startTethering-([Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopAccessPoint-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopClatd-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopInterfaceForwarding-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-stopTethering-()V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-tetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-unregisterObserver-(Landroid/net/INetworkManagementEventObserver;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-untetherInterface-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkManagementService;-wifiFirmwareReload-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/NetworkScoreService;-clearScores-()Z": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-disableScoring-()V": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-registerNetworkScoreCache-(I Landroid/net/INetworkScoreCache;)V": [ "android.permission.BROADCAST_NETWORK_PRIVILEGED" ], "Lcom/android/server/NetworkScoreService;-setActiveScorer-(Ljava/lang/String;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NetworkScoreService;-updateScores-([Landroid/net/ScoredNetwork;)Z": [ "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/NsdService;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.INTERNET" ], "Lcom/android/server/NsdService;-setEnabled-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/RecoverySystemService$BinderService;-clearBcb-()Z": [ "android.permission.RECOVERY" ], "Lcom/android/server/RecoverySystemService$BinderService;-rebootRecoveryWithCommand-(Ljava/lang/String;)V": [ "android.permission.RECOVERY" ], "Lcom/android/server/RecoverySystemService$BinderService;-setupBcb-(Ljava/lang/String;)Z": [ "android.permission.RECOVERY" ], "Lcom/android/server/RecoverySystemService$BinderService;-uncrypt-(Ljava/lang/String; Landroid/os/IRecoverySystemProgressListener;)Z": [ "android.permission.RECOVERY" ], "Lcom/android/server/SerialService;-getSerialPorts-()[Ljava/lang/String;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/SerialService;-openSerialPort-(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SERIAL_PORT" ], "Lcom/android/server/TelephonyRegistry;-addOnSubscriptionsChangedListener-(Ljava/lang/String; Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V": [ "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listen-(Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-listenForSubscriber-(I Ljava/lang/String; Lcom/android/internal/telephony/IPhoneStateListener; I Z)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE", "android.permission.READ_PRECISE_PHONE_STATE", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChanged-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallForwardingChangedForSubscriber-(I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallState-(I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCallStateForPhoneId-(I I I Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCarrierNetworkChange-(Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfo-(Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellInfoForSubscriber-(I Ljava/util/List;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocation-(Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyCellLocationForSubscriber-(I Landroid/os/Bundle;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivity-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataActivityForSubscriber-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnection-(I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionFailedForSubscriber-(I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDataConnectionForSubscriber-(I I Z Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/net/LinkProperties; Landroid/net/NetworkCapabilities; I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyDisconnectCause-(I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyMessageWaitingChangedForPhoneId-(I I Z)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOemHookRawEventForSubscriber-(I [B)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyOtaspChanged-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseCallState-(I I I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyPreciseDataConnectionFailed-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyServiceStateForPhoneId-(I I Landroid/telephony/ServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifySignalStrengthForPhoneId-(I I Landroid/telephony/SignalStrength;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TelephonyRegistry;-notifyVoLteServiceStateChanged-(Landroid/telephony/VoLteServiceState;)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellChecker-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setCurrentSpellCheckerSubtype-(Ljava/lang/String; I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/TextServicesManagerService;-setSpellCheckerEnabled-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/UpdateLockService;-acquireUpdateLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/UpdateLockService;-releaseUpdateLock-(Landroid/os/IBinder;)V": [ "android.permission.UPDATE_LOCK" ], "Lcom/android/server/VibratorService;-cancelVibrate-(Landroid/os/IBinder;)V": [ "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibrate-(I Ljava/lang/String; J I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/VibratorService;-vibratePattern-(I Ljava/lang/String; [J I I Landroid/os/IBinder;)V": [ "android.permission.UPDATE_APP_OPS_STATS", "android.permission.VIBRATE" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfoByAccessibilityId-(I J I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; I J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByText-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findAccessibilityNodeInfosByViewId-(I J Ljava/lang/String; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-findFocus-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-focusSearch-(I J I I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationCenterX-()F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationCenterY-()F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationRegion-()Landroid/graphics/Region;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getMagnificationScale-()F": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindow-(I)Landroid/view/accessibility/AccessibilityWindowInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-getWindows-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performAccessibilityAction-(I J I Landroid/os/Bundle; I Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; J)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-performGlobalAction-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-resetMagnification-(Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-setMagnificationScaleAndCenter-(F F F Z)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService$Service;-setSoftKeyboardShowMode-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addAccessibilityInteractionConnection-(Landroid/view/IWindow; Landroid/view/accessibility/IAccessibilityInteractionConnection; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-addClient-(Landroid/view/accessibility/IAccessibilityManagerClient; I)I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-disableAccessibilityService-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-enableAccessibilityService-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getEnabledAccessibilityServiceList-(I I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getInstalledAccessibilityServiceList-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-getWindowToken-(I I)Landroid/os/IBinder;": [ "getWindowToken" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-interrupt-(I)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-removeAccessibilityInteractionConnection-(Landroid/view/IWindow;)V": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-sendAccessibilityEvent-(Landroid/view/accessibility/AccessibilityEvent; I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/accessibility/AccessibilityManagerService;-temporaryEnableAccessibilityStateUntilKeyguardRemoved-(Landroid/content/ComponentName; Z)V": [ "temporaryEnableAccessibilityStateUntilKeyguardRemoved" ], "Lcom/android/server/accounts/AccountManagerService;-addAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Ljava/lang/String; Ljava/lang/String; [Ljava/lang/String; Z Landroid/os/Bundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-addSharedAccountsFromParentUser-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-confirmCredentialsAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Landroid/os/Bundle; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-copyAccountToUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-finishSessionAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/os/Bundle; Z Landroid/os/Bundle; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccounts-(Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsAsUser-(Ljava/lang/String; I Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsByTypeForPackage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAccountsForPackage-(Ljava/lang/String; I Ljava/lang/String;)[Landroid/accounts/Account;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-getAuthenticatorTypes-(I)[Landroid/accounts/AuthenticatorDescription;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccount-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/accounts/AccountManagerService;-removeAccountAsUser-(Landroid/accounts/IAccountManagerResponse; Landroid/accounts/Account; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-appNotRespondingViaProvider-(Landroid/os/IBinder;)V": [ "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-bindBackupAgent-(Ljava/lang/String; I I)Z": [ "android.permission.CONFIRM_FULL_BACKUP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-bindService-(Landroid/app/IApplicationThread; Landroid/os/IBinder; Landroid/content/Intent; Ljava/lang/String; Landroid/app/IServiceConnection; I Ljava/lang/String; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-bootAnimationComplete-()V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-clearGrantedUriPermissions-(Ljava/lang/String; I)V": [ "android.permission.CLEAR_APP_GRANTED_URI_PERMISSIONS" ], "Lcom/android/server/am/ActivityManagerService;-clearPendingBackup-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/am/ActivityManagerService;-crashApplication-(I I Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-createStackOnDisplay-(I)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-createVirtualActivityContainer-(Landroid/os/IBinder; Landroid/app/IActivityContainerCallback;)Landroid/app/IActivityContainer;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-deleteActivityContainer-(Landroid/app/IActivityContainer;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-dumpHeap-(Ljava/lang/String; I Z Ljava/lang/String; Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-finishHeavyWeightApp-()V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-forceStopPackage-(Ljava/lang/String; I)V": [ "android.permission.FORCE_STOP_PACKAGES" ], "Lcom/android/server/am/ActivityManagerService;-getAllStackInfos-()Ljava/util/List;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getAssistContextExtras-(I)Landroid/os/Bundle;": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-getContentProviderExternal-(Ljava/lang/String; I Landroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-getCurrentUser-()Landroid/content/pm/UserInfo;": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getGrantedUriPermissions-(Ljava/lang/String; I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.GET_APP_GRANTED_URI_PERMISSIONS" ], "Lcom/android/server/am/ActivityManagerService;-getIntentForIntentSender-(Landroid/content/IIntentSender;)Landroid/content/Intent;": [ "android.permission.GET_INTENT_SENDER_INTENT" ], "Lcom/android/server/am/ActivityManagerService;-getPackageProcessState-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ActivityManagerService;-getRecentTasks-(I I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.GET_DETAILED_TASKS", "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningExternalApplications-()Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-getRunningUserIds-()[I": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-getStackInfo-(I)Landroid/app/ActivityManager$StackInfo;": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskBounds-(I)Landroid/graphics/Rect;": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-getTaskDescriptionIcon-(Ljava/lang/String; I)Landroid/graphics/Bitmap;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-getTaskThumbnail-(I)Landroid/app/ActivityManager$TaskThumbnail;": [ "android.permission.BROADCAST_STICKY", "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/am/ActivityManagerService;-getTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS", "android.permission.REAL_GET_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-hang-(Landroid/os/IBinder; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-inputDispatchingTimedOut-(I Z Ljava/lang/String;)J": [ "android.permission.FILTER_EVENTS" ], "Lcom/android/server/am/ActivityManagerService;-isInHomeStack-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-isUserRunning-(I I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/am/ActivityManagerService;-killAllBackgroundProcesses-()V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killBackgroundProcesses-(Ljava/lang/String; I)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-killPackageDependents-(Ljava/lang/String; I)V": [ "android.permission.KILL_UID" ], "Lcom/android/server/am/ActivityManagerService;-killUid-(I I Ljava/lang/String;)V": [ "android.permission.KILL_UID" ], "Lcom/android/server/am/ActivityManagerService;-launchAssistIntent-(Landroid/content/Intent; I Ljava/lang/String; I Landroid/os/Bundle;)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskBackwards-(I)V": [ "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToDockedStack-(I I Z Z Landroid/graphics/Rect; Z)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTaskToStack-(I I Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTasksToFullscreenStack-(I Z)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-moveTopActivityToPinnedStack-(I Landroid/graphics/Rect;)Z": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-navigateUpTo-(Landroid/os/IBinder; Landroid/content/Intent; I Landroid/content/Intent;)Z": [ "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-performIdleMaintenance-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-positionTaskInStack-(I I I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-profileControl-(Ljava/lang/String; I Z Landroid/app/ProfilerInfo; I)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerProcessObserver-(Landroid/app/IProcessObserver;)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerTaskStackListener-(Landroid/app/ITaskStackListener;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-registerUidObserver-(Landroid/app/IUidObserver; I)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-registerUserSwitchObserver-(Landroid/app/IUserSwitchObserver; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-removeContentProviderExternal-(Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" ], "Lcom/android/server/am/ActivityManagerService;-removeStack-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-removeTask-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.REMOVE_TASKS" ], "Lcom/android/server/am/ActivityManagerService;-requestAssistContextExtras-(I Lcom/android/internal/os/IResultReceiver; Landroid/os/Bundle; Landroid/os/IBinder; Z Z)Z": [ "android.permission.GET_TOP_ACTIVITY_INFO" ], "Lcom/android/server/am/ActivityManagerService;-requestBugReport-(I)V": [ "android.permission.DUMP" ], "Lcom/android/server/am/ActivityManagerService;-resizeDockedStack-(Landroid/graphics/Rect; Landroid/graphics/Rect; Landroid/graphics/Rect; Landroid/graphics/Rect; Landroid/graphics/Rect;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-resizePinnedStack-(Landroid/graphics/Rect; Landroid/graphics/Rect;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-resizeStack-(I Landroid/graphics/Rect; Z Z Z I)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-resizeTask-(I Landroid/graphics/Rect; I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-restart-()V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-resumeAppSwitches-()V": [ "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-sendIdleJobTrigger-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setActivityController-(Landroid/app/IActivityController; Z)V": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-setAlwaysFinish-(Z)V": [ "android.permission.SET_ALWAYS_FINISH" ], "Lcom/android/server/am/ActivityManagerService;-setDebugApp-(Ljava/lang/String; Z Z)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setDumpHeapDebugLimit-(Ljava/lang/String; I J Ljava/lang/String;)V": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-setFocusedStack-(I)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-setFocusedTask-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-setFrontActivityScreenCompatMode-(I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setHasTopUi-(Z)V": [ "android.permission.INTERNAL_SYSTEM_WINDOW" ], "Lcom/android/server/am/ActivityManagerService;-setLenientBackgroundCheck-(Z)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setLockScreenShown-(Z Z)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/am/ActivityManagerService;-setPackageAskScreenCompat-(Ljava/lang/String; Z)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setPackageScreenCompatMode-(Ljava/lang/String; I)V": [ "android.permission.SET_SCREEN_COMPATIBILITY" ], "Lcom/android/server/am/ActivityManagerService;-setProcessForeground-(Landroid/os/IBinder; I Z)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setProcessLimit-(I)V": [ "android.permission.SET_PROCESS_LIMIT" ], "Lcom/android/server/am/ActivityManagerService;-setTaskDescription-(Landroid/os/IBinder; Landroid/app/ActivityManager$TaskDescription;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-shutdown-(I)Z": [ "android.permission.SHUTDOWN" ], "Lcom/android/server/am/ActivityManagerService;-signalPersistentProcesses-(I)V": [ "android.permission.SIGNAL_PERSISTENT_PROCESSES" ], "Lcom/android/server/am/ActivityManagerService;-startActivities-(Landroid/app/IApplicationThread; Ljava/lang/String; [Landroid/content/Intent; [Ljava/lang/String; Landroid/os/IBinder; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivity-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle;)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAndWait-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)Landroid/app/IActivityManager$WaitResult;": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsCaller-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; Z I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityAsUser-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startActivityFromRecents-(I Landroid/os/Bundle;)I": [ "android.permission.BROADCAST_STICKY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-startActivityWithConfig-(Landroid/app/IApplicationThread; Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; Landroid/os/IBinder; Ljava/lang/String; I I Landroid/content/res/Configuration; Landroid/os/Bundle; I)I": [ "android.permission.SET_DEBUG_APP" ], "Lcom/android/server/am/ActivityManagerService;-startBinderTracking-()Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-startConfirmDeviceCredentialIntent-(Landroid/content/Intent;)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-startSystemLockTaskMode-(I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-startUserInBackground-(I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-startVoiceActivity-(Ljava/lang/String; I I Landroid/content/Intent; Ljava/lang/String; Landroid/service/voice/IVoiceInteractionSession; Lcom/android/internal/app/IVoiceInteractor; I Landroid/app/ProfilerInfo; Landroid/os/Bundle; I)I": [ "android.permission.BIND_VOICE_INTERACTION" ], "Lcom/android/server/am/ActivityManagerService;-stopAppSwitches-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.STOP_APP_SWITCHES" ], "Lcom/android/server/am/ActivityManagerService;-stopBinderTrackingAndDump-(Landroid/os/ParcelFileDescriptor;)Z": [ "android.permission.SET_ACTIVITY_WATCHER" ], "Lcom/android/server/am/ActivityManagerService;-stopLockTaskMode-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-stopService-(Landroid/app/IApplicationThread; Landroid/content/Intent; Ljava/lang/String; I)I": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-stopServiceToken-(Landroid/content/ComponentName; Landroid/os/IBinder; I)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-stopSystemLockTaskMode-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-stopUser-(I Z Landroid/app/IStopUserCallback;)I": [ "android.permission.BROADCAST_STICKY", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-suppressResizeConfigChanges-(Z)V": [ "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-swapDockedAndFullscreenStack-()V": [ "android.permission.BROADCAST_STICKY", "android.permission.MANAGE_ACTIVITY_STACKS" ], "Lcom/android/server/am/ActivityManagerService;-unbindService-(Landroid/app/IServiceConnection;)Z": [ "android.permission.BROADCAST_STICKY", "android.permission.SET_DEBUG_APP", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ActivityManagerService;-unbroadcastIntent-(Landroid/app/IApplicationThread; Landroid/content/Intent; I)V": [ "android.permission.BROADCAST_STICKY" ], "Lcom/android/server/am/ActivityManagerService;-unhandledBack-()V": [ "android.permission.FORCE_BACK" ], "Lcom/android/server/am/ActivityManagerService;-unlockUser-(I [B [B Landroid/os/IProgressListener;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/am/ActivityManagerService;-updateConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/ActivityManagerService;-updatePersistentConfiguration-(Landroid/content/res/Configuration;)V": [ "android.permission.CHANGE_CONFIGURATION" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimeBattery-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getAwakeTimePlugged-()J": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatistics-()[B": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-getStatisticsStream-()Landroid/os/ParcelFileDescriptor;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBleScanStarted-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBleScanStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteBluetoothControllerActivity-(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteChangeWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteConnectivityChanged-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteDeviceIdleMode-(I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteEvent-(I Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFlashlightOn-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquired-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockAcquiredFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleased-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteFullWifiLockReleasedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteInteractive-(Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteJobStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteLongPartialWakelockFinish-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteLongPartialWakelockStart-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteMobileRadioPowerState-(I J I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteModemControllerActivity-(Landroid/telephony/ModemActivityInfo;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkInterfaceType-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteNetworkStatsEnabled-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneDataConnectionState-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneSignalStrength-(Landroid/telephony/SignalStrength;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-notePhoneState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetAudio-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetBleScan-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetCamera-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetFlashlight-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteResetVideo-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenBrightness-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteScreenState-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartCamera-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelock-(I I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStartWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopAudio-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopCamera-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopGps-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopSensor-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopVideo-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelock-(I I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteStopWakelockFromSource-(Landroid/os/WorkSource; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncFinish-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteSyncStart-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteUserActivity-(I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOff-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteVibratorOn-(I J)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWakeUp-(Ljava/lang/String; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStartedFromSource-(Landroid/os/WorkSource; I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiBatchedScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiControllerActivity-(Landroid/net/wifi/WifiActivityEnergyInfo;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastDisabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabled-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiMulticastEnabledFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOff-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiOn-()V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRadioPowerState-(I J I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRssiChanged-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunning-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiRunningChanged-(Landroid/os/WorkSource; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStarted-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStartedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStopped-(I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiScanStoppedFromSource-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiState-(I Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiStopped-(Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-noteWifiSupplicantStateChanged-(I Z)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-setBatteryState-(I I I I I I I)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/am/BatteryStatsService;-takeUidSnapshot-(I)Landroid/os/health/HealthStatsParceler;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/BatteryStatsService;-takeUidSnapshots-([I)[Landroid/os/health/HealthStatsParceler;": [ "android.permission.BATTERY_STATS" ], "Lcom/android/server/am/PendingIntentRecord;-send-(I Landroid/content/Intent; Ljava/lang/String; Landroid/content/IIntentReceiver; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.START_ANY_ACTIVITY", "android.permission.START_TASKS_FROM_RECENTS" ], "Lcom/android/server/am/ProcessStatsService;-getCurrentStats-(Ljava/util/List;)[B": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/am/ProcessStatsService;-getStatsOverTime-(J)Landroid/os/ParcelFileDescriptor;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindAppWidgetId-(Ljava/lang/String; I I Landroid/content/ComponentName; Landroid/os/Bundle;)Z": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-bindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent; Landroid/os/IBinder;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-createAppWidgetConfigIntentSender-(Ljava/lang/String; I I)Landroid/content/IntentSender;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-deleteAppWidgetId-(Ljava/lang/String; I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetInfo-(Ljava/lang/String; I)Landroid/appwidget/AppWidgetProviderInfo;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetOptions-(Ljava/lang/String; I)Landroid/os/Bundle;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-getAppWidgetViews-(Ljava/lang/String; I)Landroid/widget/RemoteViews;": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-hasBindAppWidgetPermission-(Ljava/lang/String; I)Z": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-notifyAppWidgetViewDataChanged-(Ljava/lang/String; [I I)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-partiallyUpdateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-setBindAppWidgetPermission-(Ljava/lang/String; I Z)V": [ "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-unbindRemoteViewsService-(Ljava/lang/String; I Landroid/content/Intent;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetIds-(Ljava/lang/String; [I Landroid/widget/RemoteViews;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/appwidget/AppWidgetServiceImpl;-updateAppWidgetOptions-(Ljava/lang/String; I Landroid/os/Bundle;)V": [ "android.permission.BIND_APPWIDGET" ], "Lcom/android/server/audio/AudioService;-disableSafeMediaVolume-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-forceRemoteSubmixFullVolume-(Z Landroid/os/IBinder;)V": [ "android.permission.CAPTURE_AUDIO_OUTPUT" ], "Lcom/android/server/audio/AudioService;-notifyVolumeControllerVisible-(Landroid/media/IVolumeController; Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-registerAudioPolicy-(Landroid/media/audiopolicy/AudioPolicyConfig; Landroid/media/audiopolicy/IAudioPolicyCallback; Z)Ljava/lang/String;": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Lcom/android/server/audio/AudioService;-requestAudioFocus-(Landroid/media/AudioAttributes; I Landroid/os/IBinder; Landroid/media/IAudioFocusDispatcher; Ljava/lang/String; Ljava/lang/String; I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/audio/AudioService;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setFocusPropertiesForPolicy-(I Landroid/media/audiopolicy/IAudioPolicyCallback;)I": [ "android.permission.MODIFY_AUDIO_ROUTING" ], "Lcom/android/server/audio/AudioService;-setMasterMute-(Z I Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/audio/AudioService;-setMicrophoneMute-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setMode-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setRingerModeInternal-(I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-setRingtonePlayer-(Landroid/media/IRingtonePlayer;)V": [ "android.permission.REMOTE_AUDIO_PLAYBACK" ], "Lcom/android/server/audio/AudioService;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-setVolumeController-(Landroid/media/IVolumeController;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-setVolumePolicy-(Landroid/media/VolumePolicy;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/audio/AudioService;-startBluetoothSco-(Landroid/os/IBinder; I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-startBluetoothScoVirtualCall-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/audio/AudioService;-stopBluetoothSco-(Landroid/os/IBinder;)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-getAvailableRestoreSets-(Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreAll-(J Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restorePackage-(Ljava/lang/String; Landroid/app/backup/IRestoreObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/BackupManagerService$ActiveRestoreSession;-restoreSome-(J Landroid/app/backup/IRestoreObserver; [Ljava/lang/String;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-acknowledgeFullBackupOrRestore-(I Z Ljava/lang/String; Ljava/lang/String; Landroid/app/backup/IFullBackupRestoreObserver;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-backupNow-()V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-beginRestoreSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/app/backup/IRestoreSession;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-clearBackupData-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullBackup-(Landroid/os/ParcelFileDescriptor; Z Z Z Z Z Z Z [Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullRestore-(Landroid/os/ParcelFileDescriptor;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-fullTransportBackup-([Ljava/lang/String;)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getAvailableRestoreToken-(Ljava/lang/String;)J": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getConfigurationIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getCurrentTransport-()Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDataManagementIntent-(Ljava/lang/String;)Landroid/content/Intent;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDataManagementLabel-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-getDestinationString-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-hasBackupPassword-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-isAppEligibleForBackup-(Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-isBackupEnabled-()Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-listAllTransports-()[Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-requestBackup-([Ljava/lang/String; Landroid/app/backup/IBackupObserver;)I": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-restoreAtInstall-(Ljava/lang/String; I)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-selectBackupTransport-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setAutoRestore-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupEnabled-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupPassword-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BACKUP" ], "Lcom/android/server/backup/Trampoline;-setBackupProvisioned-(Z)V": [ "android.permission.BACKUP" ], "Lcom/android/server/connectivity/IpConnectivityMetrics$Impl;-logEvent-(Landroid/net/ConnectivityMetricsEvent;)I": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/MetricsLoggerService$MetricsLoggerImpl;-getEvents-(Landroid/net/ConnectivityMetricsEvent$Reference;)[Landroid/net/ConnectivityMetricsEvent;": [ "android.permission.DUMP" ], "Lcom/android/server/connectivity/MetricsLoggerService$MetricsLoggerImpl;-logEvent-(Landroid/net/ConnectivityMetricsEvent;)J": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/MetricsLoggerService$MetricsLoggerImpl;-logEvents-([Landroid/net/ConnectivityMetricsEvent;)J": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/connectivity/MetricsLoggerService$MetricsLoggerImpl;-register-(Landroid/app/PendingIntent;)Z": [ "android.permission.DUMP" ], "Lcom/android/server/connectivity/MetricsLoggerService$MetricsLoggerImpl;-unregister-(Landroid/app/PendingIntent;)V": [ "android.permission.DUMP" ], "Lcom/android/server/content/ContentService;-addPeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle; J)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-cancelSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-cancelSyncAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getCache-(Ljava/lang/String; Landroid/net/Uri; I)Landroid/os/Bundle;": [ "android.permission.CACHE_CONTENT", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getCurrentSyncs-()Ljava/util/List;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getCurrentSyncsAsUser-(I)Ljava/util/List;": [ "android.permission.GET_ACCOUNTS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getIsSyncable-(Landroid/accounts/Account; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getIsSyncableAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomatically-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getMasterSyncAutomaticallyAsUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getPeriodicSyncs-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAdapterPackagesForAuthorityAsUser-(Ljava/lang/String; I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypes-()[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAdapterTypesAsUser-(I)[Landroid/content/SyncAdapterType;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-getSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-getSyncStatus-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-getSyncStatusAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Landroid/content/SyncStatusInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncActive-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPending-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-isSyncPendingAsUser-(Landroid/accounts/Account; Ljava/lang/String; Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.READ_SYNC_STATS" ], "Lcom/android/server/content/ContentService;-putCache-(Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; I)V": [ "android.permission.CACHE_CONTENT", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-registerContentObserver-(Landroid/net/Uri; Z Landroid/database/IContentObserver; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-removePeriodicSync-(Landroid/accounts/Account; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setIsSyncable-(Landroid/accounts/Account; Ljava/lang/String; I)V": [ "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomatically-(Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setMasterSyncAutomaticallyAsUser-(Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomatically-(Landroid/accounts/Account; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-setSyncAutomaticallyAsUser-(Landroid/accounts/Account; Ljava/lang/String; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.WRITE_SYNC_SETTINGS" ], "Lcom/android/server/content/ContentService;-sync-(Landroid/content/SyncRequest;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/content/ContentService;-syncAsUser-(Landroid/content/SyncRequest; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileIntentFilter-(Landroid/content/ComponentName; Landroid/content/IntentFilter; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-addPersistentPreferredActivity-(Landroid/content/ComponentName; Landroid/content/IntentFilter; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-approveCaCert-(Ljava/lang/String; I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-choosePrivateKeyAlias-(I Landroid/net/Uri; Ljava/lang/String; Landroid/os/IBinder;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearCrossProfileIntentFilters-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearDeviceOwner-(Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearPackagePersistentPreferredActivities-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-clearProfileOwner-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-createAndManageUser-(Landroid/content/ComponentName; Ljava/lang/String; Landroid/content/ComponentName; Landroid/os/PersistableBundle; I)Landroid/os/UserHandle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemApp-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enableSystemAppWithIntent-(Landroid/content/ComponentName; Landroid/content/Intent;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-enforceCanManageCaCerts-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-forceRemoveActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabled-()[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAccountTypesWithManagementDisabledAsUser-(I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getActiveAdmins-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAlwaysOnVpnPackage-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getApplicationRestrictionsManagingPackage-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getAutoTimeRequired-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getBluetoothContactSharingDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getBluetoothContactSharingDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCameraDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCertInstallerPackage-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileCallerIdDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileContactsSearchDisabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileContactsSearchDisabledForUser-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCrossProfileWidgetProviders-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getCurrentFailedPasswordAttempts-(I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerComponent-(Z)Landroid/content/ComponentName;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerName-()Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDeviceOwnerUserId-()I": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getDoNotAskCredentialsOnBoot-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getForceEphemeralUsers-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getGlobalProxyAdmin-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getKeepUninstalledPackages-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getKeyguardDisabledFeatures-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLockTaskPackages-(Landroid/content/ComponentName;)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLongSupportMessage-(Landroid/content/ComponentName;)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getLongSupportMessageForUser-(Landroid/content/ComponentName; I)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumTimeToLock-(Landroid/content/ComponentName; I Z)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getMaximumTimeToLockForUserAndProfiles-(I)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationColor-(Landroid/content/ComponentName;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationColorForUser-(I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationName-(Landroid/content/ComponentName;)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getOrganizationNameForUser-(I)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpiration-(Landroid/content/ComponentName; I Z)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordExpirationTimeout-(Landroid/content/ComponentName; I Z)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordHistoryLength-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLength-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLetters-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumLowerCase-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNonLetter-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumNumeric-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumSymbols-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordMinimumUpperCase-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPasswordQuality-(Landroid/content/ComponentName; I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermissionGrantState-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermissionPolicy-(Landroid/content/ComponentName;)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServices-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedAccessibilityServicesForUser-(I)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethods-(Landroid/content/ComponentName;)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getPermittedInputMethodsForCurrentUser-()Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileOwnerName-(I)Ljava/lang/String;": [ "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getProfileWithMinimumFailedPasswordsForWipe-(I Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRemoveWarning-(Landroid/content/ComponentName; Landroid/os/RemoteCallback; I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRequiredStrongAuthTimeout-(Landroid/content/ComponentName; I Z)J": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getRestrictionsProvider-(I)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getScreenCaptureDisabled-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getShortSupportMessage-(Landroid/content/ComponentName;)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getShortSupportMessageForUser-(Landroid/content/ComponentName; I)Ljava/lang/CharSequence;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryption-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getStorageEncryptionStatus-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; I Z)Ljava/util/List;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getUserProvisioningState-()I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getUserRestrictions-(Landroid/content/ComponentName;)Landroid/os/Bundle;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-getWifiMacAddress-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasGrantedPolicy-(Landroid/content/ComponentName; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-hasUserSetupCompleted-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installCaCert-(Landroid/content/ComponentName; [B)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-installKeyPair-(Landroid/content/ComponentName; [B [B [B Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAccessibilityServicePermittedByAdmin-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isActivePasswordSufficient-(I Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAdminActive-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isAffiliatedUser-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isBackupServiceEnabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isCaCertApproved-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isCallerApplicationRestrictionsManagingPackage-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isDeviceProvisioningConfigApplied-()Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isInputMethodPermittedByAdmin-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isLockTaskPermitted-(Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isManagedProfile-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isMasterVolumeMuted-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isPackageSuspended-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isProfileActivePasswordSufficientForParent-(I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isProvisioningAllowed-(Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isRemovingAdmin-(Landroid/content/ComponentName; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isSecurityLoggingEnabled-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isSystemOnlyUser-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-isUninstallInQueue-(Ljava/lang/String;)Z": [ "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-lockNow-(Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyLockTaskModeChanged-(Z Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-notifyPendingSystemUpdate-(J)V": [ "android.permission.NOTIFY_PENDING_SYSTEM_UPDATE" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-packageHasActiveAdmins-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reboot-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeActiveAdmin-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeCrossProfileWidgetProvider-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeKeyPair-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-removeUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportFailedFingerprintAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportFailedPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportKeyguardDismissed-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportKeyguardSecured-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportSuccessfulFingerprintAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-reportSuccessfulPasswordAttempt-(I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-requestBugreport-(Landroid/content/ComponentName;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-resetPassword-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-retrievePreRebootSecurityLogs-(Landroid/content/ComponentName;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-retrieveSecurityLogs-(Landroid/content/ComponentName;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAccountManagementDisabled-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActiveAdmin-(Landroid/content/ComponentName; Z I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setActivePasswordState-(I I I I I I I I I)V": [ "android.permission.BIND_DEVICE_ADMIN", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAffiliationIds-(Landroid/content/ComponentName; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAlwaysOnVpnPackage-(Landroid/content/ComponentName; Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationHidden-(Landroid/content/ComponentName; Ljava/lang/String; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationRestrictions-(Landroid/content/ComponentName; Ljava/lang/String; Landroid/os/Bundle;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setApplicationRestrictionsManagingPackage-(Landroid/content/ComponentName; Ljava/lang/String;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setAutoTimeRequired-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setBackupServiceEnabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setBluetoothContactSharingDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCameraDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCertInstallerPackage-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCrossProfileCallerIdDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setCrossProfileContactsSearchDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceOwner-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceOwnerLockScreenInfo-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setDeviceProvisioningConfigApplied-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setForceEphemeralUsers-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalProxy-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setGlobalSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeepUninstalledPackages-(Landroid/content/ComponentName; Ljava/util/List;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabled-(Landroid/content/ComponentName; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setKeyguardDisabledFeatures-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setLockTaskPackages-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setLongSupportMessage-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMasterVolumeMuted-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumFailedPasswordsForWipe-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setMaximumTimeToLock-(Landroid/content/ComponentName; J Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setOrganizationColor-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setOrganizationColorForUser-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setOrganizationName-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPackagesSuspended-(Landroid/content/ComponentName; [Ljava/lang/String; Z)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordExpirationTimeout-(Landroid/content/ComponentName; J Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordHistoryLength-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLength-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLetters-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumLowerCase-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNonLetter-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumNumeric-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumSymbols-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordMinimumUpperCase-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPasswordQuality-(Landroid/content/ComponentName; I Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermissionGrantState-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermissionPolicy-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedAccessibilityServices-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setPermittedInputMethods-(Landroid/content/ComponentName; Ljava/util/List;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileEnabled-(Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileName-(Landroid/content/ComponentName; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setProfileOwner-(Landroid/content/ComponentName; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRecommendedGlobalProxy-(Landroid/content/ComponentName; Landroid/net/ProxyInfo;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRequiredStrongAuthTimeout-(Landroid/content/ComponentName; J Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setRestrictionsProvider-(Landroid/content/ComponentName; Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setScreenCaptureDisabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSecureSetting-(Landroid/content/ComponentName; Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSecurityLoggingEnabled-(Landroid/content/ComponentName; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setShortSupportMessage-(Landroid/content/ComponentName; Ljava/lang/CharSequence;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStatusBarDisabled-(Landroid/content/ComponentName; Z)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setStorageEncryption-(Landroid/content/ComponentName; Z)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setSystemUpdatePolicy-(Landroid/content/ComponentName; Landroid/app/admin/SystemUpdatePolicy;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setTrustAgentConfiguration-(Landroid/content/ComponentName; Landroid/content/ComponentName; Landroid/os/PersistableBundle; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUninstallBlocked-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserIcon-(Landroid/content/ComponentName; Landroid/graphics/Bitmap;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserProvisioningState-(I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-setUserRestriction-(Landroid/content/ComponentName; Ljava/lang/String; Z)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-switchUser-(Landroid/content/ComponentName; Landroid/os/UserHandle;)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-uninstallCaCerts-(Landroid/content/ComponentName; [Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_CA_CERTIFICATES" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-uninstallPackageWithActiveAdmins-(Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_DEVICE_ADMINS", "android.permission.MANAGE_USERS" ], "Lcom/android/server/devicepolicy/DevicePolicyManagerService;-wipeData-(I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-connectWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-createVirtualDisplay-(Landroid/hardware/display/IVirtualDisplayCallback; Landroid/media/projection/IMediaProjection; Ljava/lang/String; Ljava/lang/String; I I I Landroid/view/Surface; I)I": [ "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT", "android.permission.CAPTURE_VIDEO_OUTPUT" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-forgetWifiDisplay-(Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-pauseWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-renameWifiDisplay-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-requestColorMode-(I I)V": [ "android.permission.CONFIGURE_DISPLAY_COLOR_MODE" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-resumeWifiDisplay-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-startWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/display/DisplayManagerService$BinderService;-stopWifiDisplayScan-()V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-awaken-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-dream-()V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDefaultDreamComponent-()Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-getDreamComponents-()[Landroid/content/ComponentName;": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-isDreaming-()Z": [ "android.permission.READ_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-setDreamComponents-([Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/dreams/DreamManagerService$BinderService;-testDream-(Landroid/content/ComponentName;)V": [ "android.permission.WRITE_DREAM_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-addListener-(Landroid/net/IEthernetServiceListener;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-getConfiguration-()Landroid/net/IpConfiguration;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-isAvailable-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-removeListener-(Landroid/net/IEthernetServiceListener;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/ethernet/EthernetServiceImpl;-setConfiguration-(Landroid/net/IpConfiguration;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-authenticate-(Landroid/os/IBinder; J I Landroid/hardware/fingerprint/IFingerprintServiceReceiver; I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT", "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-cancelAuthentication-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-cancelEnrollment-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-enroll-(Landroid/os/IBinder; [B I Landroid/hardware/fingerprint/IFingerprintServiceReceiver; I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-getEnrolledFingerprints-(I Ljava/lang/String;)Ljava/util/List;": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-hasEnrolledFingerprints-(I Ljava/lang/String;)Z": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-isHardwareDetected-(J Ljava/lang/String;)Z": [ "android.permission.USE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-postEnroll-(Landroid/os/IBinder;)I": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-preEnroll-(Landroid/os/IBinder;)J": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-remove-(Landroid/os/IBinder; I I I Landroid/hardware/fingerprint/IFingerprintServiceReceiver;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-rename-(I I Ljava/lang/String;)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-resetTimeout-([B)V": [ "android.permission.RESET_FINGERPRINT_LOCKOUT" ], "Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;-setActiveUser-(I)V": [ "android.permission.MANAGE_FINGERPRINT" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addDeviceEventListener-(Landroid/hardware/hdmi/IHdmiDeviceEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHdmiMhlVendorCommandListener-(Landroid/hardware/hdmi/IHdmiMhlVendorCommandListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-addVendorCommandListener-(Landroid/hardware/hdmi/IHdmiVendorCommandListener; I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-canChangeSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-clearTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-deviceSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getActiveSource-()Landroid/hardware/hdmi/HdmiDeviceInfo;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getDeviceList-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getInputDevices-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getPortInfo-()Ljava/util/List;": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSupportedTypes-()[I": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-getSystemAudioMode-()Z": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-oneTouchPlay-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-portSelect-(I Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-queryDisplayStatus-(Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeHotplugEventListener-(Landroid/hardware/hdmi/IHdmiHotplugEventListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-removeSystemAudioModeChangeListener-(Landroid/hardware/hdmi/IHdmiSystemAudioModeChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendKeyEvent-(I I Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendMhlVendorCommand-(I I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendStandby-(I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-sendVendorCommand-(I I [B Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setArcMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setHdmiRecordListener-(Landroid/hardware/hdmi/IHdmiRecordListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setInputChangeListener-(Landroid/hardware/hdmi/IHdmiInputChangeListener;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setProhibitMode-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMode-(Z Landroid/hardware/hdmi/IHdmiControlCallback;)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioMute-(Z)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-setSystemAudioVolume-(I I I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startOneTouchRecord-(I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-startTimerRecording-(I I [B)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/hdmi/HdmiControlService$BinderService;-stopOneTouchRecord-(I)V": [ "android.permission.HDMI_CEC" ], "Lcom/android/server/input/InputManagerService;-addKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-isInTabletMode-()I": [ "android.permission.TABLET_MODE" ], "Lcom/android/server/input/InputManagerService;-registerTabletModeChangedListener-(Landroid/hardware/input/ITabletModeChangedListener;)V": [ "android.permission.TABLET_MODE" ], "Lcom/android/server/input/InputManagerService;-removeKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setCurrentKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setKeyboardLayoutForInputDevice-(Landroid/hardware/input/InputDeviceIdentifier; Landroid/view/inputmethod/InputMethodInfo; Landroid/view/inputmethod/InputMethodSubtype; Ljava/lang/String;)V": [ "android.permission.SET_KEYBOARD_LAYOUT" ], "Lcom/android/server/input/InputManagerService;-setTouchCalibrationForInputDevice-(Ljava/lang/String; I Landroid/hardware/input/TouchCalibration;)V": [ "android.permission.SET_INPUT_CALIBRATION" ], "Lcom/android/server/input/InputManagerService;-tryPointerSpeed-(I)V": [ "android.permission.SET_POINTER_SPEED" ], "Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;-schedule-(Landroid/app/job/JobInfo;)I": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.RECEIVE_BOOT_COMPLETED" ], "Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;-scheduleAsPackage-(Landroid/app/job/JobInfo; Ljava/lang/String; I Ljava/lang/String;)I": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/media/MediaRouterService;-registerClientAsUser-(Landroid/media/IMediaRouterClient; Ljava/lang/String; I)V": [ "android.permission.CONFIGURE_WIFI_DISPLAY" ], "Lcom/android/server/media/MediaSessionRecord$SessionStub;-setFlags-(I)V": [ "android.permission.MODIFY_PHONE_STATE" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-addCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-createProjection-(I Ljava/lang/String; I Z)Landroid/media/projection/IMediaProjection;": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-getActiveProjectionInfo-()Landroid/media/projection/MediaProjectionInfo;": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-removeCallback-(Landroid/media/projection/IMediaProjectionWatcherCallback;)V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-stopActiveProjection-()V": [ "android.permission.MANAGE_MEDIA_PROJECTION" ], "Lcom/android/server/net/NetworkPolicyManagerService;-addRestrictBackgroundWhitelistedUid-(I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-addUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-factoryReset-(Ljava/lang/String;)V": [ "android.permission.CONNECTIVITY_INTERNAL", "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkPolicies-(Ljava/lang/String;)[Landroid/net/NetworkPolicy;": [ "android.permission.MANAGE_NETWORK_POLICY", "android.permission.READ_PRIVILEGED_PHONE_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getNetworkQuotaInfo-(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackground-()Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackgroundByCaller-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getRestrictBackgroundWhitelistedUids-()[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidPolicy-(I)I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-getUidsWithPolicy-(I)[I": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-isUidForeground-(I)Z": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-onTetheringChanged-(Ljava/lang/String; Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-registerListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-removeRestrictBackgroundWhitelistedUid-(I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-removeUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setConnectivityListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setDeviceIdleMode-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setNetworkPolicies-([Landroid/net/NetworkPolicy;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setRestrictBackground-(Z)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-setUidPolicy-(I I)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-snoozeLimit-(Landroid/net/NetworkTemplate;)V": [ "android.permission.MANAGE_NETWORK_POLICY" ], "Lcom/android/server/net/NetworkPolicyManagerService;-unregisterListener-(Landroid/net/INetworkPolicyListener;)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/net/NetworkStatsService;-advisePersistThreshold-(J)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdate-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-forceUpdateIfaces-()V": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-getDataLayerSnapshotForUid-(I)Landroid/net/NetworkStats;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Lcom/android/server/net/NetworkStatsService;-getNetworkTotalBytes-(Landroid/net/NetworkTemplate; J J)J": [ "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-incrementOperationCount-(I I I)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/net/NetworkStatsService;-registerUsageCallback-(Ljava/lang/String; Landroid/net/DataUsageRequest; Landroid/os/Messenger; Landroid/os/IBinder;)Landroid/net/DataUsageRequest;": [ "android.permission.PACKAGE_USAGE_STATS", "android.permission.READ_NETWORK_USAGE_HISTORY" ], "Lcom/android/server/net/NetworkStatsService;-setUidForeground-(I Z)V": [ "android.permission.MODIFY_NETWORK_ACCOUNTING" ], "Lcom/android/server/pm/PackageInstallerService;-createSession-(Landroid/content/pm/PackageInstaller$SessionParams; Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageInstallerService;-getAllSessions-(I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageInstallerService;-getMySessions-(Ljava/lang/String; I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageInstallerService;-registerCallback-(Landroid/content/pm/IPackageInstallerCallback; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageInstallerService;-setPermissionsResult-(I Z)V": [ "android.permission.INSTALL_PACKAGES" ], "Lcom/android/server/pm/PackageInstallerService;-uninstall-(Ljava/lang/String; Ljava/lang/String; I Landroid/content/IntentSender; I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-addCrossProfileIntentFilter-(Landroid/content/IntentFilter; Ljava/lang/String; I I I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-addOnPermissionsChangeListener-(Landroid/content/pm/IOnPermissionsChangeListener;)V": [ "android.permission.OBSERVE_GRANT_REVOKE_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-addPreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-canForwardTo-(Landroid/content/Intent; Ljava/lang/String; I I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearApplicationUserData-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver; I)V": [ "android.permission.CLEAR_APP_USER_DATA", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearCrossProfileIntentFilters-(I Ljava/lang/String;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-clearPackagePreferredActivities-(Ljava/lang/String;)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFiles-(Ljava/lang/String; Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-deleteApplicationCacheFilesAsUser-(Ljava/lang/String; I Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.DELETE_CACHE_FILES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-deletePackage-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver2; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-deletePackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageDeleteObserver; I I)V": [ "android.permission.DELETE_PACKAGES", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-extendVerificationTimeout-(I I J)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PACKAGE_VERIFICATION_AGENT", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-flushPackageRestrictionsAsUser-(I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-freeStorage-(Ljava/lang/String; J Landroid/content/IntentSender;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-freeStorageAndNotify-(Ljava/lang/String; J Landroid/content/pm/IPackageDataObserver;)V": [ "android.permission.CLEAR_APP_CACHE" ], "Lcom/android/server/pm/PackageManagerService;-getActivityInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationEnabledSetting-(Ljava/lang/String; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationHiddenSettingAsUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-getApplicationInfo-(Ljava/lang/String; I I)Landroid/content/pm/ApplicationInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getComponentEnabledSetting-(Landroid/content/ComponentName; I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getHomeActivities-(Ljava/util/List;)Landroid/content/ComponentName;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getInstalledPackages-(I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getMoveStatus-(I)I": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-getPackageGids-(Ljava/lang/String; I I)[I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageInfo-(Ljava/lang/String; I I)Landroid/content/pm/PackageInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPackageSizeInfo-(Ljava/lang/String; I Landroid/content/pm/IPackageStatsObserver;)V": [ "android.permission.GET_PACKAGE_SIZE", "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-getPackageUid-(Ljava/lang/String; I I)I": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getPermissionFlags-(Ljava/lang/String; Ljava/lang/String; I)I": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-getProviderInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ProviderInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getReceiverInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ActivityInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getServiceInfo-(Landroid/content/ComponentName; I I)Landroid/content/pm/ServiceInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-getVerifierDeviceIdentity-()Landroid/content/pm/VerifierDeviceIdentity;": [ "android.permission.PACKAGE_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-grantRuntimePermission-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installExistingPackageAsUser-(Ljava/lang/String; I)I": [ "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-installPackageAsUser-(Ljava/lang/String; Landroid/content/pm/IPackageInstallObserver2; I Ljava/lang/String; I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS", "android.permission.INSTALL_PACKAGES", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-isEphemeralApplication-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPackageAvailable-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPackageSuspendedForUser-(Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-isPermissionRevokedByPolicy-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-movePackage-(Ljava/lang/String; Ljava/lang/String;)I": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MOVE_PACKAGE", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-movePrimaryStorage-(Ljava/lang/String;)I": [ "android.permission.MOVE_PACKAGE" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivities-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentActivityOptions-(Landroid/content/ComponentName; [Landroid/content/Intent; [Ljava/lang/String; Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentContentProviders-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentReceivers-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-queryIntentServices-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ParceledListSlice;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-registerMoveCallback-(Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-replacePreferredActivity-(Landroid/content/IntentFilter; I [Landroid/content/ComponentName; Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetApplicationPreferences-(I)V": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-resetRuntimePermissions-()V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-resolveIntent-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-resolveService-(Landroid/content/Intent; Ljava/lang/String; I I)Landroid/content/pm/ResolveInfo;": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-revokeRuntimePermission-(Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationEnabledSetting-(Ljava/lang/String; I I I Ljava/lang/String;)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setApplicationHiddenSettingAsUser-(Ljava/lang/String; Z I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setBlockUninstallForUser-(Ljava/lang/String; Z I)Z": [ "android.permission.DELETE_PACKAGES" ], "Lcom/android/server/pm/PackageManagerService;-setComponentEnabledSetting-(Landroid/content/ComponentName; I I I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setDefaultBrowserPackageName-(Ljava/lang/String; I)Z": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setHomeActivity-(Landroid/content/ComponentName; I)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setInstallLocation-(I)Z": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/pm/PackageManagerService;-setLastChosenActivity-(Landroid/content/Intent; Ljava/lang/String; I Landroid/content/IntentFilter; I Landroid/content/ComponentName;)V": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-setPackageStoppedState-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-setPackagesSuspendedAsUser-([Ljava/lang/String; Z I)[Ljava/lang/String;": [ "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.MANAGE_USERS" ], "Lcom/android/server/pm/PackageManagerService;-setPermissionEnforced-(Ljava/lang/String; Z)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-shouldShowRequestPermissionRationale-(Ljava/lang/String; Ljava/lang/String; I)Z": [ "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-systemReady-()V": [ "android.permission.CHANGE_COMPONENT_ENABLED_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL" ], "Lcom/android/server/pm/PackageManagerService;-unregisterMoveCallback-(Landroid/content/pm/IPackageMoveObserver;)V": [ "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ], "Lcom/android/server/pm/PackageManagerService;-updateExternalMediaStatus-(Z Z)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-updateIntentVerificationStatus-(Ljava/lang/String; I I)Z": [ "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/PackageManagerService;-updatePermissionFlags-(Ljava/lang/String; Ljava/lang/String; I I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-updatePermissionFlagsForAllApps-(I I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.REVOKE_RUNTIME_PERMISSIONS" ], "Lcom/android/server/pm/PackageManagerService;-verifyIntentFilter-(I I Ljava/util/List;)V": [ "android.permission.INTENT_FILTER_VERIFICATION_AGENT" ], "Lcom/android/server/pm/PackageManagerService;-verifyPendingInstall-(I I)V": [ "android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PACKAGE_VERIFICATION_AGENT", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.SET_PREFERRED_APPLICATIONS" ], "Lcom/android/server/pm/ShortcutService;-onApplicationActive-(Ljava/lang/String; I)V": [ "android.permission.RESET_SHORTCUT_MANAGER_THROTTLING" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLock-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-acquireWakeLockWithUid-(Landroid/os/IBinder; I Ljava/lang/String; Ljava/lang/String; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-boostScreenBrightness-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-crash-(Ljava/lang/String;)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-goToSleep-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-nap-(J)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-powerHint-(I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-reboot-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT", "android.permission.RECOVERY" ], "Lcom/android/server/power/PowerManagerService$BinderService;-rebootSafeMode-(Z Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-releaseWakeLock-(Landroid/os/IBinder; I)V": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setAttentionLight-(Z I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setPowerSaveMode-(Z)Z": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenAutoBrightnessAdjustmentSettingOverride-(F)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-setTemporaryScreenBrightnessSettingOverride-(I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-shutdown-(Z Ljava/lang/String; Z)V": [ "android.permission.REBOOT" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockUids-(Landroid/os/IBinder; [I)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-updateWakeLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource; Ljava/lang/String;)V": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/power/PowerManagerService$BinderService;-userActivity-(J I I)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/power/PowerManagerService$BinderService;-wakeUp-(J Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-addPrintJobStateChangeListener-(Landroid/print/IPrintJobStateChangeListener; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-cancelPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfo-(Landroid/print/PrintJobId; I I)Landroid/print/PrintJobInfo;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-getPrintJobInfos-(I I)Ljava/util/List;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-print-(Ljava/lang/String; Landroid/print/IPrintDocumentAdapter; Landroid/print/PrintAttributes; Ljava/lang/String; I I)Landroid/os/Bundle;": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/print/PrintManagerService$PrintManagerImpl;-restartPrintJob-(Landroid/print/PrintJobId; I I)V": [ "com.android.printspooler.permission.ACCESS_ALL_PRINT_JOBS" ], "Lcom/android/server/sip/SipService;-close-(Ljava/lang/String; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-createSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getListOfProfiles-(Ljava/lang/String;)[Landroid/net/sip/SipProfile;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-getPendingSession-(Ljava/lang/String; Ljava/lang/String;)Landroid/net/sip/ISipSession;": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isOpened-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-isRegistered-(Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open-(Landroid/net/sip/SipProfile; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-open3-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/sip/SipService;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/ISipSessionListener; Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-deleteSoundModel-(Landroid/os/ParcelUuid;)V": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-getSoundModel-(Landroid/os/ParcelUuid;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-startRecognition-(Landroid/os/ParcelUuid; Landroid/hardware/soundtrigger/IRecognitionStatusCallback; Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-stopRecognition-(Landroid/os/ParcelUuid; Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)I": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-updateSoundModel-(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)V": [ "android.permission.MANAGE_SOUND_TRIGGER" ], "Lcom/android/server/statusbar/StatusBarManagerService;-addTile-(Landroid/content/ComponentName;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-clearNotificationEffects-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-clickTile-(Landroid/content/ComponentName;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-collapsePanels-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable2-(I Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disable2ForUser-(I Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-disableForUser-(I Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandNotificationsPanel-()V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-expandSettingsPanel-(Ljava/lang/String;)V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-handleSystemNavigationKey-(I)V": [ "android.permission.EXPAND_STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onClearAllNotifications-(I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationActionClick-(Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClear-(Ljava/lang/String; Ljava/lang/String; I I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationClick-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationError-(Ljava/lang/String; Ljava/lang/String; I I I Ljava/lang/String; I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationExpansionChanged-(Ljava/lang/String; Z Z)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onNotificationVisibilityChanged-([Lcom/android/internal/statusbar/NotificationVisibility; [Lcom/android/internal/statusbar/NotificationVisibility;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelHidden-()V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-onPanelRevealed-(Z I)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-registerStatusBar-(Lcom/android/internal/statusbar/IStatusBar; Ljava/util/List; Ljava/util/List; [I Ljava/util/List; Landroid/graphics/Rect; Landroid/graphics/Rect;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/statusbar/StatusBarManagerService;-remTile-(Landroid/content/ComponentName;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-removeIcon-(Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIcon-(Ljava/lang/String; Ljava/lang/String; I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setIconVisibility-(Ljava/lang/String; Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setImeWindowStatus-(Landroid/os/IBinder; I I Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/statusbar/StatusBarManagerService;-setSystemUiVisibility-(I I Ljava/lang/String;)V": [ "android.permission.STATUS_BAR_SERVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-acquireTvInputHardware-(I Landroid/media/tv/ITvInputHardwareCallback; Landroid/media/tv/TvInputInfo; I)Landroid/media/tv/ITvInputHardware;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-addBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-captureFrame-(Ljava/lang/String; Landroid/view/Surface; Landroid/media/tv/TvStreamConfig; I)Z": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getAvailableTvStreamConfigList-(Ljava/lang/String; I)Ljava/util/List;": [ "android.permission.CAPTURE_TV_INPUT" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getDvbDeviceList-()Ljava/util/List;": [ "android.permission.DVB_DEVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-getHardwareList-()Ljava/util/List;": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-openDvbDevice-(Landroid/media/tv/DvbDeviceInfo; I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.DVB_DEVICE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-releaseTvInputHardware-(I Landroid/media/tv/ITvInputHardware; I)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-removeBlockedRating-(Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-setParentalControlsEnabled-(Z I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$BinderService;-unblockContent-(Landroid/os/IBinder; Ljava/lang/String; I)V": [ "android.permission.MODIFY_PARENTAL_CONTROLS" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHardwareInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-addHdmiInput-(I Landroid/media/tv/TvInputInfo;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/tv/TvInputManagerService$ServiceCallback;-removeHardwareInput-(Ljava/lang/String;)V": [ "android.permission.TV_INPUT_HARDWARE" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-onCarrierPrivilegedAppsChanged-()V": [ "android.permission.BIND_CARRIER_SERVICES" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryConfigurationStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryEvents-(J J Ljava/lang/String;)Landroid/app/usage/UsageEvents;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-queryUsageStats-(I J J Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;": [ "android.permission.PACKAGE_USAGE_STATS" ], "Lcom/android/server/usage/UsageStatsService$BinderService;-setAppInactive-(Ljava/lang/String; Z I)V": [ "android.permission.CHANGE_APP_IDLE_STATE" ], "Lcom/android/server/usb/UsbService;-allowUsbDebugging-(Z Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearDefaults-(Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-clearUsbDebuggingKeys-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-denyUsbDebugging-()V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-getPortStatus-(Ljava/lang/String;)Landroid/hardware/usb/UsbPortStatus;": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-getPorts-()[Landroid/hardware/usb/UsbPort;": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantAccessoryPermission-(Landroid/hardware/usb/UsbAccessory; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-grantDevicePermission-(Landroid/hardware/usb/UsbDevice; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-hasDefaults-(Ljava/lang/String; I)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-isFunctionEnabled-(Ljava/lang/String;)Z": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setAccessoryPackage-(Landroid/hardware/usb/UsbAccessory; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setCurrentFunction-(Ljava/lang/String;)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setDevicePackage-(Landroid/hardware/usb/UsbDevice; Ljava/lang/String; I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setPortRoles-(Ljava/lang/String; I I)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/usb/UsbService;-setUsbDataUnlocked-(Z)V": [ "android.permission.MANAGE_USB" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-activeServiceSupportsAssist-()Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-activeServiceSupportsLaunchFromKeyguard-()Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-deleteKeyphraseSoundModel-(I Ljava/lang/String;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-getActiveServiceComponentName-()Landroid/content/ComponentName;": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-getKeyphraseSoundModel-(I Ljava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-hideCurrentSession-()V": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-isSessionRunning-()Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-launchVoiceAssistFromKeyguard-()V": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-onLockscreenShown-()V": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-registerVoiceInteractionSessionListener-(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-showSessionForActiveService-(Landroid/os/Bundle; I Lcom/android/internal/app/IVoiceInteractionSessionShowCallback; Landroid/os/IBinder;)Z": [ "android.permission.ACCESS_VOICE_INTERACTION_SERVICE" ], "Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-updateKeyphraseSoundModel-(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I": [ "android.permission.MANAGE_VOICE_KEYPHRASES" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-clearWallpaper-(Ljava/lang/String; I I)V": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDimensionHints-(I I Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setDisplayPadding-(Landroid/graphics/Rect; Ljava/lang/String;)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setLockWallpaperCallback-(Landroid/app/IWallpaperManagerCallback;)Z": [ "android.permission.INTERNAL_SYSTEM_WINDOW" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaper-(Ljava/lang/String; Ljava/lang/String; Landroid/graphics/Rect; Z Landroid/os/Bundle; I Landroid/app/IWallpaperManagerCallback; I)Landroid/os/ParcelFileDescriptor;": [ "android.permission.SET_WALLPAPER" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponent-(Landroid/content/ComponentName;)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/wallpaper/WallpaperManagerService;-setWallpaperComponentChecked-(Landroid/content/ComponentName; Ljava/lang/String; I)V": [ "android.permission.SET_WALLPAPER_COMPONENT" ], "Lcom/android/server/webkit/WebViewUpdateService$BinderService;-changeProviderAndSetting-(Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/webkit/WebViewUpdateService$BinderService;-enableFallbackLogic-(Z)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireMulticastLock-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-acquireWifiLock-(Landroid/os/IBinder; I Ljava/lang/String; Landroid/os/WorkSource;)Z": [ "android.permission.UPDATE_DEVICE_STATS", "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-addOrUpdateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-addToBlacklist-(Ljava/lang/String;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-clearBlacklist-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disableEphemeralNetwork-(Ljava/lang/String;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-disconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableAggressiveHandover-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableVerboseLogging-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-enableWifiConnectivityManager-(Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-factoryReset-()V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAggressiveHandover-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getAllowScansWithTraffic-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfigFile-()Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getConnectionStatistics-()Landroid/net/wifi/WifiConnectionStatistics;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getCountryCode-()Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getCurrentNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getEnableAutoJoinWhenAssociated-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getFrequencyBand-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getMatchingWifiConfig-(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getPrivilegedConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.READ_WIFI_CREDENTIAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-getScanResults-(Ljava/lang/String;)Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.INTERACT_ACROSS_USERS_FULL", "android.permission.PEERS_MAC_ADDRESS", "android.permission.SCORE_NETWORKS" ], "Lcom/android/server/wifi/WifiServiceImpl;-getSupportedFeatures-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getVerboseLoggingLevel-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApConfiguration-()Landroid/net/wifi/WifiConfiguration;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiApEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiEnabledState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWifiServiceMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-getWpsNfcConfigurationToken-(I)Ljava/lang/String;": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-initializeMulticastFiltering-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isMulticastEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reassociate-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reconnect-()V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseMulticastLock-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-releaseWifiLock-(Landroid/os/IBinder;)Z": [ "android.permission.WAKE_LOCK" ], "Lcom/android/server/wifi/WifiServiceImpl;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-reportActivityInfo-()Landroid/net/wifi/WifiActivityEnergyInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-requestActivityInfo-(Landroid/os/ResultReceiver;)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setAllowScansWithTraffic-(I)V": [ "android.permission.ACCESS_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setCountryCode-(Ljava/lang/String; Z)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wifi/WifiServiceImpl;-setEnableAutoJoinWhenAssociated-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setFrequencyBand-(I Z)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApConfiguration-(Landroid/net/wifi/WifiConfiguration;)V": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiApEnabled-(Landroid/net/wifi/WifiConfiguration; Z)V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.TETHER_PRIVILEGED" ], "Lcom/android/server/wifi/WifiServiceImpl;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/WifiServiceImpl;-startScan-(Landroid/net/wifi/ScanSettings; Landroid/os/WorkSource;)V": [ "android.permission.CHANGE_WIFI_STATE", "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/WifiServiceImpl;-updateWifiLockWorkSource-(Landroid/os/IBinder; Landroid/os/WorkSource;)V": [ "android.permission.UPDATE_DEVICE_STATS" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-getP2pStateMachineMessenger-()Landroid/os/Messenger;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE", "android.permission.CONNECTIVITY_INTERNAL", "android.permission.LOCATION_HARDWARE" ], "Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;-setMiracastMode-(I)V": [ "android.permission.CONNECTIVITY_INTERNAL" ], "Lcom/android/server/wm/WindowManagerService;-addAppToken-(I Landroid/view/IApplicationToken; I I I Z Z I I Z Z Landroid/graphics/Rect; Landroid/content/res/Configuration; I Z Z I I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-addWindowToken-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplayDensityForUser-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearForcedDisplaySize-(I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-clearWindowContentFrameStats-(Landroid/os/IBinder;)Z": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-disableKeyguard-(Landroid/os/IBinder; Ljava/lang/String;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-dismissKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-executeAppTransition-()V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-exitKeyguardSecurely-(Landroid/view/IOnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-freezeRotation-(I)V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-getWindowContentFrameStats-(Landroid/os/IBinder;)Landroid/view/WindowContentFrameStats;": [ "android.permission.FRAME_STATS" ], "Lcom/android/server/wm/WindowManagerService;-isViewServerRunning-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-keyguardGoingAway-(I)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-lockNow-(Landroid/os/Bundle;)V": [ "android.permission.DEVICE_POWER" ], "Lcom/android/server/wm/WindowManagerService;-notifyAppResumed-(Landroid/os/IBinder; Z Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-notifyAppStopped-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-pauseKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-prepareAppTransition-(I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-reenableKeyguard-(Landroid/os/IBinder;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Lcom/android/server/wm/WindowManagerService;-registerDockedStackListener-(Landroid/view/IDockedStackListener;)V": [ "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS" ], "Lcom/android/server/wm/WindowManagerService;-registerShortcutKey-(J Lcom/android/internal/policy/IShortcutService;)V": [ "android.permission.REGISTER_WINDOW_MANAGER_LISTENERS" ], "Lcom/android/server/wm/WindowManagerService;-removeAppToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-removeWindowToken-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-requestAssistScreenshot-(Lcom/android/internal/app/IAssistScreenshotReceiver;)Z": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-resumeKeyDispatching-(Landroid/os/IBinder;)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-screenshotApplications-(Landroid/os/IBinder; I I I F)Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-screenshotWallpaper-()Landroid/graphics/Bitmap;": [ "android.permission.READ_FRAME_BUFFER" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScale-(I F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAnimationScales-([F)V": [ "android.permission.SET_ANIMATION_SCALE" ], "Lcom/android/server/wm/WindowManagerService;-setAppOrientation-(Landroid/view/IApplicationToken; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppStartingWindow-(Landroid/os/IBinder; Ljava/lang/String; I Landroid/content/res/CompatibilityInfo; Ljava/lang/CharSequence; I I I I Landroid/os/IBinder; Z)Z": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppTask-(Landroid/os/IBinder; I I Landroid/graphics/Rect; Landroid/content/res/Configuration; I Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setAppVisibility-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setEventDispatching-(Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setFocusedApp-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayDensityForUser-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplayScalingMode-(I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setForcedDisplaySize-(I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setNewConfiguration-(Landroid/content/res/Configuration;)[I": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-setOverscan-(I I I I I)V": [ "android.permission.WRITE_SECURE_SETTINGS" ], "Lcom/android/server/wm/WindowManagerService;-setRecentsVisibility-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-setTvPipVisibility-(Z)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-startAppFreezingScreen-(Landroid/os/IBinder; I)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-startFreezingScreen-(I I)V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-startViewServer-(I)Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-statusBarVisibilityChanged-(I)V": [ "android.permission.STATUS_BAR" ], "Lcom/android/server/wm/WindowManagerService;-stopAppFreezingScreen-(Landroid/os/IBinder; Z)V": [ "android.permission.MANAGE_APP_TOKENS" ], "Lcom/android/server/wm/WindowManagerService;-stopFreezingScreen-()V": [ "android.permission.FREEZE_SCREEN" ], "Lcom/android/server/wm/WindowManagerService;-stopViewServer-()Z": [ "android.permission.DUMP" ], "Lcom/android/server/wm/WindowManagerService;-thawRotation-()V": [ "android.permission.SET_ORIENTATION" ], "Lcom/android/server/wm/WindowManagerService;-updateOrientationFromAppTokens-(Landroid/content/res/Configuration; Landroid/os/IBinder;)Landroid/content/res/Configuration;": [ "android.permission.MANAGE_APP_TOKENS" ], "Landroid/accounts/AccountAuthenticatorActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/accounts/AccountAuthenticatorActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/accounts/AccountAuthenticatorActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Activity;-stopLockTask-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Activity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ActivityGroup;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityGroup;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ActivityManager;-getRecentTasks-(I I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningAppProcesses-()Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-getRunningTasks-(I)Ljava/util/List;": [ "android.permission.GET_TASKS" ], "Landroid/app/ActivityManager;-killBackgroundProcesses-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-moveTaskToFront-(I I Landroid/os/Bundle;)V": [ "android.permission.BROADCAST_STICKY", "android.permission.REORDER_TASKS" ], "Landroid/app/ActivityManager;-restartPackage-(Ljava/lang/String;)V": [ "android.permission.KILL_BACKGROUND_PROCESSES" ], "Landroid/app/AliasActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/AliasActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/AliasActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/Application;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Application;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ExpandableListActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ExpandableListActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/JobSchedulerImpl;-schedule-(Landroid/app/job/JobInfo;)I": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Landroid/app/KeyguardManager$KeyguardLock;-disableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager$KeyguardLock;-reenableKeyguard-()V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/KeyguardManager;-exitKeyguardSecurely-(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V": [ "android.permission.DISABLE_KEYGUARD" ], "Landroid/app/ListActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/ListActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/ListActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/NativeActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/NativeActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Service;-stopSelf-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Service;-stopSelf-(I)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/Service;-stopSelfResult-(I)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/TabActivity;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/TabActivity;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/WallpaperManager;-clear-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-clear-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap; Landroid/graphics/Rect; Z)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setBitmap-(Landroid/graphics/Bitmap; Landroid/graphics/Rect; Z I)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setResource-(I I)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream; Landroid/graphics/Rect; Z)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-setStream-(Ljava/io/InputStream; Landroid/graphics/Rect; Z I)I": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/WallpaperManager;-suggestDesiredDimensions-(I I)V": [ "android.permission.SET_WALLPAPER_HINTS" ], "Landroid/app/admin/DevicePolicyManager;-getWifiMacAddress-(Landroid/content/ComponentName;)Ljava/lang/String;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/app/backup/BackupAgentHelper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/app/backup/BackupAgentHelper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupAgentHelper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/app/backup/BackupManager;-dataChanged-()V": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Landroid/app/backup/BackupManager;-dataChanged-(Ljava/lang/String;)V": [ "android.permission.RECEIVE_BOOT_COMPLETED" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothA2dp;-isA2dpPlaying-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-cancelDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-closeProfileProxy-(I Landroid/bluetooth/BluetoothProfile;)V": [ "android.permission.BLUETOOTH", "android.permission.BROADCAST_STICKY" ], "Landroid/bluetooth/BluetoothAdapter;-disable-()Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-enable-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-getAddress-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeAdvertiser-()Landroid/bluetooth/le/BluetoothLeAdvertiser;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBluetoothLeScanner-()Landroid/bluetooth/le/BluetoothLeScanner;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getBondedDevices-()Ljava/util/Set;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileConnectionState-(I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getProfileProxy-(Landroid/content/Context; Landroid/bluetooth/BluetoothProfile$ServiceListener; I)Z": [ "android.permission.BLUETOOTH", "android.permission.BROADCAST_STICKY" ], "Landroid/bluetooth/BluetoothAdapter;-getScanMode-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-getState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isDiscovering-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isEnabled-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isMultipleAdvertisementSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedFilteringSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-isOffloadedScanBatchingSupported-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingInsecureRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-listenUsingRfcommWithServiceRecord-(Ljava/lang/String; Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-setName-(Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startDiscovery-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-([Ljava/util/UUID; Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-startLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothAdapter;-stopLeScan-(Landroid/bluetooth/BluetoothAdapter$LeScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback;)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-connectGatt-(Landroid/content/Context; Z Landroid/bluetooth/BluetoothGattCallback; I)Landroid/bluetooth/BluetoothGatt;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createBond-()Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothDevice;-createInsecureRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-createRfcommSocketToServiceRecord-(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-fetchUuidsWithSdp-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBluetoothClass-()Landroid/bluetooth/BluetoothClass;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getBondState-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getName-()Ljava/lang/String;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getType-()I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-getUuids-()[Landroid/os/ParcelUuid;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothDevice;-setPin-([B)Z": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-abortReliableWrite-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-beginReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-connect-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-disconnect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-discoverServices-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-executeReliableWrite-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-readRemoteRssi-()Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestConnectionPriority-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-requestMtu-(I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-setCharacteristicNotification-(Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeCharacteristic-(Landroid/bluetooth/BluetoothGattCharacteristic;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGatt;-writeDescriptor-(Landroid/bluetooth/BluetoothGattDescriptor;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-addService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-cancelConnection-(Landroid/bluetooth/BluetoothDevice;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-clearServices-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-close-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-connect-(Landroid/bluetooth/BluetoothDevice; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-notifyCharacteristicChanged-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothGattCharacteristic; Z)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-removeService-(Landroid/bluetooth/BluetoothGattService;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothGattServer;-sendResponse-(Landroid/bluetooth/BluetoothDevice; I I I [B)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-isAudioConnected-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHeadset;-sendVendorSpecificResultCode-(Landroid/bluetooth/BluetoothDevice; Ljava/lang/String; Ljava/lang/String;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-startVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHeadset;-stopVoiceRecognition-(Landroid/bluetooth/BluetoothDevice;)Z": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/BluetoothHealth;-connectChannelToSource-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-disconnectChannel-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration; I)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectedDevices-()Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getConnectionState-(Landroid/bluetooth/BluetoothDevice;)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getDevicesMatchingConnectionStates-([I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-getMainChannelFd-(Landroid/bluetooth/BluetoothDevice; Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-registerSinkAppConfiguration-(Ljava/lang/String; I Landroid/bluetooth/BluetoothHealthCallback;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothHealth;-unregisterAppConfiguration-(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectedDevices-(I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getConnectionState-(Landroid/bluetooth/BluetoothDevice; I)I": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-getDevicesMatchingConnectionStates-(I [I)Ljava/util/List;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothManager;-openGattServer-(Landroid/content/Context; Landroid/bluetooth/BluetoothGattServerCallback;)Landroid/bluetooth/BluetoothGattServer;": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/BluetoothSocket;-connect-()V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-startAdvertising-(Landroid/bluetooth/le/AdvertiseSettings; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseData; Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeAdvertiser;-stopAdvertising-(Landroid/bluetooth/le/AdvertiseCallback;)V": [ "android.permission.BLUETOOTH_ADMIN" ], "Landroid/bluetooth/le/BluetoothLeScanner;-flushPendingScanResults-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-startScan-(Ljava/util/List; Landroid/bluetooth/le/ScanSettings; Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH" ], "Landroid/bluetooth/le/BluetoothLeScanner;-stopScan-(Landroid/bluetooth/le/ScanCallback;)V": [ "android.permission.BLUETOOTH", "android.permission.BLUETOOTH_ADMIN" ], "Landroid/content/ContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/ContextWrapper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/ContextWrapper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/content/MutableContextWrapper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/content/MutableContextWrapper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/hardware/ConsumerIrManager;-getCarrierFrequencies-()[Landroid/hardware/ConsumerIrManager$CarrierFrequencyRange;": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/ConsumerIrManager;-transmit-(I [I)V": [ "android.permission.TRANSMIT_IR" ], "Landroid/hardware/fingerprint/FingerprintManager;-authenticate-(Landroid/hardware/fingerprint/FingerprintManager$CryptoObject; Landroid/os/CancellationSignal; I Landroid/hardware/fingerprint/FingerprintManager$AuthenticationCallback; Landroid/os/Handler;)V": [ "android.permission.USE_FINGERPRINT" ], "Landroid/hardware/fingerprint/FingerprintManager;-hasEnrolledFingerprints-()Z": [ "android.permission.USE_FINGERPRINT" ], "Landroid/hardware/fingerprint/FingerprintManager;-isHardwareDetected-()Z": [ "android.permission.USE_FINGERPRINT" ], "Landroid/inputmethodservice/InputMethodService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/inputmethodservice/InputMethodService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/inputmethodservice/InputMethodService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/location/LocationManager;-addGpsStatusListener-(Landroid/location/GpsStatus$Listener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/GpsStatus$NmeaListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/OnNmeaMessageListener;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addNmeaListener-(Landroid/location/OnNmeaMessageListener; Landroid/os/Handler;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-addProximityAlert-(D D F J Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getBestProvider-(Landroid/location/Criteria; Z)Ljava/lang/String;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getLastKnownLocation-(Ljava/lang/String;)Landroid/location/Location;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProvider-(Ljava/lang/String;)Landroid/location/LocationProvider;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Landroid/location/Criteria; Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-getProviders-(Z)Ljava/util/List;": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-registerGnssStatusCallback-(Landroid/location/GnssStatus$Callback;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-registerGnssStatusCallback-(Landroid/location/GnssStatus$Callback; Landroid/os/Handler;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-removeUpdates-(Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(Ljava/lang/String; J F Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestLocationUpdates-(J F Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Landroid/location/Criteria; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-requestSingleUpdate-(Ljava/lang/String; Landroid/location/LocationListener; Landroid/os/Looper;)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/location/LocationManager;-sendExtraCommand-(Ljava/lang/String; Ljava/lang/String; Landroid/os/Bundle;)Z": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-play-(Landroid/content/Context; Landroid/net/Uri; Z I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AsyncPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/AudioManager;-adjustStreamVolume-(I I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-setBluetoothScoOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMicrophoneMute-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setMode-(I)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setSpeakerphoneOn-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-setStreamMute-(I Z)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-setStreamVolume-(I I I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/AudioManager;-startBluetoothSco-()V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/AudioManager;-stopBluetoothSco-()V": [ "android.permission.BLUETOOTH", "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/media/MediaPlayer;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-reset-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-setWakeMode-(Landroid/content/Context; I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaPlayer;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/MediaRouter$RouteGroup;-requestSetVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteGroup;-requestUpdateVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteInfo;-requestSetVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaRouter$RouteInfo;-requestUpdateVolume-(I)V": [ "android.permission.BLUETOOTH" ], "Landroid/media/MediaScannerConnection;-disconnect-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/media/Ringtone;-play-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setAudioAttributes-(Landroid/media/AudioAttributes;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-setStreamType-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/Ringtone;-stop-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(Landroid/content/Context; Landroid/net/Uri;)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-getRingtone-(I)Landroid/media/Ringtone;": [ "android.permission.WAKE_LOCK" ], "Landroid/media/RingtoneManager;-stopPreviousRingtone-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/media/browse/MediaBrowser;-disconnect-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/ConnectivityManager;-getActiveNetwork-()Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getActiveNetworkInfo-()Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworkInfo-()[Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getAllNetworks-()[Landroid/net/Network;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getLinkProperties-(Landroid/net/Network;)Landroid/net/LinkProperties;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkCapabilities-(Landroid/net/Network;)Landroid/net/NetworkCapabilities;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(Landroid/net/Network;)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getNetworkInfo-(I)Landroid/net/NetworkInfo;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-getRestrictBackgroundStatus-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-isActiveNetworkMetered-()Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-registerDefaultNetworkCallback-(Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/ConnectivityManager;-registerNetworkCallback-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-reportBadNetwork-(Landroid/net/Network;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-reportNetworkConnectivity-(Landroid/net/Network; Z)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.INTERNET" ], "Landroid/net/ConnectivityManager;-requestBandwidthUpdate-(Landroid/net/Network;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestNetwork-(Landroid/net/NetworkRequest; Landroid/net/ConnectivityManager$NetworkCallback;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-requestRouteToHost-(I I)Z": [ "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/ConnectivityManager;-startUsingNetworkFeature-(I Ljava/lang/String;)I": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_NETWORK_STATE" ], "Landroid/net/VpnService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-onRevoke-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/net/VpnService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/VpnService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/net/sip/SipAudioCall;-close-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-endCall-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipAudioCall;-setSpeakerMode-(Z)V": [ "android.permission.MODIFY_AUDIO_SETTINGS" ], "Landroid/net/sip/SipAudioCall;-startAudio-()V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.WAKE_LOCK" ], "Landroid/net/sip/SipManager;-close-(Ljava/lang/String;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-createSipSession-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-getSessionFor-(Landroid/content/Intent;)Landroid/net/sip/SipSession;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isOpened-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-isRegistered-(Ljava/lang/String;)Z": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipProfile; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-makeAudioCall-(Ljava/lang/String; Ljava/lang/String; Landroid/net/sip/SipAudioCall$Listener; I)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-open-(Landroid/net/sip/SipProfile; Landroid/app/PendingIntent; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-register-(Landroid/net/sip/SipProfile; I Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-setRegistrationListener-(Ljava/lang/String; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-takeAudioCall-(Landroid/content/Intent; Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;": [ "android.permission.USE_SIP" ], "Landroid/net/sip/SipManager;-unregister-(Landroid/net/sip/SipProfile; Landroid/net/sip/SipRegistrationListener;)V": [ "android.permission.USE_SIP" ], "Landroid/net/wifi/WifiManager$MulticastLock;-acquire-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$MulticastLock;-release-()V": [ "android.permission.CHANGE_WIFI_MULTICAST_STATE" ], "Landroid/net/wifi/WifiManager$WifiLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager$WifiLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/net/wifi/WifiManager;-addNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-cancelWps-(Landroid/net/wifi/WifiManager$WpsCallback;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disableNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-disconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-enableNetwork-(I Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConfiguredNetworks-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getConnectionInfo-()Landroid/net/wifi/WifiInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getDhcpInfo-()Landroid/net/DhcpInfo;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getScanResults-()Ljava/util/List;": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-getWifiState-()I": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-is5GHzBandSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isDeviceToApRttSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isEnhancedPowerReportingSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isP2pSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isPreferredNetworkOffloadSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isScanAlwaysAvailable-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isTdlsSupported-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-isWifiEnabled-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-pingSupplicant-()Z": [ "android.permission.ACCESS_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reassociate-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-reconnect-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-removeNetwork-(I)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-saveConfiguration-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-setWifiEnabled-(Z)Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startScan-()Z": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-startWps-(Landroid/net/wifi/WpsInfo; Landroid/net/wifi/WifiManager$WpsCallback;)V": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/WifiManager;-updateNetwork-(Landroid/net/wifi/WifiConfiguration;)I": [ "android.permission.CHANGE_WIFI_STATE" ], "Landroid/net/wifi/p2p/WifiP2pManager;-initialize-(Landroid/content/Context; Landroid/os/Looper; Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;": [ "android.permission.ACCESS_WIFI_STATE", "android.permission.CHANGE_WIFI_STATE" ], "Landroid/os/PowerManager$WakeLock;-acquire-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-acquire-(J)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-release-(I)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/PowerManager$WakeLock;-setWorkSource-(Landroid/os/WorkSource;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/os/SystemVibrator;-cancel-()V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; [J I Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/os/SystemVibrator;-vibrate-(I Ljava/lang/String; J Landroid/media/AudioAttributes;)V": [ "android.permission.VIBRATE" ], "Landroid/security/KeyChain;-getCertificateChain-(Landroid/content/Context; Ljava/lang/String;)[Ljava/security/cert/X509Certificate;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/security/KeyChain;-getPrivateKey-(Landroid/content/Context; Ljava/lang/String;)Ljava/security/PrivateKey;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-dispatchGenericMotionEvent-(Landroid/view/MotionEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchKeyEvent-(Landroid/view/KeyEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchKeyShortcutEvent-(Landroid/view/KeyEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchTouchEvent-(Landroid/view/MotionEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-dispatchTrackballEvent-(Landroid/view/MotionEvent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-finish-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-onWakeUp-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/dreams/DreamService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/dreams/DreamService;-wakeUp-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/quicksettings/TileService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/quicksettings/TileService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/quicksettings/TileService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/quicksettings/TileService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/service/voice/VoiceInteractionService;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/service/voice/VoiceInteractionService;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/SpeechRecognizer;-destroy-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getAvailableLanguages-()Ljava/util/Set;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getDefaultLanguage-()Ljava/util/Locale;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getDefaultVoice-()Landroid/speech/tts/Voice;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getFeatures-(Ljava/util/Locale;)Ljava/util/Set;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getLanguage-()Ljava/util/Locale;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getVoice-()Landroid/speech/tts/Voice;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-getVoices-()Ljava/util/Set;": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-isLanguageAvailable-(Ljava/util/Locale;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-isSpeaking-()Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playEarcon-(Ljava/lang/String; I Landroid/os/Bundle; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playEarcon-(Ljava/lang/String; I Ljava/util/HashMap;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playSilence-(J I Ljava/util/HashMap;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-playSilentUtterance-(J I Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-setLanguage-(Ljava/util/Locale;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-setVoice-(Landroid/speech/tts/Voice;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-shutdown-()V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-speak-(Ljava/lang/CharSequence; I Landroid/os/Bundle; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-speak-(Ljava/lang/String; I Ljava/util/HashMap;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-stop-()I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-synthesizeToFile-(Ljava/lang/CharSequence; Landroid/os/Bundle; Ljava/io/File; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/speech/tts/TextToSpeech;-synthesizeToFile-(Ljava/lang/String; Ljava/util/HashMap; Ljava/lang/String;)I": [ "android.permission.BROADCAST_STICKY" ], "Landroid/telephony/PhoneNumberUtils;-isVoiceMailNumber-(Ljava/lang/String;)Z": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/SmsManager;-downloadMultimediaMessage-(Landroid/content/Context; Ljava/lang/String; Landroid/net/Uri; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.RECEIVE_MMS" ], "Landroid/telephony/SmsManager;-injectSmsPdu-([B Ljava/lang/String; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultimediaMessage-(Landroid/content/Context; Landroid/net/Uri; Ljava/lang/String; Landroid/os/Bundle; Landroid/app/PendingIntent;)V": [ "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/TelephonyManager;-getAllCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getCellLocation-()Landroid/telephony/CellLocation;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getDeviceId-(I)Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getGroupIdLevel1-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getIccAuthentication-(I I Ljava/lang/String;)Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getLine1Number-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getNeighboringCellInfo-()Ljava/util/List;": [ "android.permission.ACCESS_FINE_LOCATION" ], "Landroid/telephony/TelephonyManager;-getPhoneCount-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getSimSerialNumber-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getSimState-()I": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getSubscriberId-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailAlphaTag-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-getVoiceMailNumber-()Ljava/lang/String;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/TelephonyManager;-listen-(Landroid/telephony/PhoneStateListener; I)V": [ "android.permission.ACCESS_COARSE_LOCATION", "android.permission.READ_PHONE_STATE" ], "Landroid/telephony/gsm/SmsManager;-divideMessage-(Ljava/lang/String;)Ljava/util/ArrayList;": [ "android.permission.ACCESS_NETWORK_STATE" ], "Landroid/telephony/gsm/SmsManager;-sendDataMessage-(Ljava/lang/String; Ljava/lang/String; S [B Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.ACCESS_NETWORK_STATE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendMultipartTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/util/ArrayList; Ljava/util/ArrayList; Ljava/util/ArrayList;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/telephony/gsm/SmsManager;-sendTextMessage-(Ljava/lang/String; Ljava/lang/String; Ljava/lang/String; Landroid/app/PendingIntent; Landroid/app/PendingIntent;)V": [ "android.permission.READ_EXTERNAL_STORAGE", "android.permission.SEND_SMS" ], "Landroid/test/IsolatedContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/IsolatedContext;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/IsolatedContext;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/RenamingDelegatingContext;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/RenamingDelegatingContext;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/test/mock/MockApplication;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/test/mock/MockApplication;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-clearWallpaper-()V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcast-(Landroid/content/Intent;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-removeStickyBroadcastAsUser-(Landroid/content/Intent; Landroid/os/UserHandle;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Landroid/graphics/Bitmap;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-setWallpaper-(Ljava/io/InputStream;)V": [ "android.permission.SET_WALLPAPER" ], "Landroid/view/ContextThemeWrapper;-stopService-(Landroid/content/Intent;)Z": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/ContextThemeWrapper;-unbindService-(Landroid/content/ServiceConnection;)V": [ "android.permission.BROADCAST_STICKY" ], "Landroid/view/inputmethod/InputMethodManager;-showInputMethodAndSubtypeEnabler-(Ljava/lang/String;)V": [ "android.permission.READ_EXTERNAL_STORAGE" ], "Landroid/widget/VideoView;-getAudioSessionId-()I": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-onKeyDown-(I Landroid/view/KeyEvent;)Z": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-pause-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-resume-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoPath-(Ljava/lang/String;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-setVideoURI-(Landroid/net/Uri; Ljava/util/Map;)V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-start-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-stopPlayback-()V": [ "android.permission.WAKE_LOCK" ], "Landroid/widget/VideoView;-suspend-()V": [ "android.permission.WAKE_LOCK" ] } ================================================ FILE: libs/androguard/core/apk/__init__.py ================================================ # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations # Python core import binascii import hashlib import io import os import re import unicodedata import zipfile from hashlib import md5, sha1, sha224, sha256, sha384, sha512 from struct import unpack from typing import Any, Iterator, List, Tuple, Union from xml.dom.pulldom import SAX2DOM from zlib import crc32 import lxml.sax from apkInspector.headers import ZipEntry # Used for reading Certificates # included to resolve full module path for docs import asn1crypto from asn1crypto import cms, keys, x509 from asn1crypto.util import OrderedDict from cryptography.exceptions import InvalidSignature from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes, serialization from cryptography.hazmat.primitives.asymmetric import dsa, ec, padding, rsa from loguru import logger # External dependencies from lxml.etree import Element # Androguard from androguard.core import androconf from androguard.core.axml import ( END_DOCUMENT, END_TAG, START_TAG, TEXT, ARSCParser, ARSCResTableConfig, AXMLParser, AXMLPrinter, format_value, ) from androguard.util import get_certificate_name_string NS_ANDROID_URI = 'http://schemas.android.com/apk/res/android' NS_ANDROID = '{{{}}}'.format(NS_ANDROID_URI) # Namespace as used by etree # Dictionary of the different protection levels mapped to their corresponding attribute names as described in # https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/pm/PermissionInfo.java protection_flags_to_attributes = { "0x00000000": "normal", "0x00000001": "dangerous", "0x00000002": "signature", "0x00000003": "signature or system", "0x00000004": "internal", "0x00000010": "privileged", "0x00000020": "development", "0x00000040": "appop", "0x00000080": "pre23", "0x00000100": "installer", "0x00000200": "verifier", "0x00000400": "preinstalled", "0x00000800": "setup", "0x00001000": "instant", "0x00002000": "runtime only", "0x00004000": "oem", "0x00008000": "vendor privileged", "0x00010000": "system text classifier", "0x00020000": "wellbeing", "0x00040000": "documenter", "0x00080000": "configurator", "0x00100000": "incident report approver", "0x00200000": "app predictor", "0x00400000": "module", "0x00800000": "companion", "0x01000000": "retail demo", "0x02000000": "recents", "0x04000000": "role", "0x08000000": "known signer", } def parse_lxml_dom(tree): handler = SAX2DOM() lxml.sax.saxify(tree, handler) return handler.document class Error(Exception): """Base class for exceptions in this module.""" pass class FileNotPresent(Error): pass class BrokenAPKError(Error): pass def _dump_additional_attributes(additional_attributes): """try to parse additional attributes, but ends up to hexdump if the scheme is unknown""" attributes_raw = io.BytesIO(additional_attributes) attributes_hex = binascii.hexlify(additional_attributes) if not len(additional_attributes): return attributes_hex (len_attribute,) = unpack(' None: self._bytes = None self.digests = None self.certificates = None self.additional_attributes = None def __str__(self): certs_infos = "" for i,cert in enumerate(self.certificates): x509_cert = asn1crypto.x509.Certificate.load(cert) certs_infos += "\n" certs_infos += " [%d]\n" % i certs_infos += " - Issuer: %s\n" % get_certificate_name_string( x509_cert.issuer, short=True ) certs_infos += " - Subject: %s\n" % get_certificate_name_string( x509_cert.subject, short=True ) certs_infos += " - Serial Number: %s\n" % hex( x509_cert.serial_number ) certs_infos += " - Hash Algorithm: %s\n" % x509_cert.hash_algo certs_infos += ( " - Signature Algorithm: %s\n" % x509_cert.signature_algo ) certs_infos += ( " - Valid not before: %s\n" % x509_cert['tbs_certificate']['validity']['not_before'].native ) certs_infos += ( " - Valid not after: %s" % x509_cert['tbs_certificate']['validity']['not_after'].native ) return "\n".join( [ 'additional_attributes : {}'.format( _dump_additional_attributes(self.additional_attributes) ), 'digests : {}'.format( _dump_digests_or_signatures(self.digests) ), 'certificates : {}'.format(certs_infos), ] ) class APKV3SignedData(APKV2SignedData): """ This class holds all data associated with an APK V3 SigningBlock signed data. source : [apksigning v3](https://source.android.com/security/apksigning/v3.html) """ def __init__(self) -> None: super().__init__() self.minSDK = None self.maxSDK = None def __str__(self): base_str = super().__str__() # maxSDK is set to a negative value if there is no upper bound on the sdk targeted max_sdk_str = "%d" % self.maxSDK if self.maxSDK >= 0x7FFFFFFF: max_sdk_str = "0x%x" % self.maxSDK return "\n".join( [ 'signer minSDK : {:d}'.format(self.minSDK), 'signer maxSDK : {:s}'.format(max_sdk_str), base_str, ] ) class APKV2Signer: """ This class holds all data associated with an APK V2 SigningBlock signer. source : [apksigning v2](https://source.android.com/security/apksigning/v2.html) """ def __init__(self) -> None: self._bytes = None self.signed_data = None self.signatures = None self.public_key = None def __str__(self): return "\n".join( [ '{:s}'.format(str(self.signed_data)), 'signatures : {}'.format( _dump_digests_or_signatures(self.signatures) ), 'public key : {}'.format(binascii.hexlify(self.public_key)), ] ) class APKV3Signer(APKV2Signer): """ This class holds all data associated with an APK V3 SigningBlock signer. source : [apksigning v3](https://source.android.com/security/apksigning/v3.html) """ def __init__(self) -> None: super().__init__() self.minSDK = None self.maxSDK = None def __str__(self): base_str = super().__str__() # maxSDK is set to a negative value if there is no upper bound on the sdk targeted max_sdk_str = "%d" % self.maxSDK if self.maxSDK >= 0x7FFFFFFF: max_sdk_str = "0x%x" % self.maxSDK return "\n".join( [ 'signer minSDK : {:d}'.format(self.minSDK), 'signer maxSDK : {:s}'.format(max_sdk_str), base_str, ] ) class APK: # Constants in ZipFile _PK_END_OF_CENTRAL_DIR = b"\x50\x4b\x05\x06" _PK_CENTRAL_DIR = b"\x50\x4b\x01\x02" # Constants in the APK Signature Block _APK_SIG_MAGIC = b"APK Sig Block 42" _APK_SIG_KEY_V2_SIGNATURE = 0x7109871A _APK_SIG_KEY_V3_SIGNATURE = 0xF05368C0 _APK_SIG_ATTR_V2_STRIPPING_PROTECTION = 0xBEEFF00D _APK_SIG_ALGO_IDS = { 0x0101: "RSASSA-PSS with SHA2-256 digest, SHA2-256 MGF1, 32 bytes of salt, trailer: 0xbc", 0x0102: "RSASSA-PSS with SHA2-512 digest, SHA2-512 MGF1, 64 bytes of salt, trailer: 0xbc", 0x0103: "RSASSA-PKCS1-v1_5 with SHA2-256 digest.", # This is for build systems which require deterministic signatures. 0x0104: "RSASSA-PKCS1-v1_5 with SHA2-512 digest.", # This is for build systems which require deterministic signatures. 0x0201: "ECDSA with SHA2-256 digest", 0x0202: "ECDSA with SHA2-512 digest", 0x0301: "DSA with SHA2-256 digest", } __no_magic = False def __init__( self, filename: str, raw: bool = False, magic_file: Union[str, None] = None, skip_analysis: bool = False, testzip: bool = False, ) -> None: """ This class can access to all elements in an APK file Examples: >>> APK("myfile.apk") >>> APK(read("myfile.apk"), raw=True) :param filename: specify the path of the file, or raw data :param raw: specify if the filename is a path or raw data (optional) :param magic_file: specify the magic file (not used anymore - legacy only) :param skip_analysis: Skip the analysis, e.g. no manifest files are read. (default: `False`) :param testzip: Test the APK for integrity, e.g. if the ZIP file is broken. Throw an exception on failure (default `False`) """ if magic_file: logger.warning( "You set magic_file but this parameter is actually unused. You should remove it." ) self.filename = filename self.xml = {} self.axml = {} self.arsc = {} self.package = "" self.androidversion = {} self.permissions = [] self.uses_permissions = [] self.declared_permissions = {} self.valid_apk = False self._is_signed_v2 = None self._is_signed_v3 = None self._v2_blocks = {} self._v2_signing_data = None self._v3_signing_data = None self._files = {} self.files_crc32 = {} if raw is True: self.__raw = filename self._sha256 = hashlib.sha256(self.__raw).hexdigest() # Set the filename to something sane self.filename = "raw_apk_sha256:{}".format(self._sha256) self.zip = ZipEntry.parse(io.BytesIO(self.__raw), True) else: self.zip = ZipEntry.parse(filename, False) self.__raw = self.zip.zip.getvalue() if testzip: logger.info( "Testing zip file integrity, this might take a while..." ) # Test the zipfile for integrity before continuing. # This process might be slow, as the whole file is read. # Therefore it is possible to enable it as a separate feature. # # A short benchmark showed, that testing the zip takes about 10 times longer! # e.g. normal zip loading (skip_analysis=True) takes about 0.01s, where # testzip takes 0.1s! test_zip = zipfile.ZipFile(io.BytesIO(self.__raw), mode="r") ret = test_zip.testzip() if ret is not None: # we could print the filename here, but there are zip which are so broken # That the filename is either very very long or does not make any sense. # Thus we do not do it, the user might find out by using other tools. raise BrokenAPKError( "The APK is probably broken: testzip returned an error." ) if not skip_analysis: self._apk_analysis() @staticmethod def _ns(name): """ return the name including the Android namespace URI """ return NS_ANDROID + name def _apk_analysis(self): """ Run analysis on the APK file. This method is usually called by __init__ except if skip_analysis is False. It will then parse the `AndroidManifest.xml` and set all fields in the APK class which can be extracted from the Manifest. """ i = "AndroidManifest.xml" logger.info("Starting analysis on {}".format(i)) try: manifest_data = self.zip.read(i) except KeyError: logger.warning("Missing AndroidManifest.xml. Is this an APK file?") else: ap = AXMLPrinter(manifest_data) if not ap.is_valid(): logger.error( "Error while parsing AndroidManifest.xml - is the file valid?" ) return self.axml[i] = ap self.xml[i] = self.axml[i].get_xml_obj() if self.axml[i].is_packed(): logger.warning( "XML Seems to be packed, operations on the AndroidManifest.xml might fail." ) if self.xml[i] is not None: if self.xml[i].tag != "manifest": logger.error( "AndroidManifest.xml does not start with a tag! Is this a valid APK?" ) return self.package = self.get_attribute_value("manifest", "package") self.androidversion["Code"] = self.get_attribute_value( "manifest", "versionCode" ) self.androidversion["Name"] = self.get_attribute_value( "manifest", "versionName" ) permission = list( self.get_all_attribute_value("uses-permission", "name") ) self.permissions = list(set(self.permissions + permission)) for uses_permission in self.find_tags("uses-permission"): self.uses_permissions.append( [ self.get_value_from_tag(uses_permission, "name"), self._get_permission_maxsdk(uses_permission), ] ) # getting details of the declared permissions for d_perm_item in self.find_tags('permission'): d_perm_name = self._get_res_string_value( str(self.get_value_from_tag(d_perm_item, "name")) ) d_perm_label = self._get_res_string_value( str(self.get_value_from_tag(d_perm_item, "label")) ) d_perm_description = self._get_res_string_value( str( self.get_value_from_tag(d_perm_item, "description") ) ) d_perm_permissionGroup = self._get_res_string_value( str( self.get_value_from_tag( d_perm_item, "permissionGroup" ) ) ) d_perm_protectionLevel = self._get_res_string_value( str( self.get_value_from_tag( d_perm_item, "protectionLevel" ) ) ) d_perm_details = { "label": d_perm_label, "description": d_perm_description, "permissionGroup": d_perm_permissionGroup, "protectionLevel": d_perm_protectionLevel, } self.declared_permissions[d_perm_name] = d_perm_details self.valid_apk = True logger.info("APK file was successfully validated!") self.permission_module = androconf.load_api_specific_resource_module( "aosp_permissions", self.get_target_sdk_version() ) self.permission_module_min_sdk = ( androconf.load_api_specific_resource_module( "aosp_permissions", self.get_min_sdk_version() ) ) def __getstate__(self): """ Function for pickling APK Objects. We remove the zip from the Object, as it is not pickable And it does not make any sense to pickle it anyways. :returns: the picklable APK Object without zip. """ # Upon pickling, we need to remove the ZipFile x = self.__dict__ x['axml'] = str(x['axml']) x['xml'] = str(x['xml']) del x['zip'] return x def __setstate__(self, state): """ Load a pickled APK Object and restore the state We load the zip file back by reading __raw from the Object. :param state: pickled state """ self.__dict__ = state self.zip = zipfile.ZipFile(io.BytesIO(self.get_raw()), mode="r") def _get_res_string_value(self, string): if not string.startswith('@string/'): return string string_key = string[9:] res_parser = self.get_android_resources() if not res_parser: return '' string_value = '' for package_name in res_parser.get_packages_names(): extracted_values = res_parser.get_string(package_name, string_key) if extracted_values: string_value = extracted_values[1] break return string_value def _get_permission_maxsdk(self, item): maxSdkVersion = None try: maxSdkVersion = int(self.get_value_from_tag(item, "maxSdkVersion")) except ValueError: logger.warning( str(maxSdkVersion) + ' is not a valid value for maxSdkVersion' ) except TypeError: pass return maxSdkVersion def is_valid_APK(self) -> bool: """ Return `True` if the APK is valid, `False` otherwise. An APK is seen as valid, if the `AndroidManifest.xml` could be successful parsed. This does not mean that the APK has a valid signature nor that the APK can be installed on an Android system. :returns: `True` if the APK is valid, `False` otherwise. """ return self.valid_apk def get_filename(self) -> str: """ Return the filename of the APK :returns: filename """ return self.filename def get_app_name(self, locale=None) -> str: """ Return the appname of the APK This name is read from the `AndroidManifest.xml` using the application `android:label`. If no label exists, the `android:label` of the main activity is used. If there is also no main activity label, an empty string is returned. :returns: the appname of the APK """ app_name = self.get_attribute_value('application', 'label') if app_name is None: activities = self.get_main_activities() main_activity_name = None if len(activities) > 0: main_activity_name = activities.pop() # FIXME: would need to use _format_value inside get_attribute_value for each returned name! # For example, as the activity name might be foobar.foo.bar but inside the activity it is only .bar app_name = self.get_attribute_value( 'activity', 'label', name=main_activity_name ) if app_name is None: # No App name set # TODO return packagename instead? logger.warning( "It looks like that no app name is set for the main activity!" ) return "" if app_name.startswith("@"): res_parser = self.get_android_resources() if not res_parser: # TODO: What should be the correct return value here? return app_name res_id, package = res_parser.parse_id(app_name) # If the package name is the same as the APK package, # we should be able to resolve the ID. if package and package != self.get_package(): if package == 'android': # TODO: we can not resolve this, as we lack framework-res.apk # one exception would be when parsing framework-res.apk directly. logger.warning( "Resource ID with android package name encountered! " "Will not resolve, framework-res.apk would be required." ) return app_name else: # TODO should look this up, might be in the resources logger.warning( "Resource ID with Package name '{}' encountered! Will not resolve".format( package ) ) return app_name try: config = ( ARSCResTableConfig(None, locale=locale) if locale else ARSCResTableConfig.default_config() ) app_name = res_parser.get_resolved_res_configs(res_id, config)[ 0 ][1] except Exception as e: logger.warning("Exception selecting app name: %s" % e) return app_name def get_app_icon(self, max_dpi: int = 65536) -> Union[str, None]: """ Return the first icon file name, which density is not greater than max_dpi, unless exact icon resolution is set in the manifest, in which case return the exact file. This information is read from the `AndroidManifest.xml` From and * DEFAULT 0dpi * ldpi (low) 120dpi * mdpi (medium) 160dpi * TV 213dpi * hdpi (high) 240dpi * xhdpi (extra-high) 320dpi * xxhdpi (extra-extra-high) 480dpi * xxxhdpi (extra-extra-extra-high) 640dpi * anydpi 65534dpi (0xFFFE) * nodpi 65535dpi (0xFFFF) There is a difference between nodpi and anydpi: nodpi will be used if no other density is specified. Or the density does not match. nodpi is the fallback for everything else. If there is a resource that matches the DPI, this is used. anydpi is also valid for all densities but in this case, anydpi will overrule all other files! Therefore anydpi is usually used with vector graphics and with constraints on the API level. For example adaptive icons are usually marked as anydpi. When it comes now to selecting an icon, there is the following flow: 1. is there an anydpi icon? 2. is there an icon for the dpi of the device? 3. is there a nodpi icon? 4. (only on very old devices) is there a icon with dpi 0 (the default) For more information read here: :returns: the first icon file name, or None if no resources or app icon exists. """ main_activity_name = self.get_main_activity() app_icon = self.get_attribute_value( 'activity', 'icon', name=main_activity_name ) if not app_icon: app_icon = self.get_attribute_value('application', 'icon') res_parser = self.get_android_resources() if not res_parser: # Can not do anything below this point to resolve... return None if not app_icon: res_id = res_parser.get_res_id_by_key( self.package, 'mipmap', 'ic_launcher' ) if res_id: app_icon = "@%x" % res_id if not app_icon: res_id = res_parser.get_res_id_by_key( self.package, 'drawable', 'ic_launcher' ) if res_id: app_icon = "@%x" % res_id if not app_icon: # If the icon can not be found, return now return None if app_icon.startswith("@"): app_icon_id = app_icon[1:] app_icon_id = app_icon_id.split(':')[-1] res_id = int(app_icon_id, 16) candidates = res_parser.get_resolved_res_configs(res_id) app_icon = None current_dpi = -1 try: for config, file_name in candidates: dpi = config.get_density() if current_dpi < dpi <= max_dpi: app_icon = file_name current_dpi = dpi except Exception as e: logger.warning("Exception selecting app icon: %s" % e) return app_icon def get_package(self) -> str: """ Return the name of the package This information is read from the `AndroidManifest.xml` :returns: the name of the package """ return self.package def get_androidversion_code(self) -> str: """ Return the android version code This information is read from the `AndroidManifest.xml` :returns: the android version code """ return self.androidversion["Code"] def get_androidversion_name(self) -> str: """ Return the android version name This information is read from the `AndroidManifest.xml` :returns: the android version name """ return self.androidversion["Name"] def get_files(self) -> list[str]: """ Return the file names inside the APK. :returns: a list of filename strings inside the APK """ return self.zip.namelist() def _get_file_magic_name(self, buffer: bytes) -> str: """ Return the filetype guessed for a buffer :param buffer: bytes :returns: guessed filetype, or "Unknown" if not resolved """ default = "Unknown" # Faster way, test once, return default. if self.__no_magic: return default try: # Magic is optional import magic except ImportError: self.__no_magic = True logger.warning("No Magic library was found on your system.") return default except TypeError as e: self.__no_magic = True logger.warning( "It looks like you have the magic python package installed but not the magic library itself!" ) logger.warning("Error from magic library: %s", e) logger.warning( "Please follow the installation instructions at https://github.com/ahupp/python-magic/#installation" ) logger.warning( "You can also install the 'python-magic-bin' package on Windows and MacOS" ) return default try: # There are several implementations of magic, # unfortunately all called magic # We use this one: https://github.com/ahupp/python-magic/ # You can also use python-magic-bin on Windows or MacOS getattr(magic, "MagicException") except AttributeError: self.__no_magic = True logger.warning( "Not the correct Magic library was found on your " "system. Please install python-magic or python-magic-bin!" ) return default try: # 1024 byte are usually enough to test the magic ftype = magic.from_buffer(buffer[:1024]) except magic.MagicException as e: logger.exception("Error getting the magic type: %s", e) return default if not ftype: return default else: return self._patch_magic(buffer, ftype) @property def files(self) -> dict[str, str]: """ Returns a dictionary of filenames and detected magic type :returns: dictionary of files and their mime type """ return self.get_files_types() def get_files_types(self) -> dict[str, str]: """ Return the files inside the APK with their associated types (by using [python-magic](https://pypi.org/project/python-magic/)) At the same time, the CRC32 are calculated for the files. :returns: the files inside the APK with their associated types """ if self._files == {}: # Generate File Types / CRC List for i in self.get_files(): buffer = self._get_crc32(i) self._files[i] = self._get_file_magic_name(buffer) return self._files def _patch_magic(self, buffer, orig): """ Overwrite some probably wrong detections by mime libraries :param buffer: bytes of the file to detect :param orig: guess by mime libary :returns: corrected guess """ if ( ("Zip" in orig) or ('(JAR)' in orig) and androconf.is_android_raw(buffer) == 'APK' ): return "Android application package file" return orig def _get_crc32(self, filename): """ Calculates and compares the CRC32 and returns the raw buffer. The CRC32 is added to [files_crc32][androguard.core.apk.APK.files_crc32] dictionary, if not present. :param filename: filename inside the zipfile :rtype: bytes """ buffer = self.zip.read(filename) if filename not in self.files_crc32: self.files_crc32[filename] = crc32(buffer) if ( self.files_crc32[filename] != self.zip.infolist()[filename].crc32_of_uncompressed_data ): logger.error( "File '{}' has different CRC32 after unpacking! " "Declared: {:08x}, Calculated: {:08x}".format( filename, self.zip.infolist()[ filename ].crc32_of_uncompressed_data, self.files_crc32[filename], ) ) return buffer def get_files_crc32(self) -> dict[str, int]: """ Calculates and returns a dictionary of filenames and CRC32 :returns: dict of filename: CRC32 """ if self.files_crc32 == {}: for i in self.get_files(): self._get_crc32(i) return self.files_crc32 def get_files_information(self) -> Iterator[tuple[str, str, int]]: """ Return the files inside the APK with their associated types and crc32 :returns: the files inside the APK with their associated types and crc32 """ for k in self.get_files(): yield k, self.get_files_types()[k], self.get_files_crc32()[k] def get_raw(self) -> bytes: """ Return raw bytes of the APK :returns: bytes of the APK """ if self.__raw: return self.__raw else: with open(self.filename, 'rb') as f: self.__raw = bytearray(f.read()) return self.__raw def get_file(self, filename: str) -> bytes: """ Return the raw data of the specified filename inside the APK :param filename: the filename to get :raises FileNotPresent: if filename not found inside the apk :returns: bytes of the specified filename """ try: return self.zip.read(filename) except KeyError: raise FileNotPresent(filename) def get_dex(self) -> bytes: """ Return the raw data of the classes dex file This will give you the data of the file called `classes.dex` inside the APK. If the APK has multiple DEX files, you need to use [get_all_dex][androguard.core.apk.APK.get_all_dex]. :raises FileNotPresent: if classes.dex is not found :returns: the raw data of the classes dex file """ try: return self.get_file("classes.dex") except FileNotPresent: # TODO is this a good idea to return an empty string? return b"" def get_dex_names(self) -> list[str]: """ Return the names of all DEX files found in the APK. This method only accounts for "offical" dex files, i.e. all files in the root directory of the APK named `classes.dex` or `classes[0-9]+.dex` :returns: the names of all DEX files found in the APK """ dexre = re.compile(r"^classes(\d*).dex$") return filter(lambda x: dexre.match(x), self.get_files()) def get_all_dex(self) -> Iterator[bytes]: """ Return the raw bytes data of all classes dex files :returns: the raw bytes data of all classes dex files """ for dex_name in self.get_dex_names(): yield self.get_file(dex_name) def is_multidex(self) -> bool: """ Test if the APK has multiple DEX files :returns: True if multiple dex found, otherwise False """ dexre = re.compile(r"^classes(\d+)?.dex$") return ( len( [ instance for instance in self.get_files() if dexre.search(instance) ] ) > 1 ) def _format_value(self, value): """ Format a value with packagename, if not already set. For example, the name `'.foobar'` will be transformed into `'package.name.foobar'`. Names which do not contain any dots are assumed to be packagename-less as well: `foobar` will also transform into `package.name.foobar`. :param value: string value to format with the packaname :returns: the formatted package name """ if value and self.package: v_dot = value.find(".") if v_dot == 0: # Dot at the start value = self.package + value elif v_dot == -1: # Not a single dot value = self.package + "." + value return value def get_all_attribute_value( self, tag_name: str, attribute: str, format_value: bool = True, **attribute_filter, ) -> Iterator[str]: """ Yields all the attribute values in xml files which match with the tag name and the specific attribute :param str tag_name: specify the tag name :param str attribute: specify the attribute :param bool format_value: specify if the value needs to be formatted with packagename :returns: the attribute values """ tags = self.find_tags(tag_name, **attribute_filter) for tag in tags: value = tag.get(self._ns(attribute)) or tag.get(attribute) if value is not None: if format_value: yield self._format_value(value) else: yield value def get_attribute_value( self, tag_name: str, attribute: str, format_value: bool = False, **attribute_filter, ) -> str: """ Return the attribute value in xml files which matches the tag name and the specific attribute :param str tag_name: specify the tag name :param str attribute: specify the attribute :param bool format_value: specify if the value needs to be formatted with packagename :returns: the attribute value """ for value in self.get_all_attribute_value( tag_name, attribute, format_value, **attribute_filter ): if value is not None: return value def get_value_from_tag( self, tag: Element, attribute: str ) -> Union[str, None]: """ Return the value of the android prefixed attribute in a specific tag. This function will always try to get the attribute with a `android:` prefix first, and will try to return the attribute without the prefix, if the attribute could not be found. This is useful for some broken `AndroidManifest.xml`, where no android namespace is set, but could also indicate malicious activity (i.e. wrongly repackaged files). A warning is printed if the attribute is found without a namespace prefix. If you require to get the exact result you need to query the tag directly: Example: >>> from lxml.etree import Element >>> tag = Element('bar', nsmap={'android': 'http://schemas.android.com/apk/res/android'}) >>> tag.set('{http://schemas.android.com/apk/res/android}foobar', 'barfoo') >>> tag.set('name', 'baz') # Assume that `a` is some APK object >>> a.get_value_from_tag(tag, 'name') 'baz' >>> tag.get('name') 'baz' >>> tag.get('foobar') None >>> a.get_value_from_tag(tag, 'foobar') 'barfoo' :param lxml.etree.Element tag: specify the tag element :param str attribute: specify the attribute name :returns: the attribute's value, or None if the attribute is not present """ # TODO: figure out if both android:name and name tag exist which one to give preference: # currently we give preference for the namespace one and fallback to the un-namespaced value = tag.get(self._ns(attribute)) if value is None: value = tag.get(attribute) if value: # If value is still None, the attribute could not be found, thus is not present logger.warning( "Failed to get the attribute '{}' on tag '{}' with namespace. " "But found the same attribute without namespace!".format( attribute, tag.tag ) ) return value def find_tags(self, tag_name: str, **attribute_filter) -> list[str]: """ Return a list of all the matched tags in all available xml :param tag_name: specify the tag name :returns: the matched tags """ all_tags = [ self.find_tags_from_xml(i, tag_name, **attribute_filter) for i in self.xml ] return [tag for tag_list in all_tags for tag in tag_list] def find_tags_from_xml( self, xml_name: str, tag_name: str, **attribute_filter ) -> list[str]: """ Return a list of all the matched tags in a specific xml :param str xml_name: specify from which xml to pick the tag from :param str tag_name: specify the tag name :returns: the matched tags """ xml = self.xml[xml_name] if xml is None: return [] if xml.tag == tag_name: if self.is_tag_matched(xml.tag, **attribute_filter): return [xml] return [] tags = set() tags.update(xml.findall(".//" + tag_name)) # https://github.com/androguard/androguard/pull/1053 # permission declared using tag bool: r""" Return `True` if the attributes matches in attribute filter. An attribute filter is a dictionary containing: {attribute_name: value}. This function will return `True` if and only if all attributes have the same value. This function allows to set the dictionary via kwargs, thus you can filter like this: Example: >>> a.is_tag_matched(tag, name="foobar", other="barfoo") This function uses a fallback for attribute searching. It will by default use the namespace variant but fall back to the non-namespace variant. Thus specifiying `{"name": "foobar"}` will match on `` as well as on ``. :param tag: specify the tag element :param attribute_filter: specify the attribute filter as dictionary :returns: `True` if the attributes matches in attribute filter, else `False` """ if len(attribute_filter) <= 0: return True for attr, value in attribute_filter.items(): _value = self.get_value_from_tag(tag, attr) if _value != value: return False return True def get_main_activities(self) -> set[str]: """ Return names of the main activities These values are read from the `AndroidManifest.xml` :returns: names of the main activities """ x = set() y = set() for i in self.xml: if self.xml[i] is None: continue activities_and_aliases = self.xml[i].findall( ".//activity" ) + self.xml[i].findall(".//activity-alias") for item in activities_and_aliases: # Some applications have more than one MAIN activity. # For example: paid and free content activityEnabled = item.get(self._ns("enabled")) if activityEnabled == "false": continue for sitem in item.findall(".//action"): val = sitem.get(self._ns("name")) if val == "android.intent.action.MAIN": activity = item.get(self._ns("name")) or item.get("name") if activity is not None: x.add(activity) else: logger.warning('Main activity without name') for sitem in item.findall(".//category"): val = sitem.get(self._ns("name")) if val == "android.intent.category.LAUNCHER": activity = item.get(self._ns("name")) or item.get("name") if activity is not None: y.add(activity) else: logger.warning('Launcher activity without name') return x.intersection(y) def get_main_activity(self) -> Union[str, None]: """ Return the name of the main activity This value is read from the `AndroidManifest.xml` :returns: the name of the main activity """ activities = self.get_main_activities() if len(activities) == 1: return self._format_value(activities.pop()) elif len(activities) > 1: main_activities = {self._format_value(ma) for ma in activities} # sorted is necessary # 9fc7d3e8225f6b377f9181a92c551814317b77e1aa0df4c6d508d24b18f0f633 good_main_activities = sorted( main_activities.intersection(self.get_activities()) ) if good_main_activities: return good_main_activities[0] return sorted(main_activities)[0] return None def get_activities(self) -> list[str]: """ Return the `android:name` attribute of all activities :returns: the list of `android:name` attribute of all activities """ return list(self.get_all_attribute_value("activity", "name")) def get_activity_aliases(self) -> list[dict[str, str]]: """ Return the `android:name` and `android:targetActivity` attribute of all activity aliases. :returns: the list of `android:name` and `android:targetActivity` attribute of all activitiy aliases """ ali = [] for alias in self.find_tags('activity-alias'): activity_alias = {} for attribute in ['name', 'targetActivity']: value = alias.get(attribute) or alias.get(self._ns(attribute)) if not value: continue activity_alias[attribute] = self._format_value(value) if activity_alias: ali.append(activity_alias) return ali def get_services(self) -> list[str]: """ Return the `android:name` attribute of all services :returns: the list of the `android:name` attribute of all services """ return list(self.get_all_attribute_value("service", "name")) def get_receivers(self) -> list[str]: """ Return the `android:name` attribute of all receivers :returns: the list of the `android:name` attribute of all receivers """ return list(self.get_all_attribute_value("receiver", "name")) def get_providers(self) -> list[str]: """ Return the `android:name` attribute of all providers :returns: the list of the `android:name` attribute of all providers """ return list(self.get_all_attribute_value("provider", "name")) def get_res_value(self, name: str) -> str: """ Return the literal value with a resource id :returns: the literal value with a resource id """ res_parser = self.get_android_resources() if not res_parser: return name res_id = res_parser.parse_id(name)[0] try: value = res_parser.get_resolved_res_configs( res_id, ARSCResTableConfig.default_config() )[0][1] except Exception as e: logger.warning("Exception get resolved resource id: %s" % e) return name return value def get_intent_filters( self, itemtype: str, name: str ) -> dict[str, list[str]]: """ Find intent filters for a given item and name. Intent filter are attached to activities, services or receivers. You can search for the intent filters of such items and get a dictionary of all attached actions and intent categories. :param itemtype: the type of parent item to look for, e.g. `activity`, `service` or `receiver` :param name: the `android:name` of the parent item, e.g. activity name :returns: a dictionary with the keys `action` and `category` containing the `android:name` of those items """ attributes = { "action": ["name"], "category": ["name"], "data": [ 'scheme', 'host', 'port', 'path', 'pathPattern', 'pathPrefix', 'mimeType', ], } d = {} for element in attributes.keys(): d[element] = [] for i in self.xml: # TODO: this can probably be solved using a single xpath for item in self.xml[i].findall(".//" + itemtype): if self._format_value(item.get(self._ns("name"))) == name: for sitem in item.findall(".//intent-filter"): for element in d.keys(): for ssitem in sitem.findall(element): if element == 'data': # multiple attributes values = {} for attribute in attributes[element]: value = ssitem.get(self._ns(attribute)) if value: if value.startswith('@'): value = self.get_res_value( value ) values[attribute] = value if values: d[element].append(values) else: for attribute in attributes[element]: value = ssitem.get(self._ns(attribute)) if value.startswith('@'): value = self.get_res_value(value) if value not in d[element]: d[element].append(value) for element in list(d.keys()): if not d[element]: del d[element] return d def get_permissions(self) -> list[str]: """ Return permissions names declared in the `AndroidManifest.xml`. It is possible that permissions are returned multiple times, as this function does not filter the permissions, i.e. it shows you exactly what was defined in the `AndroidManifest.xml`. Implied permissions, which are granted automatically, are not returned here. Use [get_uses_implied_permission_list][androguard.core.apk.APK.get_uses_implied_permission_list] if you need a list of implied permissions. :returns: A list of permissions as strings """ return self.permissions def get_uses_implied_permission_list(self) -> list[str]: """ Return all permissions implied by the target SDK or other permissions. :returns: list of all permissions implied by the target SDK or other permissions as strings """ target_sdk_version = self.get_effective_target_sdk_version() READ_CALL_LOG = 'android.permission.READ_CALL_LOG' READ_CONTACTS = 'android.permission.READ_CONTACTS' READ_EXTERNAL_STORAGE = 'android.permission.READ_EXTERNAL_STORAGE' READ_PHONE_STATE = 'android.permission.READ_PHONE_STATE' WRITE_CALL_LOG = 'android.permission.WRITE_CALL_LOG' WRITE_CONTACTS = 'android.permission.WRITE_CONTACTS' WRITE_EXTERNAL_STORAGE = 'android.permission.WRITE_EXTERNAL_STORAGE' implied = [] implied_WRITE_EXTERNAL_STORAGE = False if target_sdk_version < 4: if WRITE_EXTERNAL_STORAGE not in self.permissions: implied.append([WRITE_EXTERNAL_STORAGE, None]) implied_WRITE_EXTERNAL_STORAGE = True if READ_PHONE_STATE not in self.permissions: implied.append([READ_PHONE_STATE, None]) if ( WRITE_EXTERNAL_STORAGE in self.permissions or implied_WRITE_EXTERNAL_STORAGE ) and READ_EXTERNAL_STORAGE not in self.permissions: maxSdkVersion = None for name, version in self.uses_permissions: if name == WRITE_EXTERNAL_STORAGE: maxSdkVersion = version break implied.append([READ_EXTERNAL_STORAGE, maxSdkVersion]) if target_sdk_version < 16: if ( READ_CONTACTS in self.permissions and READ_CALL_LOG not in self.permissions ): implied.append([READ_CALL_LOG, None]) if ( WRITE_CONTACTS in self.permissions and WRITE_CALL_LOG not in self.permissions ): implied.append([WRITE_CALL_LOG, None]) return implied def _update_permission_protection_level( self, protection_level, sdk_version ): if not sdk_version or int(sdk_version) <= 15: return protection_level.replace('Or', '|').lower() return protection_level def _fill_deprecated_permissions(self, permissions): min_sdk = self.get_min_sdk_version() target_sdk = self.get_target_sdk_version() filled_permissions = permissions.copy() for permission in filled_permissions: protection_level, label, description = filled_permissions[ permission ] if ( not label or not description ) and permission in self.permission_module_min_sdk: x = self.permission_module_min_sdk[permission] protection_level = self._update_permission_protection_level( x['protectionLevel'], min_sdk ) filled_permissions[permission] = [ protection_level, x['label'], x['description'], ] else: filled_permissions[permission] = [ self._update_permission_protection_level( protection_level, target_sdk ), label, description, ] return filled_permissions def get_details_permissions(self) -> dict[str, list[str]]: """ Return permissions with details. This can only return details about the permission, if the permission is defined in the AOSP. :returns: permissions with details: dict of `{permission: [protectionLevel, label, description]}` """ l = {} for i in self.permissions: if i in self.permission_module: x = self.permission_module[i] l[i] = [x["protectionLevel"], x["label"], x["description"]] elif i in self.declared_permissions: protectionLevel_hex = self.declared_permissions[i][ "protectionLevel" ] protectionLevel = protection_flags_to_attributes[ protectionLevel_hex ] l[i] = [ protectionLevel, "Unknown permission from android reference", "Unknown permission from android reference", ] else: # Is there a valid case not belonging to the above two? logger.info(f"Unknown permission {i}") return self._fill_deprecated_permissions(l) def get_requested_aosp_permissions(self) -> list[str]: """ Returns requested permissions declared within AOSP project. This includes several other permissions as well, which are in the platform apps. :returns: requested permissions """ aosp_permissions = [] all_permissions = self.get_permissions() for perm in all_permissions: if perm in list(self.permission_module.keys()): aosp_permissions.append(perm) return aosp_permissions def get_requested_aosp_permissions_details(self) -> dict[str, list[str]]: """ Returns requested aosp permissions with details. :returns: requested aosp permissions """ l = {} for i in self.permissions: try: l[i] = self.permission_module[i] except KeyError: # if we have not found permission do nothing continue return l def get_requested_third_party_permissions(self) -> list[str]: """ Returns list of requested permissions not declared within AOSP project. :returns: requested permissions """ third_party_permissions = [] all_permissions = self.get_permissions() for perm in all_permissions: if perm not in list(self.permission_module.keys()): third_party_permissions.append(perm) return third_party_permissions def get_declared_permissions(self) -> list[str]: """ Returns list of the declared permissions. :returns: list of declared permissions """ return list(self.declared_permissions.keys()) def get_declared_permissions_details(self) -> dict[str, list[str]]: """ Returns declared permissions with the details. :returns: declared permissions """ return self.declared_permissions def get_max_sdk_version(self) -> str: """ Return the `android:maxSdkVersion` attribute :returns: the `android:maxSdkVersion` attribute """ return self.get_attribute_value("uses-sdk", "maxSdkVersion") def get_min_sdk_version(self) -> str: """ Return the `android:minSdkVersion` attribute :returns: the `android:minSdkVersion` attribute """ return self.get_attribute_value("uses-sdk", "minSdkVersion") def get_target_sdk_version(self) -> str: """ Return the `android:targetSdkVersion` attribute :returns: the `android:targetSdkVersion` attribute """ return self.get_attribute_value("uses-sdk", "targetSdkVersion") def get_effective_target_sdk_version(self) -> int: """ Return the effective `targetSdkVersion`, always returns int > 0. If the `targetSdkVersion` is not set, it defaults to 1. This is set based on defaults as defined in: :returns: the effective `targetSdkVersion` """ target_sdk_version = self.get_target_sdk_version() if not target_sdk_version: target_sdk_version = self.get_min_sdk_version() try: return int(target_sdk_version) except (ValueError, TypeError): return 1 def get_libraries(self) -> list[str]: """ Return the `android:name` attributes for libraries :returns: the `android:name` attributes """ return list(self.get_all_attribute_value("uses-library", "name")) def get_features(self) -> list[str]: """ Return a list of all `android:names` found for the tag `uses-feature` in the `AndroidManifest.xml` :returns: the `android:names` found """ return list(self.get_all_attribute_value("uses-feature", "name")) def is_wearable(self) -> bool: """ Checks if this application is build for wearables by checking if it uses the feature 'android.hardware.type.watch' See: https://developer.android.com/training/wearables/apps/creating.html for more information. Not every app is setting this feature (not even the example Google provides), so it might be wise to not 100% rely on this feature. :returns: `True` if wearable, `False` otherwise """ return 'android.hardware.type.watch' in self.get_features() def is_leanback(self) -> bool: """ Checks if this application is build for TV (Leanback support) by checkin if it uses the feature 'android.software.leanback' :returns: `True` if leanback feature is used, `False` otherwise """ return 'android.software.leanback' in self.get_features() def is_androidtv(self) -> bool: """ Checks if this application does not require a touchscreen, as this is the rule to get into the TV section of the Play Store See: https://developer.android.com/training/tv/start/start.html for more information. :returns: `True` if 'android.hardware.touchscreen' is not required, `False` otherwise """ return ( self.get_attribute_value( 'uses-feature', 'name', required="false", name="android.hardware.touchscreen", ) == "android.hardware.touchscreen" ) def get_certificate_der( self, filename: str, max_sdk_version: int = None ) -> Union[bytes, None]: """ Return the DER coded X.509 certificate from the signature file. If minSdkVersion is prior to Android N only the first SignerInfo is used. If signed attributes are present, they are taken into account Note that unsupported critical extensions and key usage are not verified! [V1SchemeVerifier.java](https://android.googlesource.com/platform/tools/apksig/+/refs/tags/platform-tools-34.0.5/src/main/java/com/android/apksig/internal/apk/v1/V1SchemeVerifier.java#668) :param filename: Signature filename in APK :param max_sdk_version: An optional integer parameter for the max sdk version :returns: DER coded X.509 certificate as binary or None """ # Get the signature pkcs7message = self.get_file(filename) # Get the .SF sf_filename = os.path.splitext(filename)[0] + '.SF' sf_object = self.get_file(sf_filename) # Load the signature signed_data = cms.ContentInfo.load(pkcs7message) # Locate the SignerInfo structure signer_infos = signed_data['content']['signer_infos'] if not signer_infos: logger.error( 'No signer information found in the PKCS7 object. The APK may not be properly signed.' ) return None # Prior to Android N, Android attempts to verify only the first SignerInfo. From N onwards, Android attempts # to verify all SignerInfos and then picks the first verified SignerInfo. min_sdk_version = self.get_min_sdk_version() if ( min_sdk_version is None or int(min_sdk_version) < 24 ): # AndroidSdkVersion.N logger.info( f"minSdkVersion: {min_sdk_version} is less than 24. Getting the first signerInfo only!" ) unverified_signer_infos_to_try = [signer_infos[0]] else: unverified_signer_infos_to_try = signer_infos # Extract certificates from the PKCS7 object certificates = signed_data['content']['certificates'] return_certificate = None list_certificates_verified = [] for signer_info in unverified_signer_infos_to_try: try: matching_certificate_verified = ( self.verify_signer_info_against_sig_file( signed_data, certificates, signer_info, sf_object, max_sdk_version, ) ) except (ValueError, TypeError, OSError, InvalidSignature) as e: logger.error( f"The following exception was raised while verifying the certificate: {e}" ) return ( None # the validation stops due to the exception raised! ) if matching_certificate_verified is not None: list_certificates_verified.append( matching_certificate_verified ) if not list_certificates_verified: logger.error( f"minSdkVersion: {min_sdk_version}, # of SignerInfos: {len(unverified_signer_infos_to_try)}. None Verified!" ) else: return_certificate = list_certificates_verified[0] return return_certificate def verify_signer_info_against_sig_file( self, signed_data: asn1crypto.cms.ContentInfo, certificates: asn1crypto.cms.CertificateSet, signer_info: asn1crypto.cms.SignerInfo, sf_object: str, max_sdk_version: Union[int, None], ) -> Union[bytes, None]: matching_certificate = self.find_certificate(certificates, signer_info) matching_certificate_verified = None digest_algorithm, crypto_hash_algorithm = self.get_hash_algorithm( signer_info ) if matching_certificate is None: raise ValueError( "Signing certificate referenced in SignerInfo not found in SignedData" ) else: if signer_info['signed_attrs'].native: logger.info("Signed Attributes detected!") signed_attrs = signer_info['signed_attrs'] signed_attrs_dict = OrderedDict() for attr in signed_attrs: if attr['type'].dotted in signed_attrs_dict: raise ValueError( f"Duplicate signed attribute: {attr['type'].dotted}" ) signed_attrs_dict[attr['type'].dotted] = attr['values'] # Check content type attribute (for Android N and newer) if max_sdk_version is None or int(max_sdk_version) >= 24: content_type_oid = ( '1.2.840.113549.1.9.3' # OID for contentType ) if content_type_oid not in signed_attrs_dict: raise ValueError( "No Content Type in signed attributes" ) content_type = signed_attrs_dict[content_type_oid][ 0 ].native if ( content_type != signed_data['content']['encap_content_info'][ 'content_type' ].native ): logger.error( "Content Type mismatch. Continuing to next SignerInfo, if any." ) return None # Check message digest attribute message_digest_oid = ( '1.2.840.113549.1.9.4' # OID for messageDigest ) if message_digest_oid not in signed_attrs_dict: raise ValueError("No content digest in signed attributes") expected_signature_file_digest = signed_attrs_dict[ message_digest_oid ][0].native hash_algo = digest_algorithm() hash_algo.update(sf_object) actual_digest = hash_algo.digest() # Compare digests if actual_digest != expected_signature_file_digest: logger.error( "Digest mismatch. Continuing to next SignerInfo, if any." ) return None signed_attrs_dump = signed_attrs.dump() # Modify the first byte to 0x31 for UNIVERSAL SET signed_attrs_dump = b'\x31' + signed_attrs_dump[1:] matching_certificate_verified = self.verify_signature( signer_info, matching_certificate, signed_attrs_dump, crypto_hash_algorithm, ) else: matching_certificate_verified = self.verify_signature( signer_info, matching_certificate, sf_object, crypto_hash_algorithm, ) return matching_certificate_verified @staticmethod def verify_signature( signer_info: asn1crypto.cms.SignerInfo, matching_certificate, signed_data, crypto_hash_algorithm ) -> bytes: matching_certificate_verified = None signature = signer_info['signature'].native # Load the certificate using asn1crypto as it can handle more cases (v1-only-with-rsa-1024-cert-not-der.apk) cert = x509.Certificate.load(matching_certificate.chosen.dump()) public_key_info = cert.public_key # Convert the ASN.1 public key to a cryptography-compatible object public_key_der = public_key_info.dump() public_key = serialization.load_der_public_key( public_key_der, backend=default_backend() ) try: # RSA Key if isinstance(public_key, rsa.RSAPublicKey): public_key.verify( signature, signed_data, padding.PKCS1v15(), crypto_hash_algorithm(), ) # DSA Key elif isinstance(public_key, dsa.DSAPublicKey): public_key.verify( signature, signed_data, crypto_hash_algorithm() ) # EC Key elif isinstance(public_key, ec.EllipticCurvePublicKey): public_key.verify( signature, signed_data, ec.ECDSA(crypto_hash_algorithm()) ) else: raise ValueError( f"Unsupported key algorithm: {public_key.__class__.__name__.lower()}" ) # If verification succeeds, return the certificate matching_certificate_verified = matching_certificate.chosen.dump() except InvalidSignature: logger.info( f"The public key of the certificate: {hashlib.sha256(matching_certificate.chosen.dump()).hexdigest()} " f"is not associated with the signature!" ) return matching_certificate_verified @staticmethod def get_hash_algorithm(signer_info: asn1crypto.cms.SignerInfo) -> dict[str, hashes.HashAlgorithm]: # Determine the hash algorithm from the SignerInfo digest_algorithm = signer_info['digest_algorithm']['algorithm'].native # Map the digest algorithm to a hash function hash_algorithms = { 'md5': (md5, hashes.MD5), 'sha1': (sha1, hashes.SHA1), 'sha224': (sha224, hashes.SHA224), 'sha256': (sha256, hashes.SHA256), 'sha384': (sha384, hashes.SHA384), 'sha512': (sha512, hashes.SHA512), } if digest_algorithm not in hash_algorithms: raise ValueError(f"Unsupported hash algorithm: {digest_algorithm}") return hash_algorithms[digest_algorithm] def find_certificate( self, signed_data_certificates: asn1crypto.cms.CertificateSet, signer_info: asn1crypto.cms.SignerInfo) -> Union[asn1crypto.x509.Certificate, None]: """ From the bag of certs, obtain the certificate referenced by the `asn1crypto.cms.SignerInfo`. :param signed_data_certificates: List of certificates in the SignedData. :param signer_info: `SignerInfo` object containing the issuer and serial number reference. :returns: The matching certificate if found, otherwise None. """ matching_certificate = None issuer_and_serial_number = signer_info['sid'] issuer_str = self.canonical_name( issuer_and_serial_number.chosen['issuer'] ) serial_number = issuer_and_serial_number.native['serial_number'] # # Create a x509.Name object for the issuer in the SignerInfo # issuer_name = x509.Name.build(issuer) # issuer_str = self.canonical_name(issuer_name) for cert in signed_data_certificates: if cert.name == 'certificate': cert_issuer = self.canonical_name( cert.chosen['tbs_certificate']['issuer'] ) cert_serial_number = cert.native['tbs_certificate'][ 'serial_number' ] # Compare the canonical string representations of the issuers and the serial numbers if ( cert_issuer == issuer_str and cert_serial_number == serial_number ): matching_certificate = cert break return matching_certificate def get_certificate(self, filename: str) -> Union[asn1crypto.x509.Certificate, None]: """ Return a X.509 certificate object by giving the name in the apk file :param filename: filename of the signature file in the APK :returns: the certificate object """ cert = self.get_certificate_der(filename) if cert: certificate = asn1crypto.x509.Certificate.load(cert) else: certificate = None return certificate def canonical_name(self, name: asn1crypto.x509.Name, android: bool = False) -> str: """ ``` * Method is dual-licensed under the Apache License 2.0 and GPLv3+. * The original author has granted permission to use this code snippet under the * Apache License 2.0 for inclusion in this project. * https://github.com/obfusk/x509_canonical_name.py/blob/master/x509_canonical_name.py ``` Returns canonical representation of `asn1crypto.x509.Name` as str (with raw control characters in places those are not stripped by normalisation). """ # return ",".join("+".join(f"{t}:{v}" for _, t, v in avas) for avas in self.comparison_name(name)) return ",".join( "+".join(f"{t}={v}" for t, v in avas) for avas in self.comparison_name(name, android=android) ) def comparison_name( self, name: x509.Name, *, android: bool = False ) -> List[List[Tuple[str, str]]]: """ ``` * Method is dual-licensed under the Apache License 2.0 and GPLv3+. * The original author has granted permission to use this code snippet under the * Apache License 2.0 for inclusion in this project. * https://github.com/obfusk/x509_canonical_name.py/blob/master/x509_canonical_name.py ``` Canonical representation of x509.Name as nested list. Returns a list of RDNs which are a list of AVAs which are a (type, value) tuple, where type is the standard name or dotted OID, and value is the normalised string representation of the value. """ return [ [(t, nv) for _, t, nv, _ in avas] for avas in self.x509_ordered_name(name, android=android) ] @staticmethod def x509_ordered_name( name: x509.Name, *, # type: ignore[no-any-unimported] android: bool = False, ) -> List[List[Tuple[int, str, str, str]]]: """ ``` * Method is dual-licensed under the Apache License 2.0 and GPLv3+. * The original author has granted permission to use this code snippet under the * Apache License 2.0 for inclusion in this project. * https://github.com/obfusk/x509_canonical_name.py/blob/master/x509_canonical_name.py ``` Representation of `x509.Name` as nested list, in canonical ordering (but also including non-canonical pre-normalised string values). Returns a list of RDNs which are a list of AVAs which are a (oid, type, normalised_value, esc_value) tuple, where oid is 0 for standard names and 1 for dotted OIDs, type is the standard name or dotted OID, normalised_value is the normalised string representation of the value, and esc_value is the string value before normalisation (but after escaping). NB: control characters are not escaped, only characters in ",+<>;\"\\" and "#" at the start (before "whitespace" trimming) are. [X500Principal.getName](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/javax/security/auth/x500/X500Principal.html#getName(java.lang.String)) [AVA.java](https://github.com/openjdk/jdk/blob/jdk-21%2B35/src/java.base/share/classes/sun/security/x509/AVA.java#L805) [RDN.java (472)](https://github.com/openjdk/jdk/blob/jdk-21%2B35/src/java.base/share/classes/sun/security/x509/RDN.java#L472) [RDN.java (481)](https://android.googlesource.com/platform/libcore/+/refs/heads/android14-release/ojluni/src/main/java/sun/security/x509/RDN.java#481) """ def key( ava: Tuple[int, str, str, str] ) -> Tuple[int, Union[str, List[int]], str]: o, t, nv, _ = ava if android and o: return o, [int(x) for x in t.split(".")], nv return o, t, nv DS, U8, PS = ( x509.DirectoryString, x509.UTF8String, x509.PrintableString, ) oids = { "2.5.4.3": ("common_name", "cn"), "2.5.4.6": ("country_name", "c"), "2.5.4.7": ("locality_name", "l"), "2.5.4.8": ("state_or_province_name", "st"), "2.5.4.9": ("street_address", "street"), "2.5.4.10": ("organization_name", "o"), "2.5.4.11": ("organizational_unit_name", "ou"), "0.9.2342.19200300.100.1.1": ("user_id", "uid"), "0.9.2342.19200300.100.1.25": ("domain_component", "dc"), } esc = {ord(c): f"\\{c}" for c in ",+<>;\"\\"} cws = "".join( chr(i) for i in range(32 + 1) ) # control (but not esc) and whitespace data = [] for rdn in reversed(name.chosen): avas = [] for ava in rdn: at, av = ava["type"], ava["value"] if at.dotted in oids: o, t = 0, oids[at.dotted][1] # order standard before OID else: o, t = 1, at.dotted if o or not ( isinstance(av, DS) and isinstance(av.chosen, (U8, PS)) ): ev = nv = "#" + binascii.hexlify(av.dump()).decode() else: ev = (av.native or "").translate(esc) if ev.startswith("#"): ev = "\\" + ev nv = unicodedata.normalize( "NFKD", re.sub(r" +", " ", ev).strip(cws).upper().lower(), ) avas.append((o, t, nv, ev)) data.append(sorted(avas, key=key)) return data def new_zip( self, filename: str, deleted_files: Union[str, None] = None, new_files: dict = {}, ) -> None: """ Create a new zip file :param filename: the output filename of the zip :param deleted_files: a regex pattern to remove specific file, or `None` :param new_files: a dictionnary of new files (key:filename, value:content of the file) """ zout = zipfile.ZipFile(filename, 'w') for item in self.zip.infolist(): # Block one: deleted_files, or deleted_files and new_files if deleted_files is not None: if re.match(deleted_files, item) is None: # if the regex of deleted_files doesn't match the filename if new_files is not False: if item in new_files: # and if the filename is in new_files zout.writestr(item, new_files[item]) continue # Otherwise, write the original file. buffer = self.zip.read(item) zout.writestr(item, buffer) # Block two: deleted_files is None, new_files is not empty elif new_files is not False: if item in new_files: zout.writestr(item, new_files[item]) else: buffer = self.zip.read(item) zout.writestr(item, buffer) # Block three: deleted_files is None, new_files is empty. # Just write out the default zip else: buffer = self.zip.read(item) zout.writestr(item, buffer) zout.close() def get_android_manifest_axml(self) -> Union[AXMLPrinter, None]: """ Return the [AXMLPrinter][androguard.core.axml.AXMLPrinter] object which corresponds to the `AndroidManifest.xml` file :returns: the `AXMLPrinter` object """ try: return self.axml["AndroidManifest.xml"] except KeyError: return None def get_android_manifest_xml(self) -> Union[lxml.etree.Element, None]: """ Return the parsed xml object which corresponds to the `AndroidManifest.xml` file :returns: the parsed xml object """ try: return self.xml["AndroidManifest.xml"] except KeyError: return None def get_android_resources(self) -> Union[ARSCParser, None]: """ Return the [ARSCParser][androguard.core.axml.ARSCParser] object which corresponds to the `resources.arsc` file :returns: the `ARSCParser` object """ try: return self.arsc["resources.arsc"] except KeyError: if "resources.arsc" not in self.zip.namelist(): # There is a rare case, that no resource file is supplied. # Maybe it was added manually, thus we check here return None self.arsc["resources.arsc"] = ARSCParser( self.zip.read("resources.arsc") ) return self.arsc["resources.arsc"] def is_signed(self) -> bool: """ Returns true if any of v1, v2, or v3 signatures were found. :returns: True if any of v1, v2, or v3 signatures were found, else False """ return ( self.is_signed_v1() or self.is_signed_v2() or self.is_signed_v3() ) def is_signed_v1(self) -> bool: """ Returns `True` if a v1 / JAR signature was found. Returning `True` does not mean that the file is properly signed! It just says that there is a signature file which needs to be validated. :returns: `True` if a v1 / JAR signature was found, else `False` """ return self.get_signature_name() is not None def is_signed_v2(self) -> bool: """ Returns `True` of a v2 / APK signature was found. Returning `True` does not mean that the file is properly signed! It just says that there is a signature file which needs to be validated. :returns: `True` of a v2 / APK signature was found, else `False` """ if self._is_signed_v2 is None: self.parse_v2_v3_signature() return self._is_signed_v2 def is_signed_v3(self) -> bool: """ Returns `True` of a v3 / APK signature was found. Returning `True` does not mean that the file is properly signed! It just says that there is a signature file which needs to be validated. :returns: `True` of a v3 / APK signature was found, else `False` """ if self._is_signed_v3 is None: self.parse_v2_v3_signature() return self._is_signed_v3 def read_uint32_le(self, io_stream) -> int: """read a `uint32_le` from `io_stream` :param io_stream: the stream to get a `uint32_le` from :return: the `uint32_le` value """ (value,) = unpack(' list[tuple[int, bytes]]: """Parse digests :param digest_bytes: the digests bytes :returns: a list of tuple where the first element is the `algorithm_id` and the second is the digest bytes """ if not len(digest_bytes): return [] digests = [] block = io.BytesIO(digest_bytes) data_len = self.read_uint32_le(block) while block.tell() < data_len: algorithm_id = self.read_uint32_le(block) digest_len = self.read_uint32_le(block) digest = block.read(digest_len) digests.append((algorithm_id, digest)) return digests def parse_v2_v3_signature(self) -> None: # Need to find an v2 Block in the APK. # The Google Docs gives you the following rule: # * go to the end of the ZIP File # * search for the End of Central directory # * then jump to the beginning of the central directory # * Read now the magic of the signing block # * before the magic there is the size_of_block, so we can jump to # the beginning. # * There should be again the size_of_block # * Now we can read the Key-Values # * IDs with an unknown value should be ignored. f = io.BytesIO(self.get_raw()) size_central = None offset_central = None # Go to the end f.seek(-1, io.SEEK_END) # we know the minimal length for the central dir is 16+4+2 f.seek(-20, io.SEEK_CUR) while f.tell() > 0: f.seek(-1, io.SEEK_CUR) (r,) = unpack('<4s', f.read(4)) if r == self._PK_END_OF_CENTRAL_DIR: # Read central dir ( this_disk, disk_central, this_entries, total_entries, size_central, offset_central, ) = unpack(' None: """ Parse the V2 signing block and extract all features """ self._v3_signing_data = [] # calling is_signed_v3 should also load the signature, if any if not self.is_signed_v3(): return block_bytes = self._v2_blocks[self._APK_SIG_KEY_V3_SIGNATURE] block = io.BytesIO(block_bytes) view = block.getvalue() # V3 signature Block data format: # # * signer: # * signed data: # * digests: # * signature algorithm ID (uint32) # * digest (length-prefixed) # * certificates # * minSDK # * maxSDK # * additional attributes # * minSDK # * maxSDK # * signatures # * publickey size_sequence = self.read_uint32_le(block) if size_sequence + 4 != len(block_bytes): raise BrokenAPKError( "size of sequence and blocksize does not match" ) while block.tell() < len(block_bytes): off_signer = block.tell() size_signer = self.read_uint32_le(block) # read whole signed data, since we might to parse # content within the signed data, and mess up offset len_signed_data = self.read_uint32_le(block) signed_data_bytes = block.read(len_signed_data) signed_data = io.BytesIO(signed_data_bytes) # Digests len_digests = self.read_uint32_le(signed_data) raw_digests = signed_data.read(len_digests) digests = self.parse_signatures_or_digests(raw_digests) # Certs certs = [] len_certs = self.read_uint32_le(signed_data) start_certs = signed_data.tell() while signed_data.tell() < start_certs + len_certs: len_cert = self.read_uint32_le(signed_data) cert = signed_data.read(len_cert) certs.append(cert) # versions signed_data_min_sdk = self.read_uint32_le(signed_data) signed_data_max_sdk = self.read_uint32_le(signed_data) # Addional attributes len_attr = self.read_uint32_le(signed_data) attr = signed_data.read(len_attr) signed_data_object = APKV3SignedData() signed_data_object._bytes = signed_data_bytes signed_data_object.digests = digests signed_data_object.certificates = certs signed_data_object.additional_attributes = attr signed_data_object.minSDK = signed_data_min_sdk signed_data_object.maxSDK = signed_data_max_sdk # versions (should be the same as signed data's versions) signer_min_sdk = self.read_uint32_le(block) signer_max_sdk = self.read_uint32_le(block) # Signatures len_sigs = self.read_uint32_le(block) raw_sigs = block.read(len_sigs) sigs = self.parse_signatures_or_digests(raw_sigs) # PublicKey len_publickey = self.read_uint32_le(block) publickey = block.read(len_publickey) signer = APKV3Signer() signer._bytes = view[off_signer : off_signer + size_signer] signer.signed_data = signed_data_object signer.signatures = sigs signer.public_key = publickey signer.minSDK = signer_min_sdk signer.maxSDK = signer_max_sdk self._v3_signing_data.append(signer) def parse_v2_signing_block(self) -> None: """ Parse the V2 signing block and extract all features """ self._v2_signing_data = [] # calling is_signed_v2 should also load the signature if not self.is_signed_v2(): return block_bytes = self._v2_blocks[self._APK_SIG_KEY_V2_SIGNATURE] block = io.BytesIO(block_bytes) view = block.getvalue() # V2 signature Block data format: # # * signer: # * signed data: # * digests: # * signature algorithm ID (uint32) # * digest (length-prefixed) # * certificates # * additional attributes # * signatures # * publickey size_sequence = self.read_uint32_le(block) if size_sequence + 4 != len(block_bytes): raise BrokenAPKError( "size of sequence and blocksize does not match" ) while block.tell() < len(block_bytes): off_signer = block.tell() size_signer = self.read_uint32_le(block) # read whole signed data, since we might to parse # content within the signed data, and mess up offset len_signed_data = self.read_uint32_le(block) signed_data_bytes = block.read(len_signed_data) signed_data = io.BytesIO(signed_data_bytes) # Digests len_digests = self.read_uint32_le(signed_data) raw_digests = signed_data.read(len_digests) digests = self.parse_signatures_or_digests(raw_digests) # Certs certs = [] len_certs = self.read_uint32_le(signed_data) start_certs = signed_data.tell() while signed_data.tell() < start_certs + len_certs: len_cert = self.read_uint32_le(signed_data) cert = signed_data.read(len_cert) certs.append(cert) # Additional attributes len_attr = self.read_uint32_le(signed_data) attributes = signed_data.read(len_attr) signed_data_object = APKV2SignedData() signed_data_object._bytes = signed_data_bytes signed_data_object.digests = digests signed_data_object.certificates = certs signed_data_object.additional_attributes = attributes # Signatures len_sigs = self.read_uint32_le(block) raw_sigs = block.read(len_sigs) sigs = self.parse_signatures_or_digests(raw_sigs) # PublicKey len_publickey = self.read_uint32_le(block) publickey = block.read(len_publickey) signer = APKV2Signer() signer._bytes = view[off_signer : off_signer + size_signer] signer.signed_data = signed_data_object signer.signatures = sigs signer.public_key = publickey self._v2_signing_data.append(signer) def get_public_keys_der_v3(self) -> list[bytes]: """ Return a list of DER coded X.509 public keys from the v3 signature block :returns: the list of public key bytes """ if self._v3_signing_data == None: self.parse_v3_signing_block() public_keys = [] for signer in self._v3_signing_data: public_keys.append(signer.public_key) return public_keys def get_public_keys_der_v2(self) -> list[bytes]: """ Return a list of DER coded X.509 public keys from the v3 signature block :returns: the list of public key bytes """ if self._v2_signing_data == None: self.parse_v2_signing_block() public_keys = [] for signer in self._v2_signing_data: public_keys.append(signer.public_key) return public_keys def get_certificates_der_v3(self) -> list[bytes]: """ Return a list of DER coded X.509 certificates from the v3 signature block :returns: the list of public key bytes """ if self._v3_signing_data == None: self.parse_v3_signing_block() certs = [] for signed_data in [ signer.signed_data for signer in self._v3_signing_data ]: for cert in signed_data.certificates: certs.append(cert) return certs def get_certificates_der_v2(self) -> list[bytes]: """ Return a list of DER coded X.509 certificates from the v3 signature block :returns: the list of public key bytes """ if self._v2_signing_data == None: self.parse_v2_signing_block() certs = [] for signed_data in [ signer.signed_data for signer in self._v2_signing_data ]: for cert in signed_data.certificates: certs.append(cert) return certs def get_public_keys_v3(self) -> list[asn1crypto.keys.PublicKeyInfo]: """ Return a list of `asn1crypto.keys.PublicKeyInfo` which are found in the v3 signing block. :returns: a list of the found `asn1crypto.keys.PublicKeyInfo` """ return [ keys.PublicKeyInfo.load(pkey) for pkey in self.get_public_keys_der_v3() ] def get_public_keys_v2(self) -> list[asn1crypto.keys.PublicKeyInfo]: """ Return a list of `asn1crypto.keys.PublicKeyInfo` which are found in the v2 signing block. :returns: a list of the found `asn1crypto.keys.PublicKeyInfo` """ return [ keys.PublicKeyInfo.load(pkey) for pkey in self.get_public_keys_der_v2() ] def get_certificates_v3(self) -> list[asn1crypto.x509.Certificate]: """ Return a list of `asn1crypto.x509.Certificate` which are found in the v3 signing block. Note that we simply extract all certificates regardless of the signer. Therefore this is just a list of all certificates found in all signers. :returns: a list of the found `asn1crypto.x509.Certificate` """ return [ x509.Certificate.load(cert) for cert in self.get_certificates_der_v3() ] def get_certificates_v2(self) -> list[asn1crypto.x509.Certificate]: """ Return a list of `asn1crypto.x509.Certificate` which are found in the v2 signing block. Note that we simply extract all certificates regardless of the signer. Therefore this is just a list of all certificates found in all signers. :returns: a list of the found `asn1crypto.x509.Certificate` """ return [ x509.Certificate.load(cert) for cert in self.get_certificates_der_v2() ] def get_certificates_v1(self) -> list[Union[x509.Certificate, None]]: """ Return a list of verified `asn1crypto.x509.Certificate` which are found in the META-INF folder (v1 signing). """ certs = [] for x in self.get_signature_names(): cc = self.get_certificate_der(x) if cc is not None: certs.append(x509.Certificate.load(cc)) return certs def get_certificates(self) -> list[asn1crypto.x509.Certificate]: """ Return a list of unique `asn1crypto.x509.Certificate` which are found in v1, v2 and v3 signing Note that we simply extract all certificates regardless of the signer. Therefore this is just a list of all certificates found in all signers. Exception is v1, for which the certificate returned is verified. :returns: a list of the found `asn1crypto.x509.Certificate` """ fps = [] certs = [] for x in ( self.get_certificates_v1() + self.get_certificates_v2() + self.get_certificates_v3() ): if x.sha256 not in fps: fps.append(x.sha256) certs.append(x) return certs def get_signature_name(self) -> Union[str, None]: """ Return the name of the first signature file found. :returns: the name of the first signature file, or `None` if not signed """ if self.get_signature_names(): return self.get_signature_names()[0] else: # Unsigned APK return None def get_signature_names(self) -> list[str]: """ Return a list of the signature file names (v1 Signature / JAR Signature) :returns: List of filenames matching a Signature """ signature_expr = re.compile(r'\AMETA-INF/(?s:.)*\.(DSA|EC|RSA)\Z') signatures = [] for i in self.get_files(): if signature_expr.search(i): if "{}.SF".format(i.rsplit(".", 1)[0]) in self.get_files(): signatures.append(i) else: logger.warning( "v1 signature file {} missing .SF file - Partial signature!".format( i ) ) return signatures def get_signature(self) -> Union[str, None]: """ Return the data of the first signature file found (v1 Signature / JAR Signature) :returns: First signature name or None if not signed """ if self.get_signatures(): return self.get_signatures()[0] else: return None def get_signatures(self) -> list[bytes]: """ Return a list of the data of the signature files. Only v1 / JAR Signing. :returns: list of bytes """ signature_expr = re.compile(r'\AMETA-INF/(?s:.)*\.(DSA|EC|RSA)\Z') signature_datas = [] for i in self.get_files(): if signature_expr.search(i): signature_datas.append(self.get_file(i)) return signature_datas def show(self) -> None: self.get_files_types() print("FILES: ") for i in self.get_files(): try: print("\t", i, self._files[i], "%x" % self.files_crc32[i]) except KeyError: print("\t", i, "%x" % self.files_crc32[i]) print("DECLARED PERMISSIONS:") declared_permissions = self.get_declared_permissions() for i in declared_permissions: print("\t", i) print("REQUESTED PERMISSIONS:") requested_permissions = self.get_permissions() for i in requested_permissions: print("\t", i) print("MAIN ACTIVITY: ", self.get_main_activity()) print("ACTIVITIES: ") activities = self.get_activities() for i in activities: filters = self.get_intent_filters("activity", i) print("\t", i, filters or "") print("SERVICES: ") services = self.get_services() for i in services: filters = self.get_intent_filters("service", i) print("\t", i, filters or "") print("RECEIVERS: ") receivers = self.get_receivers() for i in receivers: filters = self.get_intent_filters("receiver", i) print("\t", i, filters or "") print("PROVIDERS: ", self.get_providers()) if self.is_signed_v1(): print("CERTIFICATES v1:") for c in self.get_signature_names(): show_Certificate(self.get_certificate(c)) if self.is_signed_v2(): print("CERTIFICATES v2:") for c in self.get_certificates_v2(): show_Certificate(c) def show_Certificate(cert:asn1crypto.x509.Certificate, short:bool=False) -> None: """ Print Fingerprints, Issuer and Subject of an X509 Certificate. :param cert: `asn1crypto.x509.Certificate` to print :param short: Print in shortform for DN (Default: False) """ print("SHA1 Fingerprint: {}".format(cert.sha1_fingerprint)) print("SHA256 Fingerprint: {}".format(cert.sha256_fingerprint)) print( "Issuer: {}".format( get_certificate_name_string(cert.issuer.native, short=short) ) ) print( "Subject: {}".format( get_certificate_name_string(cert.subject.native, short=short) ) ) def ensure_final_value(packageName: str, arsc: ARSCParser, value: str) -> str: """Ensure incoming value is always the value, not the resid androguard will sometimes return the Android "resId" aka Resource ID instead of the actual value. This checks whether the value is actually a resId, then performs the Android Resource lookup as needed. :returns: the final Android Resource value """ if value: returnValue = value if value[0] == '@': # TODO: @packagename:DEADBEEF is not supported here! try: # can be a literal value or a resId res_id = int('0x' + value[1:], 16) res_id = arsc.get_id(packageName, res_id)[1] returnValue = arsc.get_string(packageName, res_id)[1] except (ValueError, TypeError): pass return returnValue return '' def get_apkid(apkfile: str) -> tuple[str, str, str]: """Read (appid, versionCode, versionName) from an APK This first tries to do quick binary XML parsing to just get the values that are needed. It will fallback to full androguard parsing, which is slow, if it can't find the versionName value or versionName is set to a Android String Resource (e.g. an integer hex value that starts with @). :raises RuntimeError: if manifest is malformed :returns: tuple of format (appid, versionCode, versionName) of a given apkfile """ logger.debug("GET_APKID") if not os.path.exists(apkfile): logger.error("'{apkfile}' does not exist!".format(apkfile=apkfile)) appid = None versionCode = None versionName = None apk = ZipEntry.parse(apkfile, False) manifest = apk.read('AndroidManifest.xml') axml = AXMLParser(manifest) count = 0 while axml.is_valid(): _type = next(axml) count += 1 if _type == START_TAG: for i in range(0, axml.getAttributeCount()): name = axml.getAttributeName(i) _type = axml.getAttributeValueType(i) _data = axml.getAttributeValueData(i) value = format_value( _type, _data, lambda _: axml.getAttributeValue(i) ) if appid is None and name == 'package': appid = value elif versionCode is None and name == 'versionCode': if value.startswith('0x'): versionCode = str(int(value, 16)) else: versionCode = value elif versionName is None and name == 'versionName': versionName = value if axml.name == 'manifest': break elif _type == END_TAG or _type == TEXT or _type == END_DOCUMENT: raise RuntimeError( '{path}: must be the first element in AndroidManifest.xml'.format( path=apkfile ) ) if not versionName or versionName[0] == '@': a = APK(apkfile) versionName = ensure_final_value( a.package, a.get_android_resources(), a.get_androidversion_name() ) if not versionName: versionName = '' # versionName is expected to always be a str return appid, versionCode, versionName.strip('\0') ================================================ FILE: libs/androguard/core/axml/__init__.py ================================================ # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations import binascii import collections import io import re from collections import defaultdict from struct import pack, unpack from typing import BinaryIO, Union from xml.sax.saxutils import escape from loguru import logger from lxml import etree from androguard.core.resources import public from .types import * # Constants for ARSC Files # see http://aospxref.com/android-13.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#233 RES_NULL_TYPE = 0x0000 RES_STRING_POOL_TYPE = 0x0001 RES_TABLE_TYPE = 0x0002 RES_XML_TYPE = 0x0003 RES_XML_FIRST_CHUNK_TYPE = 0x0100 RES_XML_START_NAMESPACE_TYPE = 0x0100 RES_XML_END_NAMESPACE_TYPE = 0x0101 RES_XML_START_ELEMENT_TYPE = 0x0102 RES_XML_END_ELEMENT_TYPE = 0x0103 RES_XML_CDATA_TYPE = 0x0104 RES_XML_LAST_CHUNK_TYPE = 0x017F RES_XML_RESOURCE_MAP_TYPE = 0x0180 RES_TABLE_PACKAGE_TYPE = 0x0200 RES_TABLE_TYPE_TYPE = 0x0201 RES_TABLE_TYPE_SPEC_TYPE = 0x0202 RES_TABLE_LIBRARY_TYPE = 0x0203 RES_TABLE_OVERLAYABLE_TYPE = 0x0204 RES_TABLE_OVERLAYABLE_POLICY_TYPE = 0x0205 RES_TABLE_STAGED_ALIAS_TYPE = 0x0206 # Flags in the STRING Section SORTED_FLAG = 1 << 0 UTF8_FLAG = 1 << 8 # Position of the fields inside an attribute ATTRIBUTE_IX_NAMESPACE_URI = 0 ATTRIBUTE_IX_NAME = 1 ATTRIBUTE_IX_VALUE_STRING = 2 ATTRIBUTE_IX_VALUE_TYPE = 3 ATTRIBUTE_IX_VALUE_DATA = 4 ATTRIBUTE_LENGTH = 5 # Internally used state variables for AXMLParser START_DOCUMENT = 0 END_DOCUMENT = 1 START_TAG = 2 END_TAG = 3 TEXT = 4 # Table used to lookup functions to determine the value representation in ARSCParser TYPE_TABLE = { TYPE_ATTRIBUTE: "attribute", TYPE_DIMENSION: "dimension", TYPE_FLOAT: "float", TYPE_FRACTION: "fraction", TYPE_INT_BOOLEAN: "int_boolean", TYPE_INT_COLOR_ARGB4: "int_color_argb4", TYPE_INT_COLOR_ARGB8: "int_color_argb8", TYPE_INT_COLOR_RGB4: "int_color_rgb4", TYPE_INT_COLOR_RGB8: "int_color_rgb8", TYPE_INT_DEC: "int_dec", TYPE_INT_HEX: "int_hex", TYPE_NULL: "null", TYPE_REFERENCE: "reference", TYPE_STRING: "string", } RADIX_MULTS = [0.00390625, 3.051758e-005, 1.192093e-007, 4.656613e-010] DIMENSION_UNITS = ["px", "dip", "sp", "pt", "in", "mm"] FRACTION_UNITS = ["%", "%p"] COMPLEX_UNIT_MASK = 0x0F class ResParserError(Exception): """Exception for the parsers""" pass def complexToFloat(xcomplex) -> float: """ Convert a complex unit into float """ return float(xcomplex & 0xFFFFFF00) * RADIX_MULTS[(xcomplex >> 4) & 3] class StringBlock: """ StringBlock is a CHUNK inside an AXML File: `ResStringPool_header` It contains all strings, which are used by referencing to ID's See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#436 """ def __init__(self, buff: BinaryIO, header: ARSCHeader) -> None: """ :param buff: buffer which holds the string block :param header: a instance of [ARSCHeader][androguard.core.axml.ARSCHeader] """ self._cache = {} self.header = header # We already read the header (which was chunk_type and chunk_size # Now, we read the string_count: self.stringCount = unpack(' 0: logger.info( "Styles Offset given, but styleCount is zero. " "This is not a problem but could indicate packers." ) self.m_stringOffsets = [] self.m_styleOffsets = [] self.m_charbuff = "" self.m_styles = [] # Next, there is a list of string following. # This is only a list of offsets (4 byte each) for i in range(self.stringCount): self.m_stringOffsets.append(unpack('".format( self.stringCount, self.styleCount, self.m_isUTF8 ) def __getitem__(self, idx): """ Returns the string at the index in the string table :returns: the string """ return self.getString(idx) def __len__(self): """ Get the number of strings stored in this table :return: the number of strings """ return self.stringCount def __iter__(self): """ Iterable over all strings :returns: a generator over all strings """ for i in range(self.stringCount): yield self.getString(i) def getString(self, idx: int) -> str: """ Return the string at the index in the string table :param idx: index in the string table :return: the string """ if idx in self._cache: return self._cache[idx] if idx < 0 or not self.m_stringOffsets or idx >= self.stringCount: return "" offset = self.m_stringOffsets[idx] if self.m_isUTF8: self._cache[idx] = self._decode8(offset) else: self._cache[idx] = self._decode16(offset) return self._cache[idx] def getStyle(self, idx: int) -> int: """ Return the style associated with the index :param idx: index of the style :return: the style integer """ return self.m_styles[idx] def _decode8(self, offset: int) -> str: """ Decode an UTF-8 String at the given offset :param offset: offset of the string inside the data :raises ResParserError: if string is not null terminated :return: the decoded string """ # UTF-8 Strings contain two lengths, as they might differ: # 1) the UTF-16 length str_len, skip = self._decode_length(offset, 1) offset += skip # 2) the utf-8 string length encoded_bytes, skip = self._decode_length(offset, 1) offset += skip # Two checks should happen here: # a) offset + encoded_bytes surpassing the string_pool length and # b) non-null terminated strings which should be rejected # platform/frameworks/base/libs/androidfw/ResourceTypes.cpp#789 if len(self.m_charbuff) < (offset + encoded_bytes): logger.warning( f"String size: {offset + encoded_bytes} is exceeding string pool size. Returning empty string." ) return "" data = self.m_charbuff[offset : offset + encoded_bytes] if self.m_charbuff[offset + encoded_bytes] != 0: raise ResParserError( "UTF-8 String is not null terminated! At offset={}".format( offset ) ) return self._decode_bytes(data, 'utf-8', str_len) def _decode16(self, offset: int) -> str: """ Decode an UTF-16 String at the given offset :param offset: offset of the string inside the data :raises ResParserError: if string is not null terminated :return: the decoded string """ str_len, skip = self._decode_length(offset, 2) offset += skip # The len is the string len in utf-16 units encoded_bytes = str_len * 2 # Two checks should happen here: # a) offset + encoded_bytes surpassing the string_pool length and # b) non-null terminated strings which should be rejected # platform/frameworks/base/libs/androidfw/ResourceTypes.cpp#789 if len(self.m_charbuff) < (offset + encoded_bytes): logger.warning( f"String size: {offset + encoded_bytes} is exceeding string pool size. Returning empty string." ) return "" data = self.m_charbuff[offset : offset + encoded_bytes] if ( self.m_charbuff[ offset + encoded_bytes : offset + encoded_bytes + 2 ] != b"\x00\x00" ): raise ResParserError( "UTF-16 String is not null terminated! At offset={}".format( offset ) ) return self._decode_bytes(data, 'utf-16', str_len) @staticmethod def _decode_bytes(data: bytes, encoding: str, str_len: int) -> str: """ Generic decoding with length check. The string is decoded from bytes with the given encoding, then the length of the string is checked. The string is decoded using the "replace" method. :param data: bytes :param encoding: encoding name ("utf-8" or "utf-16") :param str_len: length of the decoded string :return: the decoded bytes """ string = data.decode(encoding, 'replace') if len(string) != str_len: logger.warning("invalid decoded string length") return string def _decode_length(self, offset: int, sizeof_char: int) -> tuple[int, int]: """ Generic Length Decoding at offset of string The method works for both 8 and 16 bit Strings. Length checks are enforced: * 8 bit strings: maximum of 0x7FFF bytes (See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/ResourceTypes.cpp#692) * 16 bit strings: maximum of 0x7FFFFFF bytes (See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/ResourceTypes.cpp#670) :param offset: offset into the string data section of the beginning of the string :param sizeof_char: number of bytes per char (1 = 8bit, 2 = 16bit) :returns: tuple of (length, read bytes) """ sizeof_2chars = sizeof_char << 1 fmt = "<2{}".format('B' if sizeof_char == 1 else 'H') highbit = 0x80 << (8 * (sizeof_char - 1)) length1, length2 = unpack( fmt, self.m_charbuff[offset : (offset + sizeof_2chars)] ) if (length1 & highbit) != 0: length = ((length1 & ~highbit) << (8 * sizeof_char)) | length2 size = sizeof_2chars else: length = length1 size = sizeof_char # These are true asserts, as the size should never be less than the values if sizeof_char == 1: assert ( length <= 0x7FFF ), "length of UTF-8 string is too large! At offset={}".format( offset ) else: assert ( length <= 0x7FFFFFFF ), "length of UTF-16 string is too large! At offset={}".format( offset ) return length, size def show(self) -> None: """ Print some information on stdout about the string table """ print( "StringBlock(stringsCount=0x%x, " "stringsOffset=0x%x, " "stylesCount=0x%x, " "stylesOffset=0x%x, " "flags=0x%x" ")" % ( self.stringCount, self.stringsOffset, self.styleCount, self.stylesOffset, self.flags, ) ) if self.stringCount > 0: print() print("String Table: ") for i, s in enumerate(self): print("{:08d} {}".format(i, repr(s))) if self.styleCount > 0: print() print("Styles Table: ") for i in range(self.styleCount): print("{:08d} {}".format(i, repr(self.getStyle(i)))) class AXMLParser: """ `AXMLParser` reads through all chunks in the AXML file and implements a state machine to return information about the current chunk, which can then be read by [AXMLPrinter][androguard.core.axml.AXMLPrinter]. An AXML file is a file which contains multiple chunks of data, defined by the `ResChunk_header`. There is no real file magic but as the size of the first header is fixed and the `type` of the `ResChunk_header` is set to `RES_XML_TYPE`, a file will usually start with `0x03000800`. But there are several examples where the `type` is set to something else, probably in order to fool parsers. Typically the `AXMLParser` is used in a loop which terminates if `m_event` is set to `END_DOCUMENT`. You can use the `next()` function to get the next chunk. Note that not all chunk types are yielded from the iterator! Some chunks are processed in the `AXMLParser` only. The parser will set [is_valid][androguard.core.axml.AXMLParser.is_valid] to `False` if it parses something not valid. Messages what is wrong are logged. See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#563 """ def __init__(self, raw_buff: bytes) -> None: logger.debug("AXMLParser") self._reset() self._valid = True self.axml_tampered = False self.buff = io.BufferedReader(io.BytesIO(raw_buff)) self.buff_size = self.buff.raw.getbuffer().nbytes self.packerwarning = False # Minimum is a single ARSCHeader, which would be a strange edge case... if self.buff_size < 8: logger.error( "Filesize is too small to be a valid AXML file! Filesize: {}".format( self.buff_size ) ) self._valid = False return # This would be even stranger, if an AXML file is larger than 4GB... # But this is not possible as the maximum chunk size is a unsigned 4 byte int. if self.buff_size > 0xFFFFFFFF: logger.error( "Filesize is too large to be a valid AXML file! Filesize: {}".format( self.buff_size ) ) self._valid = False return try: axml_header = ARSCHeader(self.buff) logger.debug("FIRST HEADER {}".format(axml_header)) except ResParserError as e: logger.error("Error parsing first resource header: %s", e) self._valid = False return self.filesize = axml_header.size if axml_header.header_size == 28024: # Can be a common error: the file is not an AXML but a plain XML # The file will then usually start with ' self.buff_size: logger.error( "This does not look like an AXML file. Declared filesize does not match real size: {} vs {}".format( self.filesize, self.buff_size ) ) self._valid = False return if self.filesize < self.buff_size: # The file can still be parsed up to the point where the chunk should end. self.axml_tampered = True logger.warning( "Declared filesize ({}) is smaller than total file size ({}). " "Was something appended to the file? Trying to parse it anyways.".format( self.filesize, self.buff_size ) ) # Not that severe of an error, we have plenty files where this is not # set correctly if axml_header.type != RES_XML_TYPE: self.axml_tampered = True logger.warning( "AXML file has an unusual resource type! " "Malware likes to to such stuff to anti androguard! " "But we try to parse it anyways. Resource Type: 0x{:04x}".format( axml_header.type ) ) # Now we parse the STRING POOL try: header = ARSCHeader(self.buff, expected_type=RES_STRING_POOL_TYPE) logger.debug("STRING_POOL {}".format(header)) except ResParserError as e: logger.error( "Error parsing resource header of string pool: {}".format(e) ) self._valid = False return if header.header_size != 0x1C: logger.error( "This does not look like an AXML file. String chunk header size does not equal 28! header size = {}".format( header.header_size ) ) self._valid = False return self.sb = StringBlock(self.buff, header) self.buff.seek(axml_header.header_size + header.size) # Stores resource ID mappings, if any self.m_resourceIDs = [] # Store a list of prefix/uri mappings encountered self.namespaces = [] def is_valid(self) -> bool: """ Get the state of the [AXMLPrinter][androguard.core.axml.AXMLPrinter]. if an error happend somewhere in the process of parsing the file, this flag is set to `False`. :returns: `True` if the `AXMLPrinter` finished parsing, or `False` if an error occurred """ logger.debug(self._valid) return self._valid def _reset(self): self.m_event = -1 self.m_lineNumber = -1 self.m_name = -1 self.m_namespaceUri = -1 self.m_attributes = [] self.m_idAttribute = -1 self.m_classAttribute = -1 self.m_styleAttribute = -1 def __next__(self): self._do_next() return self.m_event def _do_next(self): logger.debug("M_EVENT {}".format(self.m_event)) if self.m_event == END_DOCUMENT: return self._reset() while self._valid: # Stop at the declared filesize or at the end of the file if self.buff.tell() == self.filesize: self.m_event = END_DOCUMENT break # Again, we read an ARSCHeader try: possible_types = {256, 257, 258, 259, 260, 384} h = ARSCHeader(self.buff, possible_types=possible_types) logger.debug("NEXT HEADER {}".format(h)) except ResParserError as e: logger.error("Error parsing resource header: {}".format(e)) self._valid = False return # Special chunk: Resource Map. This chunk might be contained inside # the file, after the string pool. if h.type == RES_XML_RESOURCE_MAP_TYPE: logger.debug("AXML contains a RESOURCE MAP") # Check size: < 8 bytes mean that the chunk is not complete # Should be aligned to 4 bytes. if h.size < 8 or (h.size % 4) != 0: logger.error( "Invalid chunk size in chunk XML_RESOURCE_MAP" ) self._valid = False return for i in range((h.size - h.header_size) // 4): self.m_resourceIDs.append( unpack(' RES_XML_LAST_CHUNK_TYPE ): # h.size is the size of the whole chunk including the header. # We read already 8 bytes of the header, thus we need to # subtract them. logger.error( "Not a XML resource chunk type: 0x{:04x}. Skipping {} bytes".format( h.type, h.size ) ) self.buff.seek(h.end) continue # Check that we read a correct header if h.header_size != 0x10: logger.error( "XML Resource Type Chunk header size does not match 16! " "At chunk type 0x{:04x}, declared header size=0x{:04x}, chunk size=0x{:04x}".format( h.type, h.header_size, h.size ) ) self.buff.seek(h.end) continue # Line Number of the source file, only used as meta information (self.m_lineNumber,) = unpack(' uri {}: '{}'".format( prefix, s_prefix, uri, s_uri ) ) if s_uri == '': logger.warning( "Namespace prefix '{}' resolves to empty URI. " "This might be a packer.".format(s_prefix) ) if (prefix, uri) in self.namespaces: logger.debug( "Namespace mapping ({}, {}) already seen! " "This is usually not a problem but could indicate packers or broken AXML compilers.".format( prefix, uri ) ) self.namespaces.append((prefix, uri)) # We can continue with the next chunk, as we store the namespace # mappings for each tag continue if h.type == RES_XML_END_NAMESPACE_TYPE: # END_PREFIX contains again prefix and uri field (prefix,) = unpack('> 16) - 1 self.m_attribute_count = attributeCount & 0xFFFF self.m_styleAttribute = (self.m_classAttribute >> 16) - 1 self.m_classAttribute = (self.m_classAttribute & 0xFFFF) - 1 # Now, we parse the attributes. # Each attribute has 5 fields of 4 byte for i in range(0, self.m_attribute_count): # Each field is linearly parsed into the array # Each Attribute contains: # * Namespace URI (String ID) # * Name (String ID) # * Value # * Type # * Data for j in range(0, ATTRIBUTE_LENGTH): self.m_attributes.append( unpack('> 24 self.m_event = START_TAG break if h.type == RES_XML_END_ELEMENT_TYPE: (self.m_namespaceUri,) = unpack(' uint32_t index (self.m_name,) = unpack(' always zero # uint8_t dataType # uint32_t data # For now, we ingore these values size, res0, dataType, data = unpack(" str: """ Return the String associated with the tag name :returns: the string """ if self.m_name == -1 or ( self.m_event != START_TAG and self.m_event != END_TAG ): return '' return self.sb[self.m_name] @property def comment(self) -> Union[str, None]: """ Return the comment at the current position or None if no comment is given This works only for Tags, as the comments of Namespaces are silently dropped. Currently, there is no way of retrieving comments of namespaces. :returns: the comment string, or None if no comment exists """ if self.m_comment_index == 0xFFFFFFFF: return None return self.sb[self.m_comment_index] @property def namespace(self) -> str: """ Return the Namespace URI (if any) as a String for the current tag :returns: the namespace uri, or empty if namespace does not exist """ if self.m_name == -1 or ( self.m_event != START_TAG and self.m_event != END_TAG ): return '' # No Namespace if self.m_namespaceUri == 0xFFFFFFFF: return '' return self.sb[self.m_namespaceUri] @property def nsmap(self) -> dict[str, str]: """ Returns the current namespace mapping as a dictionary there are several problems with the map and we try to guess a few things here: 1) a URI can be mapped by many prefixes, so it is to decide which one to take 2) a prefix might map to an empty string (some packers) 3) uri+prefix mappings might be included several times 4) prefix might be empty :returns: the namespace mapping dictionary """ NSMAP = dict() # solve 3) by using a set for k, v in set(self.namespaces): s_prefix = self.sb[k] s_uri = self.sb[v] # Solve 2) & 4) by not including if s_uri != "" and s_prefix != "": # solve 1) by using the last one in the list NSMAP[s_prefix] = s_uri.strip() return NSMAP @property def text(self) -> str: """ Return the String assosicated with the current text :returns: the string associated with the current text """ if self.m_name == -1 or self.m_event != TEXT: return '' return self.sb[self.m_name] def getName(self) -> str: """ Legacy only! use `name` attribute instead """ return self.name def getText(self) -> str: """ Legacy only! use `text` attribute instead """ return self.text def getPrefix(self) -> str: """ Legacy only! use `namespace` attribute instead """ return self.namespace def _get_attribute_offset(self, index: int): """ Return the start inside the m_attributes array for a given attribute """ if self.m_event != START_TAG: logger.warning("Current event is not START_TAG.") offset = index * ATTRIBUTE_LENGTH if offset >= len(self.m_attributes): logger.warning("Invalid attribute index") return offset def getAttributeCount(self) -> int: """ Return the number of Attributes for a Tag or -1 if not in a tag :returns: the number of attributes """ if self.m_event != START_TAG: return -1 return self.m_attribute_count def getAttributeUri(self, index:int) -> int: """ Returns the numeric ID for the namespace URI of an attribute :returns: the namespace URI numeric id """ logger.debug(index) offset = self._get_attribute_offset(index) uri = self.m_attributes[offset + ATTRIBUTE_IX_NAMESPACE_URI] return uri def getAttributeNamespace(self, index:int) -> str: """ Return the Namespace URI (if any) for the attribute :returns: the attribute uri, or empty string if no namespace """ logger.debug(index) uri = self.getAttributeUri(index) # No Namespace if uri == 0xFFFFFFFF: return '' return self.sb[uri] def getAttributeName(self, index:int) -> str: """ Returns the String which represents the attribute name :returns: the attribute name """ logger.debug(index) offset = self._get_attribute_offset(index) name = self.m_attributes[offset + ATTRIBUTE_IX_NAME] res = self.sb[name] # If the result is a (null) string, we need to look it up. if name < len(self.m_resourceIDs): attr = self.m_resourceIDs[name] if attr in public.SYSTEM_RESOURCES['attributes']['inverse']: res = public.SYSTEM_RESOURCES['attributes']['inverse'][ attr ].replace("_", ":") if res != self.sb[name]: self.packerwarning = True if not res or res == ":": # Attach the HEX Number, so for multiple missing attributes we do not run # into problems. res = 'android:UNKNOWN_SYSTEM_ATTRIBUTE_{:08x}'.format(attr) return res def getAttributeValueType(self, index: int): """ Return the type of the attribute at the given index :param index: index of the attribute """ logger.debug(index) offset = self._get_attribute_offset(index) return self.m_attributes[offset + ATTRIBUTE_IX_VALUE_TYPE] def getAttributeValueData(self, index: int): """ Return the data of the attribute at the given index :param index: index of the attribute """ logger.debug(index) offset = self._get_attribute_offset(index) return self.m_attributes[offset + ATTRIBUTE_IX_VALUE_DATA] def getAttributeValue(self, index: int) -> str: """ This function is only used to look up strings All other work is done by [format_value][androguard.core.axml.format_value] # FIXME should unite those functions :param index: index of the attribute :returns: the string """ logger.debug(index) offset = self._get_attribute_offset(index) valueType = self.m_attributes[offset + ATTRIBUTE_IX_VALUE_TYPE] if valueType == TYPE_STRING: valueString = self.m_attributes[offset + ATTRIBUTE_IX_VALUE_STRING] return self.sb[valueString] return '' def format_value( _type: int, _data: int, lookup_string=lambda ix: "" ) -> str: """ Format a value based on type and data. By default, no strings are looked up and `""` is returned. You need to define `lookup_string` in order to actually lookup strings from the string table. :param _type: The numeric type of the value :param _data: The numeric data of the value :param lookup_string: A function how to resolve strings from integer IDs :returns: the formatted string """ # Function to prepend android prefix for attributes/references from the # android library fmt_package = lambda x: "android:" if x >> 24 == 1 else "" # Function to represent integers fmt_int = lambda x: (0x7FFFFFFF & x) - 0x80000000 if x > 0x7FFFFFFF else x if _type == TYPE_STRING: return lookup_string(_data) elif _type == TYPE_ATTRIBUTE: return "?{}{:08X}".format(fmt_package(_data), _data) elif _type == TYPE_REFERENCE: return "@{}{:08X}".format(fmt_package(_data), _data) elif _type == TYPE_FLOAT: return "%f" % unpack("=f", pack("=L", _data))[0] elif _type == TYPE_INT_HEX: return "0x%08X" % _data elif _type == TYPE_INT_BOOLEAN: if _data == 0: return "false" return "true" elif _type == TYPE_DIMENSION: return "{:f}{}".format( complexToFloat(_data), DIMENSION_UNITS[_data & COMPLEX_UNIT_MASK] ) elif _type == TYPE_FRACTION: return "{:f}{}".format( complexToFloat(_data) * 100, FRACTION_UNITS[_data & COMPLEX_UNIT_MASK], ) elif TYPE_FIRST_COLOR_INT <= _type <= TYPE_LAST_COLOR_INT: return "#%08X" % _data elif TYPE_FIRST_INT <= _type <= TYPE_LAST_INT: return "%d" % fmt_int(_data) return "<0x{:X}, type 0x{:02X}>".format(_data, _type) class AXMLPrinter: """ Converter for AXML Files into a lxml ElementTree, which can easily be converted into XML. A Reference Implementation can be found at http://androidxref.com/9.0.0_r3/xref/frameworks/base/tools/aapt/XMLNode.cpp """ __charrange = None __replacement = None def __init__(self, raw_buff: bytes) -> bytes: logger.debug("AXMLPrinter") self.axml = AXMLParser(raw_buff) self.root = None self.packerwarning = False cur = [] while self.axml.is_valid(): _type = next(self.axml) logger.debug("DEBUG ARSC TYPE {}".format(_type)) if _type == START_TAG: if not self.axml.name: # Check if the name is empty logger.debug("Empty tag name, skipping to next element") continue # Skip this iteration uri = self._print_namespace(self.axml.namespace) uri, name = self._fix_name(uri, self.axml.name) tag = "{}{}".format(uri, name) comment = self.axml.comment if comment: if self.root is None: logger.warning( "Can not attach comment with content '{}' without root!".format( comment ) ) else: cur[-1].append(etree.Comment(comment)) logger.debug( "START_TAG: {} (line={})".format( tag, self.axml.m_lineNumber ) ) try: elem = etree.Element(tag, nsmap=self.axml.nsmap) except ValueError as e: logger.error(e) # nsmap= {' ================================================ FILE: libs/androguard/decompiler/__init__.py ================================================ import sys sys.setrecursionlimit(5000) ================================================ FILE: libs/androguard/decompiler/basic_blocks.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from collections import defaultdict from loguru import logger from androguard.decompiler.instruction import MoveExceptionExpression from androguard.decompiler.node import Node from androguard.decompiler.opcode_ins import INSTRUCTION_SET from androguard.decompiler.util import get_type class BasicBlock(Node): def __init__(self, name: str, block_ins: list) -> None: super().__init__(name) self.ins = block_ins self.ins_range = None self.loc_ins = None self.var_to_declare = set() self.catch_type = None def get_ins(self) -> list: return self.ins def get_loc_with_ins(self) -> list: if self.loc_ins is None: self.loc_ins = list(zip(range(*self.ins_range), self.ins)) return self.loc_ins def remove_ins(self, loc, ins) -> None: self.ins.remove(ins) self.loc_ins.remove((loc, ins)) def add_ins(self, new_ins_list: list) -> None: for new_ins in new_ins_list: self.ins.append(new_ins) def add_variable_declaration(self, variable): self.var_to_declare.add(variable) def number_ins(self, num: int) -> int: last_ins_num = num + len(self.ins) self.ins_range = [num, last_ins_num] self.loc_ins = None return last_ins_num def set_catch_type(self, _type): self.catch_type = _type class StatementBlock(BasicBlock): def __init__(self, name, block_ins): super().__init__(name, block_ins) self.type.is_stmt = True def visit(self, visitor): return visitor.visit_statement_node(self) def __str__(self): return '%d-Statement(%s)' % (self.num, self.name) class ReturnBlock(BasicBlock): def __init__(self, name, block_ins): super().__init__(name, block_ins) self.type.is_return = True def visit(self, visitor): return visitor.visit_return_node(self) def __str__(self): return '%d-Return(%s)' % (self.num, self.name) class ThrowBlock(BasicBlock): def __init__(self, name, block_ins): super().__init__(name, block_ins) self.type.is_throw = True def visit(self, visitor): return visitor.visit_throw_node(self) def __str__(self): return '%d-Throw(%s)' % (self.num, self.name) class SwitchBlock(BasicBlock): def __init__(self, name, switch, block_ins): super().__init__(name, block_ins) self.switch = switch self.cases = [] self.default = None self.node_to_case = defaultdict(list) self.type.is_switch = True def add_case(self, case): self.cases.append(case) def visit(self, visitor): return visitor.visit_switch_node(self) def copy_from(self, node): super().copy_from(node) self.cases = node.cases[:] self.switch = node.switch[:] def update_attribute_with(self, n_map): super().update_attribute_with(n_map) self.cases = [n_map.get(n, n) for n in self.cases] for node1, node2 in n_map.items(): if node1 in self.node_to_case: self.node_to_case[node2] = self.node_to_case.pop(node1) def order_cases(self): values = self.switch.get_values() if len(values) < len(self.cases): self.default = self.cases.pop(0) for case, node in zip(values, self.cases): self.node_to_case[node].append(case) def __str__(self): return '%d-Switch(%s)' % (self.num, self.name) class CondBlock(BasicBlock): def __init__(self, name, block_ins): super().__init__(name, block_ins) self.true = None self.false = None self.type.is_cond = True def update_attribute_with(self, n_map): super().update_attribute_with(n_map) self.true = n_map.get(self.true, self.true) self.false = n_map.get(self.false, self.false) def neg(self): if len(self.ins) != 1: raise RuntimeWarning('Condition should have only 1 instruction !') self.ins[-1].neg() def visit(self, visitor): return visitor.visit_cond_node(self) def visit_cond(self, visitor): if len(self.ins) != 1: raise RuntimeWarning('Condition should have only 1 instruction !') return visitor.visit_ins(self.ins[-1]) def __str__(self): return '%d-If(%s)' % (self.num, self.name) class Condition: def __init__(self, cond1, cond2, isand, isnot): self.cond1 = cond1 self.cond2 = cond2 self.isand = isand self.isnot = isnot def neg(self): self.isand = not self.isand self.cond1.neg() self.cond2.neg() def get_ins(self): lins = [] lins.extend(self.cond1.get_ins()) lins.extend(self.cond2.get_ins()) return lins def get_loc_with_ins(self): loc_ins = [] loc_ins.extend(self.cond1.get_loc_with_ins()) loc_ins.extend(self.cond2.get_loc_with_ins()) return loc_ins def visit(self, visitor): return visitor.visit_short_circuit_condition( self.isnot, self.isand, self.cond1, self.cond2 ) def __str__(self): if self.isnot: ret = '!%s %s %s' else: ret = '%s %s %s' return ret % (self.cond1, ['||', '&&'][self.isand], self.cond2) class ShortCircuitBlock(CondBlock): def __init__(self, name, cond): super().__init__(name, None) self.cond = cond def get_ins(self): return self.cond.get_ins() def get_loc_with_ins(self): return self.cond.get_loc_with_ins() def neg(self): self.cond.neg() def visit_cond(self, visitor): return self.cond.visit(visitor) def __str__(self): return '%d-SC(%s)' % (self.num, self.cond) class LoopBlock(CondBlock): def __init__(self, name, cond): super().__init__(name, None) self.cond = cond def get_ins(self): return self.cond.get_ins() def neg(self): self.cond.neg() def get_loc_with_ins(self): return self.cond.get_loc_with_ins() def visit(self, visitor): return visitor.visit_loop_node(self) def visit_cond(self, visitor): return self.cond.visit_cond(visitor) def update_attribute_with(self, n_map): super().update_attribute_with(n_map) self.cond.update_attribute_with(n_map) def __str__(self): if self.looptype.is_pretest: if self.false in self.loop_nodes: return '%d-While(!%s)[%s]' % (self.num, self.name, self.cond) return '%d-While(%s)[%s]' % (self.num, self.name, self.cond) elif self.looptype.is_posttest: return '%d-DoWhile(%s)[%s]' % (self.num, self.name, self.cond) elif self.looptype.is_endless: return '%d-WhileTrue(%s)[%s]' % (self.num, self.name, self.cond) return '%d-WhileNoType(%s)' % (self.num, self.name) class TryBlock(BasicBlock): def __init__(self, node): super().__init__('Try-%s' % node.name, None) self.try_start = node self.catch = [] # FIXME: @property def num(self): return self.try_start.num @num.setter def num(self, value): pass def add_catch_node(self, node): self.catch.append(node) def visit(self, visitor): visitor.visit_try_node(self) def __str__(self): return 'Try({})[{}]'.format(self.name, self.catch) class CatchBlock(BasicBlock): def __init__(self, node): first_ins = node.ins[0] self.exception_ins = None if isinstance(first_ins, MoveExceptionExpression): self.exception_ins = first_ins node.ins.pop(0) super().__init__('Catch-%s' % node.name, node.ins) self.catch_start = node self.catch_type = node.catch_type def visit(self, visitor): visitor.visit_catch_node(self) def visit_exception(self, visitor): if self.exception_ins: visitor.visit_ins(self.exception_ins) else: visitor.write(get_type(self.catch_type)) def __str__(self): return 'Catch(%s)' % self.name def build_node_from_block(block, vmap, gen_ret, exception_type=None): ins, lins = None, [] idx = block.get_start() for ins in block.get_instructions(): opcode = ins.get_op_value() if opcode == -1: # FIXME? or opcode in (0x0300, 0x0200, 0x0100): idx += ins.get_length() continue try: _ins = INSTRUCTION_SET[opcode] except IndexError: logger.error('Unknown instruction : %s.', ins.get_name().lower()) _ins = INSTRUCTION_SET[0] # fill-array-data if opcode == 0x26: fillarray = block.get_special_ins(idx) lins.append(_ins(ins, vmap, fillarray)) # invoke-kind[/range] elif 0x6E <= opcode <= 0x72 or 0x74 <= opcode <= 0x78: lins.append(_ins(ins, vmap, gen_ret)) # filled-new-array[/range] elif 0x24 <= opcode <= 0x25: lins.append(_ins(ins, vmap, gen_ret.new())) # move-result* elif 0xA <= opcode <= 0xC: lins.append(_ins(ins, vmap, gen_ret.last())) # move-exception elif opcode == 0xD: lins.append(_ins(ins, vmap, exception_type)) # monitor-{enter,exit} elif 0x1D <= opcode <= 0x1E: idx += ins.get_length() continue else: lins.append(_ins(ins, vmap)) idx += ins.get_length() name = block.get_name() # return* if 0xE <= opcode <= 0x11: node = ReturnBlock(name, lins) # {packed,sparse}-switch elif 0x2B <= opcode <= 0x2C: idx -= ins.get_length() values = block.get_special_ins(idx) node = SwitchBlock(name, values, lins) # if-test[z] elif 0x32 <= opcode <= 0x3D: node = CondBlock(name, lins) node.off_last_ins = ins.get_ref_off() # throw elif opcode == 0x27: node = ThrowBlock(name, lins) else: # goto* if 0x28 <= opcode <= 0x2A: lins.pop() node = StatementBlock(name, lins) return node ================================================ FILE: libs/androguard/decompiler/control_flow.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from collections import defaultdict from loguru import logger from androguard.decompiler.basic_blocks import ( CatchBlock, Condition, LoopBlock, ShortCircuitBlock, TryBlock, ) from androguard.decompiler.graph import Graph from androguard.decompiler.node import Interval from androguard.decompiler.util import common_dom def intervals(graph): """ Compute the intervals of the graph Returns interval_graph: a graph of the intervals of G interv_heads: a dict of (header node, interval) """ interval_graph = Graph() # graph of intervals heads = [graph.entry] # list of header nodes interv_heads = {} # interv_heads[i] = interval of header i processed = {i: False for i in graph} edges = defaultdict(list) while heads: head = heads.pop(0) if not processed[head]: processed[head] = True interv_heads[head] = Interval(head) # Check if there is a node which has all its predecessor in the # current interval. If there is, add that node to the interval and # repeat until all the possible nodes have been added. change = True while change: change = False for node in graph.rpo[1:]: if all( p in interv_heads[head] for p in graph.all_preds(node) ): change |= interv_heads[head].add_node(node) # At this stage, a node which is not in the interval, but has one # of its predecessor in it, is the header of another interval. So # we add all such nodes to the header list. for node in graph: if node not in interv_heads[head] and node not in heads: if any( p in interv_heads[head] for p in graph.all_preds(node) ): edges[interv_heads[head]].append(node) assert node not in heads heads.append(node) interval_graph.add_node(interv_heads[head]) interv_heads[head].compute_end(graph) # Edges is a mapping of 'Interval -> [header nodes of interval successors]' for interval, heads in edges.items(): for head in heads: interval_graph.add_edge(interval, interv_heads[head]) interval_graph.entry = graph.entry.interval if graph.exit: interval_graph.exit = graph.exit.interval return interval_graph, interv_heads def derived_sequence(graph): """ Compute the derived sequence of the graph G The intervals of G are collapsed into nodes, intervals of these nodes are built, and the process is repeated iteratively until we obtain a single node (if the graph is not irreducible) """ deriv_seq = [graph] deriv_interv = [] single_node = False while not single_node: interv_graph, interv_heads = intervals(graph) deriv_interv.append(interv_heads) single_node = len(interv_graph) == 1 if not single_node: deriv_seq.append(interv_graph) graph = interv_graph graph.compute_rpo() return deriv_seq, deriv_interv def mark_loop_rec(graph, node, s_num, e_num, interval, nodes_in_loop): if node in nodes_in_loop: return nodes_in_loop.append(node) for pred in graph.all_preds(node): if s_num < pred.num <= e_num and pred in interval: mark_loop_rec(graph, pred, s_num, e_num, interval, nodes_in_loop) def mark_loop(graph, start, end, interval): logger.debug('MARKLOOP : %s END : %s', start, end) head = start.get_head() latch = end.get_end() nodes_in_loop = [head] mark_loop_rec(graph, latch, head.num, latch.num, interval, nodes_in_loop) head.startloop = True head.latch = latch return nodes_in_loop def loop_type(start, end, nodes_in_loop): if end.type.is_cond: if start.type.is_cond: if start.true in nodes_in_loop and start.false in nodes_in_loop: start.looptype.is_posttest = True else: start.looptype.is_pretest = True else: start.looptype.is_posttest = True else: if start.type.is_cond: if start.true in nodes_in_loop and start.false in nodes_in_loop: start.looptype.is_endless = True else: start.looptype.is_pretest = True else: start.looptype.is_endless = True def loop_follow(start, end, nodes_in_loop): follow = None if start.looptype.is_pretest: if start.true in nodes_in_loop: follow = start.false else: follow = start.true elif start.looptype.is_posttest: if end.true in nodes_in_loop: follow = end.false else: follow = end.true else: num_next = float('inf') for node in nodes_in_loop: if node.type.is_cond: if node.true.num < num_next and node.true not in nodes_in_loop: follow = node.true num_next = follow.num elif ( node.false.num < num_next and node.false not in nodes_in_loop ): follow = node.false num_next = follow.num start.follow['loop'] = follow for node in nodes_in_loop: node.follow['loop'] = follow logger.debug('Start of loop %s', start) logger.debug('Follow of loop: %s', start.follow['loop']) def loop_struct(graphs_list, intervals_list): first_graph = graphs_list[0] for i, graph in enumerate(graphs_list): interval = intervals_list[i] for head in sorted(list(interval.keys()), key=lambda x: x.num): loop_nodes = [] for node in graph.all_preds(head): if node.interval is head.interval: lnodes = mark_loop(first_graph, head, node, head.interval) for lnode in lnodes: if lnode not in loop_nodes: loop_nodes.append(lnode) head.get_head().loop_nodes = loop_nodes def if_struct(graph, idoms): unresolved = set() for node in graph.post_order(): if node.type.is_cond: ldominates = [] for n, idom in idoms.items(): if node is idom and len(graph.reverse_edges.get(n, [])) > 1: ldominates.append(n) if len(ldominates) > 0: n = max(ldominates, key=lambda x: x.num) node.follow['if'] = n for x in unresolved.copy(): if node.num < x.num < n.num: x.follow['if'] = n unresolved.remove(x) else: unresolved.add(node) return unresolved def switch_struct(graph, idoms): unresolved = set() for node in graph.post_order(): if node.type.is_switch: m = node for suc in graph.sucs(node): if idoms[suc] is not node: m = common_dom(idoms, node, suc) ldominates = [] for n, dom in idoms.items(): if m is dom and len(graph.all_preds(n)) > 1: ldominates.append(n) if len(ldominates) > 0: n = max(ldominates, key=lambda x: x.num) node.follow['switch'] = n for x in unresolved: x.follow['switch'] = n unresolved = set() else: unresolved.add(node) node.order_cases() # TODO: deal with preds which are in catch def short_circuit_struct(graph, idom, node_map): def MergeNodes(node1, node2, is_and, is_not): lpreds = set() ldests = set() for node in (node1, node2): lpreds.update(graph.preds(node)) ldests.update(graph.sucs(node)) graph.remove_node(node) done.add(node) lpreds.difference_update((node1, node2)) ldests.difference_update((node1, node2)) entry = graph.entry in (node1, node2) new_name = '{}+{}'.format(node1.name, node2.name) condition = Condition(node1, node2, is_and, is_not) new_node = ShortCircuitBlock(new_name, condition) for old_n, new_n in node_map.items(): if new_n in (node1, node2): node_map[old_n] = new_node node_map[node1] = new_node node_map[node2] = new_node idom[new_node] = idom[node1] idom.pop(node1) idom.pop(node2) new_node.copy_from(node1) graph.add_node(new_node) for pred in lpreds: pred.update_attribute_with(node_map) graph.add_edge(node_map.get(pred, pred), new_node) for dest in ldests: graph.add_edge(new_node, node_map.get(dest, dest)) if entry: graph.entry = new_node return new_node change = True while change: change = False done = set() for node in graph.post_order(): if node.type.is_cond and node not in done: then = node.true els = node.false if node in (then, els): continue if then.type.is_cond and len(graph.preds(then)) == 1: if node in (then.true, then.false): continue if then.false is els: # node && t change = True merged_node = MergeNodes(node, then, True, False) merged_node.true = then.true merged_node.false = els elif then.true is els: # !node || t change = True merged_node = MergeNodes(node, then, False, True) merged_node.true = els merged_node.false = then.false elif els.type.is_cond and len(graph.preds(els)) == 1: if node in (els.false, els.true): continue if els.false is then: # !node && e change = True merged_node = MergeNodes(node, els, True, True) merged_node.true = els.true merged_node.false = then elif els.true is then: # node || e change = True merged_node = MergeNodes(node, els, False, False) merged_node.true = then merged_node.false = els.false done.add(node) if change: graph.compute_rpo() def while_block_struct(graph, node_map): change = False for node in graph.rpo[:]: if node.startloop: change = True new_node = LoopBlock(node.name, node) node_map[node] = new_node new_node.copy_from(node) entry = node is graph.entry lpreds = graph.preds(node) lsuccs = graph.sucs(node) for pred in lpreds: graph.add_edge(node_map.get(pred, pred), new_node) for suc in lsuccs: graph.add_edge(new_node, node_map.get(suc, suc)) if entry: graph.entry = new_node if node.type.is_cond: new_node.true = node.true new_node.false = node.false graph.add_node(new_node) graph.remove_node(node) if change: graph.compute_rpo() def catch_struct(graph, idoms): block_try_nodes = {} node_map = {} for catch_block in graph.reverse_catch_edges: if catch_block in graph.catch_edges: continue catch_node = CatchBlock(catch_block) try_block = idoms[catch_block] try_node = block_try_nodes.get(try_block) if try_node is None: block_try_nodes[try_block] = TryBlock(try_block) try_node = block_try_nodes[try_block] node_map[try_block] = try_node for pred in graph.all_preds(try_block): pred.update_attribute_with(node_map) if try_block in graph.sucs(pred): graph.edges[pred].remove(try_block) graph.add_edge(pred, try_node) if try_block.type.is_stmt: follow = graph.sucs(try_block) if follow: try_node.follow = graph.sucs(try_block)[0] else: try_node.follow = None elif try_block.type.is_cond: loop_follow = try_block.follow['loop'] if loop_follow: try_node.follow = loop_follow else: try_node.follow = try_block.follow['if'] elif try_block.type.is_switch: try_node.follow = try_block.follow['switch'] else: # return or throw try_node.follow = None try_node.add_catch_node(catch_node) for node in graph.nodes: node.update_attribute_with(node_map) if graph.entry in node_map: graph.entry = node_map[graph.entry] def update_dom(idoms, node_map): for n, dom in idoms.items(): idoms[n] = node_map.get(dom, dom) def identify_structures(graph, idoms): Gi, Li = derived_sequence(graph) switch_struct(graph, idoms) loop_struct(Gi, Li) node_map = {} short_circuit_struct(graph, idoms, node_map) update_dom(idoms, node_map) if_unresolved = if_struct(graph, idoms) while_block_struct(graph, node_map) update_dom(idoms, node_map) loop_starts = [] for node in graph.rpo: node.update_attribute_with(node_map) if node.startloop: loop_starts.append(node) for node in loop_starts: loop_type(node, node.latch, node.loop_nodes) loop_follow(node, node.latch, node.loop_nodes) for node in if_unresolved: follows = [ n for n in (node.follow['loop'], node.follow['switch']) if n ] if len(follows) >= 1: follow = min(follows, key=lambda x: x.num) node.follow['if'] = follow catch_struct(graph, idoms) ================================================ FILE: libs/androguard/decompiler/dast.py ================================================ # This file is part of Androguard. # # Copyright (C) 2014 Google Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This file is a simplified version of writer.py that outputs an AST instead of source code.""" import struct from loguru import logger from androguard.core.dex.dex_types import TYPE_DESCRIPTOR from androguard.decompiler import basic_blocks, instruction, opcode_ins class JSONWriter: def __init__(self, graph, method): self.graph = graph self.method = method self.visited_nodes = set() self.loop_follow = [None] self.if_follow = [None] self.switch_follow = [None] self.latch_node = [None] self.try_follow = [None] self.next_case = None self.need_break = True self.constructor = False self.context = [] # This class is created as a context manager so that it can be used like # with self as foo: # ... # which pushes a statement block on to the context stack and assigns it to foo # within the with block, all added instructions will be added to foo def __enter__(self): self.context.append(self.statement_block()) return self.context[-1] def __exit__(self, *args): self.context.pop() return False # Add a statement to the current context def add(self, val): self._append(self.context[-1], val) def visit_ins(self, op): self.add(self._visit_ins(op, isCtor=self.constructor)) # Note: this is a mutating operation def get_ast(self): m = self.method flags = m.access if 'constructor' in flags: flags.remove('constructor') self.constructor = True params = m.lparams[:] if 'static' not in m.access: params = params[1:] # DAD doesn't create any params for abstract methods if len(params) != len(m.params_type): assert 'abstract' in flags or 'native' in flags assert not params params = list(range(len(m.params_type))) paramdecls = [] for ptype, name in zip(m.params_type, params): t = self.parse_descriptor(ptype) v = self.local('p{}'.format(name)) paramdecls.append(self.var_decl(t, v)) if self.graph is None: body = None else: with self as body: self.visit_node(self.graph.entry) return { 'triple': m.triple, 'flags': flags, 'ret': self.parse_descriptor(m.type), 'params': paramdecls, 'comments': [], 'body': body, } def _visit_condition(self, cond): if cond.isnot: cond.cond1.neg() left = self.parenthesis(self.get_cond(cond.cond1)) right = self.parenthesis(self.get_cond(cond.cond2)) op = '&&' if cond.isand else '||' res = self.binary_infix(op, left, right) return res def get_cond(self, node): if isinstance(node, basic_blocks.ShortCircuitBlock): return self._visit_condition(node.cond) elif isinstance(node, basic_blocks.LoopBlock): return self.get_cond(node.cond) else: assert type(node) == basic_blocks.CondBlock assert len(node.ins) == 1 return self.visit_expr(node.ins[-1]) def visit_node(self, node): if node in ( self.if_follow[-1], self.switch_follow[-1], self.loop_follow[-1], self.latch_node[-1], self.try_follow[-1], ): return if not node.type.is_return and node in self.visited_nodes: return self.visited_nodes.add(node) for var in node.var_to_declare: if not var.declared: self.add(self.visit_decl(var)) var.declared = True node.visit(self) def visit_loop_node(self, loop): isDo = cond_expr = body = None follow = loop.follow['loop'] if loop.looptype.is_pretest: if loop.true is follow: loop.neg() loop.true, loop.false = loop.false, loop.true isDo = False cond_expr = self.get_cond(loop) elif loop.looptype.is_posttest: isDo = True self.latch_node.append(loop.latch) elif loop.looptype.is_endless: isDo = False cond_expr = self.literal_bool(True) with self as body: self.loop_follow.append(follow) if loop.looptype.is_pretest: self.visit_node(loop.true) else: self.visit_node(loop.cond) self.loop_follow.pop() if loop.looptype.is_pretest: pass elif loop.looptype.is_posttest: self.latch_node.pop() cond_expr = self.get_cond(loop.latch) else: self.visit_node(loop.latch) assert cond_expr is not None and isDo is not None self.add(self.loop_stmt(isDo, cond_expr, body)) if follow is not None: self.visit_node(follow) def visit_cond_node(self, cond): cond_expr = None scopes = [] follow = cond.follow['if'] if cond.false is cond.true: self.add(self.expression_stmt(self.get_cond(cond))) self.visit_node(cond.true) return if cond.false is self.loop_follow[-1]: cond.neg() cond.true, cond.false = cond.false, cond.true if self.loop_follow[-1] in (cond.true, cond.false): cond_expr = self.get_cond(cond) with self as scope: self.add(self.jump_stmt('break')) scopes.append(scope) with self as scope: self.visit_node(cond.false) scopes.append(scope) self.add(self.if_stmt(cond_expr, scopes)) elif follow is not None: if ( cond.true in (follow, self.next_case) or cond.num > cond.true.num ): # or cond.true.num > cond.false.num: cond.neg() cond.true, cond.false = cond.false, cond.true self.if_follow.append(follow) if cond.true: # in self.visited_nodes: cond_expr = self.get_cond(cond) with self as scope: self.visit_node(cond.true) scopes.append(scope) is_else = not (follow in (cond.true, cond.false)) if is_else and cond.false not in self.visited_nodes: with self as scope: self.visit_node(cond.false) scopes.append(scope) self.if_follow.pop() self.add(self.if_stmt(cond_expr, scopes)) self.visit_node(follow) else: cond_expr = self.get_cond(cond) with self as scope: self.visit_node(cond.true) scopes.append(scope) with self as scope: self.visit_node(cond.false) scopes.append(scope) self.add(self.if_stmt(cond_expr, scopes)) def visit_switch_node(self, switch): lins = switch.get_ins() for ins in lins[:-1]: self.visit_ins(ins) switch_ins = switch.get_ins()[-1] cond_expr = self.visit_expr(switch_ins) ksv_pairs = [] follow = switch.follow['switch'] cases = switch.cases self.switch_follow.append(follow) default = switch.default for i, node in enumerate(cases): if node in self.visited_nodes: continue cur_ks = switch.node_to_case[node][:] if i + 1 < len(cases): self.next_case = cases[i + 1] else: self.next_case = None if node is default: cur_ks.append(None) default = None with self as body: self.visit_node(node) if self.need_break: self.add(self.jump_stmt('break')) else: self.need_break = True ksv_pairs.append((cur_ks, body)) if default not in (None, follow): with self as body: self.visit_node(default) ksv_pairs.append(([None], body)) self.add(self.switch_stmt(cond_expr, ksv_pairs)) self.switch_follow.pop() self.visit_node(follow) def visit_statement_node(self, stmt): sucs = self.graph.sucs(stmt) for ins in stmt.get_ins(): self.visit_ins(ins) if len(sucs) == 1: if sucs[0] is self.loop_follow[-1]: self.add(self.jump_stmt('break')) elif sucs[0] is self.next_case: self.need_break = False else: self.visit_node(sucs[0]) def visit_try_node(self, try_node): with self as tryb: self.try_follow.append(try_node.follow) self.visit_node(try_node.try_start) pairs = [] for catch_node in try_node.catch: if catch_node.exception_ins: ins = catch_node.exception_ins assert isinstance(ins, instruction.MoveExceptionExpression) var = ins.var_map[ins.ref] var.declared = True ctype = var.get_type() name = 'v{}'.format(var.name) else: ctype = catch_node.catch_type name = '_' catch_decl = self.var_decl( self.parse_descriptor(ctype), self.local(name) ) with self as body: self.visit_node(catch_node.catch_start) pairs.append((catch_decl, body)) self.add(self.try_stmt(tryb, pairs)) self.visit_node(self.try_follow.pop()) def visit_return_node(self, ret): self.need_break = False for ins in ret.get_ins(): self.visit_ins(ins) def visit_throw_node(self, throw): for ins in throw.get_ins(): self.visit_ins(ins) def _visit_ins(self, op, isCtor=False): if isinstance(op, instruction.ReturnInstruction): expr = ( None if op.arg is None else self.visit_expr(op.var_map[op.arg]) ) return self.return_stmt(expr) elif isinstance(op, instruction.ThrowExpression): return self.throw_stmt(self.visit_expr(op.var_map[op.ref])) elif isinstance(op, instruction.NopExpression): return None # Local var decl statements if isinstance( op, ( instruction.AssignExpression, instruction.MoveExpression, instruction.MoveResultExpression, ), ): lhs = op.var_map.get(op.lhs) rhs = ( op.rhs if isinstance(op, instruction.AssignExpression) else op.var_map.get(op.rhs) ) if isinstance(lhs, instruction.Variable) and not lhs.declared: lhs.declared = True expr = self.visit_expr(rhs) return self.visit_decl(lhs, expr) # skip this() at top of constructors if isCtor and isinstance(op, instruction.AssignExpression): op2 = op.rhs if op.lhs is None and isinstance( op2, instruction.InvokeInstruction ): if op2.name == '' and len(op2.args) == 0: if isinstance( op2.var_map[op2.base], instruction.ThisParam ): return None # MoveExpression is skipped when lhs = rhs if isinstance(op, instruction.MoveExpression): if op.var_map.get(op.lhs) is op.var_map.get(op.rhs): return None return self.expression_stmt(self.visit_expr(op)) def write_inplace_if_possible(self, lhs, rhs): if ( isinstance(rhs, instruction.BinaryExpression) and lhs == rhs.var_map[rhs.arg1] ): exp_rhs = rhs.var_map[rhs.arg2] # post increment/decrement if ( rhs.op in '+-' and isinstance(exp_rhs, instruction.Constant) and exp_rhs.get_int_value() == 1 ): return self.unary_postfix(self.visit_expr(lhs), rhs.op * 2) # compound assignment return self.assignment( self.visit_expr(lhs), self.visit_expr(exp_rhs), op=rhs.op ) return self.assignment(self.visit_expr(lhs), self.visit_expr(rhs)) def visit_expr(self, op): if isinstance(op, instruction.ArrayLengthExpression): expr = self.visit_expr(op.var_map[op.array]) return self.field_access([None, 'length', None], expr) if isinstance(op, instruction.ArrayLoadExpression): array_expr = self.visit_expr(op.var_map[op.array]) index_expr = self.visit_expr(op.var_map[op.idx]) return self.array_access(array_expr, index_expr) if isinstance(op, instruction.ArrayStoreInstruction): array_expr = self.visit_expr(op.var_map[op.array]) index_expr = self.visit_expr(op.var_map[op.index]) rhs = self.visit_expr(op.var_map[op.rhs]) return self.assignment( self.array_access(array_expr, index_expr), rhs ) if isinstance(op, instruction.AssignExpression): lhs = op.var_map.get(op.lhs) rhs = op.rhs if lhs is None: return self.visit_expr(rhs) return self.write_inplace_if_possible(lhs, rhs) if isinstance(op, instruction.BaseClass): if op.clsdesc is None: assert op.cls == "super" return self.local(op.cls) return self.parse_descriptor(op.clsdesc) if isinstance(op, instruction.BinaryExpression): lhs = op.var_map.get(op.arg1) rhs = op.var_map.get(op.arg2) expr = self.binary_infix( op.op, self.visit_expr(lhs), self.visit_expr(rhs) ) if not isinstance(op, instruction.BinaryCompExpression): expr = self.parenthesis(expr) return expr if isinstance(op, instruction.CheckCastExpression): lhs = op.var_map.get(op.arg) return self.parenthesis( self.cast( self.parse_descriptor(op.clsdesc), self.visit_expr(lhs) ) ) if isinstance(op, instruction.ConditionalExpression): lhs = op.var_map.get(op.arg1) rhs = op.var_map.get(op.arg2) return self.binary_infix( op.op, self.visit_expr(lhs), self.visit_expr(rhs) ) if isinstance(op, instruction.ConditionalZExpression): arg = op.var_map[op.arg] if isinstance(arg, instruction.BinaryCompExpression): arg.op = op.op return self.visit_expr(arg) expr = self.visit_expr(arg) atype = str(arg.get_type()) if atype == 'Z': if op.op == opcode_ins.Op.EQUAL: expr = self.unary_prefix('!', expr) elif atype in 'VBSCIJFD': expr = self.binary_infix(op.op, expr, self.literal_int(0)) else: expr = self.binary_infix(op.op, expr, self.literal_null()) return expr if isinstance(op, instruction.Constant): if op.type == 'Ljava/lang/String;': return self.literal_string(op.cst) elif op.type == 'Z': return self.literal_bool(op.cst == 0) elif op.type in 'ISCB': return self.literal_int(op.cst2) elif op.type in 'J': return self.literal_long(op.cst2) elif op.type in 'F': return self.literal_float(op.cst) elif op.type in 'D': return self.literal_double(op.cst) elif op.type == 'Ljava/lang/Class;': return self.literal_class(op.clsdesc) return self.dummy('??? Unexpected constant: ' + str(op.type)) if isinstance(op, instruction.FillArrayExpression): array_expr = self.visit_expr(op.var_map[op.reg]) rhs = self.visit_arr_data(op.value) return self.assignment(array_expr, rhs) if isinstance(op, instruction.FilledArrayExpression): tn = self.parse_descriptor(op.type) params = [self.visit_expr(op.var_map[x]) for x in op.args] return self.array_initializer(params, tn) if isinstance(op, instruction.InstanceExpression): triple = op.clsdesc[1:-1], op.name, op.ftype expr = self.visit_expr(op.var_map[op.arg]) return self.field_access(triple, expr) if isinstance(op, instruction.InstanceInstruction): triple = op.clsdesc[1:-1], op.name, op.atype lhs = self.field_access( triple, self.visit_expr(op.var_map[op.lhs]) ) rhs = self.visit_expr(op.var_map[op.rhs]) return self.assignment(lhs, rhs) if isinstance(op, instruction.InvokeInstruction): base = op.var_map[op.base] params = [op.var_map[arg] for arg in op.args] params = list(map(self.visit_expr, params)) if op.name == '': if isinstance(base, instruction.ThisParam): keyword = ( 'this' if base.type[1:-1] == op.triple[0] else 'super' ) return self.method_invocation( op.triple, keyword, None, params ) elif isinstance(base, instruction.NewInstance): return [ 'ClassInstanceCreation', op.triple, params, self.parse_descriptor(base.type), ] else: assert isinstance(base, instruction.Variable) # fallthrough to create dummy call return self.method_invocation( op.triple, op.name, self.visit_expr(base), params ) # for unmatched monitor instructions, just create dummy expressions if isinstance(op, instruction.MonitorEnterExpression): return self.dummy( "monitor enter(", self.visit_expr(op.var_map[op.ref]), ")" ) if isinstance(op, instruction.MonitorExitExpression): return self.dummy( "monitor exit(", self.visit_expr(op.var_map[op.ref]), ")" ) if isinstance(op, instruction.MoveExpression): lhs = op.var_map.get(op.lhs) rhs = op.var_map.get(op.rhs) return self.write_inplace_if_possible(lhs, rhs) if isinstance(op, instruction.MoveResultExpression): lhs = op.var_map.get(op.lhs) rhs = op.var_map.get(op.rhs) return self.assignment(self.visit_expr(lhs), self.visit_expr(rhs)) if isinstance(op, instruction.NewArrayExpression): tn = self.parse_descriptor(op.type[1:]) expr = self.visit_expr(op.var_map[op.size]) return self.array_creation(tn, [expr], 1) # create dummy expression for unmatched newinstance if isinstance(op, instruction.NewInstance): return self.dummy("new ", self.parse_descriptor(op.type)) if isinstance(op, instruction.Param): if isinstance(op, instruction.ThisParam): return self.local('this') return self.local('p{}'.format(op.v)) if isinstance(op, instruction.StaticExpression): triple = op.clsdesc[1:-1], op.name, op.ftype return self.field_access(triple, self.parse_descriptor(op.clsdesc)) if isinstance(op, instruction.StaticInstruction): triple = op.clsdesc[1:-1], op.name, op.ftype lhs = self.field_access(triple, self.parse_descriptor(op.clsdesc)) rhs = self.visit_expr(op.var_map[op.rhs]) return self.assignment(lhs, rhs) if isinstance(op, instruction.SwitchExpression): return self.visit_expr(op.var_map[op.src]) if isinstance(op, instruction.UnaryExpression): lhs = op.var_map.get(op.arg) if isinstance(op, instruction.CastExpression): expr = self.cast( self.parse_descriptor(op.clsdesc), self.visit_expr(lhs) ) else: expr = self.unary_prefix(op.op, self.visit_expr(lhs)) return self.parenthesis(expr) if isinstance(op, instruction.Variable): # assert(op.declared) return self.local('v{}'.format(op.name)) return self.dummy('??? Unexpected op: ' + type(op).__name__) def visit_arr_data(self, value): data = value.get_data() tab = [] elem_size = value.element_width if elem_size == 4: for i in range(0, value.size * 4, 4): tab.append(struct.unpack(' list: dim = 0 while desc and desc[0] == '[': desc = desc[1:] dim += 1 if desc in TYPE_DESCRIPTOR: return JSONWriter.typen('.' + TYPE_DESCRIPTOR[desc], dim) if desc and desc[0] == 'L' and desc[-1] == ';': return JSONWriter.typen(desc[1:-1], dim) # invalid descriptor (probably None) return JSONWriter.dummy(str(desc)) @staticmethod def _append(sb, stmt): # Add a statement to the end of a statement block assert sb[0] == 'BlockStatement' if stmt is not None: sb[2].append(stmt) @staticmethod def statement_block(): # Create empty statement block (statements to be appended later) # Note, the code below assumes this can be modified in place return ['BlockStatement', None, []] @staticmethod def switch_stmt(cond_expr, ksv_pairs): return ['SwitchStatement', None, cond_expr, ksv_pairs] @staticmethod def if_stmt(cond_expr, scopes): return ['IfStatement', None, cond_expr, scopes] @staticmethod def try_stmt(tryb, pairs): return ['TryStatement', None, tryb, pairs] @staticmethod def loop_stmt(isdo, cond_expr, body): type_ = 'DoStatement' if isdo else 'WhileStatement' return [type_, None, cond_expr, body] @staticmethod def jump_stmt(keyword): return ['JumpStatement', keyword, None] @staticmethod def throw_stmt(expr): return ['ThrowStatement', expr] @staticmethod def return_stmt(expr): return ['ReturnStatement', expr] @staticmethod def local_decl_stmt(expr, decl): return ['LocalDeclarationStatement', expr, decl] @staticmethod def expression_stmt(expr): return ['ExpressionStatement', expr] @staticmethod def dummy(*args): return ['Dummy', args] @staticmethod def var_decl(typen, var): return [typen, var] @staticmethod def unary_postfix(left, op): return ['Unary', [left], op, True] @staticmethod def unary_prefix(op, left): return ['Unary', [left], op, False] @staticmethod def typen(baset: str, dim: int) -> list: return ['TypeName', (baset, dim)] @staticmethod def parenthesis(expr): return ['Parenthesis', [expr]] @staticmethod def method_invocation(triple, name, base, params): if base is None: return ['MethodInvocation', params, triple, name, False] return ['MethodInvocation', [base] + params, triple, name, True] @staticmethod def local(name): return ['Local', name] @staticmethod def literal(result, tt): return ['Literal', result, tt] @staticmethod def field_access(triple, left): return ['FieldAccess', [left], triple] @staticmethod def cast(tn, arg): return ['Cast', [tn, arg]] @staticmethod def binary_infix(op, left, right): return ['BinaryInfix', [left, right], op] @staticmethod def assignment(lhs, rhs, op=''): return ['Assignment', [lhs, rhs], op] @staticmethod def array_initializer(params, tn=None): return ['ArrayInitializer', params, tn] @staticmethod def array_creation(tn, params, dim): return ['ArrayCreation', [tn] + params, dim] @staticmethod def array_access(arr, ind) -> list: return ['ArrayAccess', [arr, ind]] ================================================ FILE: libs/androguard/decompiler/dataflow.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from collections import defaultdict from loguru import logger from androguard.decompiler.instruction import Param, ThisParam, Variable from androguard.decompiler.node import Node from androguard.decompiler.util import build_path, common_dom class BasicReachDef: def __init__(self, graph, params): self.g = graph self.A = defaultdict(set) self.R = defaultdict(set) self.DB = defaultdict(set) self.defs = defaultdict(lambda: defaultdict(set)) self.def_to_loc = defaultdict(set) # Deal with special entry node entry = graph.entry self.A[entry] = set(range(-1, -len(params) - 1, -1)) for loc, param in enumerate(params, 1): self.defs[entry][param].add(-loc) self.def_to_loc[param].add(-loc) # Deal with the other nodes for node in graph.rpo: for i, ins in node.get_loc_with_ins(): kill = ins.get_lhs() if kill is not None: self.defs[node][kill].add(i) self.def_to_loc[kill].add(i) for defs, values in self.defs[node].items(): self.DB[node].add(max(values)) def run(self): nodes = list(self.g.rpo) while nodes: node = nodes.pop(0) newR = set() for pred in self.g.all_preds(node): newR.update(self.A[pred]) if newR and newR != self.R[node]: self.R[node] = newR for suc in self.g.all_sucs(node): if suc not in nodes: nodes.append(suc) killed_locs = set() for reg in self.defs[node]: killed_locs.update(self.def_to_loc[reg]) A = set() for loc in self.R[node]: if loc not in killed_locs: A.add(loc) newA = A.union(self.DB[node]) if newA != self.A[node]: self.A[node] = newA for suc in self.g.all_sucs(node): if suc not in nodes: nodes.append(suc) def update_chain(graph, loc, du, ud): """ Updates the DU chain of the instruction located at loc such that there is no more reference to it so that we can remove it. When an instruction is found to be dead (i.e it has no side effect, and the register defined is not used) we have to update the DU chain of all the variables that may me used by the dead instruction. """ ins = graph.get_ins_from_loc(loc) for var in ins.get_used_vars(): # We get the definition points of the current variable for def_loc in set(ud[var, loc]): # We remove the use of the variable at loc from the DU chain of # the variable definition located at def_loc du[var, def_loc].remove(loc) ud[var, loc].remove(def_loc) if not ud.get((var, loc)): ud.pop((var, loc)) # If the DU chain of the defined variable is now empty, this means # that we may have created a new dead instruction, so we check that # the instruction has no side effect and we update the DU chain of # the new dead instruction, and we delete it. # We also make sure that def_loc is not < 0. This is the case when # the current variable is a method parameter. if def_loc >= 0 and not du[var, def_loc]: du.pop((var, def_loc)) def_ins = graph.get_ins_from_loc(def_loc) if def_ins.is_call(): def_ins.remove_defined_var() elif def_ins.has_side_effect(): continue else: update_chain(graph, def_loc, du, ud) graph.remove_ins(def_loc) def dead_code_elimination(graph, du, ud): """ Run a dead code elimination pass. Instructions are checked to be dead. If it is the case, we remove them and we update the DU & UD chains of its variables to check for further dead instructions. """ for node in graph.rpo: for i, ins in node.get_loc_with_ins(): reg = ins.get_lhs() if reg is not None: # If the definition is not used, we check that the instruction # has no side effect. If there is one and this is a call, we # remove only the unused defined variable. else, this is # something like an array access, so we do nothing. # Otherwise (no side effect) we can remove the instruction from # the node. if (reg, i) not in du: if ins.is_call(): ins.remove_defined_var() elif ins.has_side_effect(): continue else: # We can delete the instruction. First update the DU # chain of the variables used by the instruction to # `let them know` that they are not used anymore by the # deleted instruction. # Then remove the instruction. update_chain(graph, i, du, ud) graph.remove_ins(i) def clear_path_node(graph, reg, loc1, loc2): for loc in range(loc1, loc2): ins = graph.get_ins_from_loc(loc) logger.debug(' treat loc: %d, ins: %s', loc, ins) if ins is None: continue logger.debug( ' LHS: %s, side_effect: %s', ins.get_lhs(), ins.has_side_effect() ) if ins.get_lhs() == reg or ins.has_side_effect(): return False return True def clear_path(graph, reg, loc1, loc2): """ Check that the path from loc1 to loc2 is clear. We have to check that there is no side effect between the two location points. We also have to check that the variable `reg` is not redefined along one of the possible pathes from loc1 to loc2. """ logger.debug('clear_path: reg(%s), loc1(%s), loc2(%s)', reg, loc1, loc2) node1 = graph.get_node_from_loc(loc1) node2 = graph.get_node_from_loc(loc2) # If both instructions are in the same node, we only have to check that the # path is clear inside the node if node1 is node2: return clear_path_node(graph, reg, loc1 + 1, loc2) # If instructions are in different nodes, we also have to check the nodes # in the path between the two locations. if not clear_path_node(graph, reg, loc1 + 1, node1.ins_range[1]): return False path = build_path(graph, node1, node2) for node in path: locs = node.ins_range end_loc = loc2 if (locs[0] <= loc2 <= locs[1]) else locs[1] if not clear_path_node(graph, reg, locs[0], end_loc): return False return True def register_propagation(graph, du, ud): """ Propagate the temporary registers between instructions and remove them if necessary. We process the nodes of the graph in reverse post order. For each instruction in the node, we look at the variables that it uses. For each of these variables we look where it is defined and if we can replace it with its definition. We have to be careful to the side effects some instructions may have. To do the propagation, we use the computed DU and UD chains. """ change = True while change: change = False for node in graph.rpo: for i, ins in node.get_loc_with_ins(): logger.debug('Treating instruction %d: %s', i, ins) logger.debug(' Used vars: %s', ins.get_used_vars()) for var in ins.get_used_vars(): # Get the list of locations this variable is defined at. locs = ud[var, i] logger.debug(' var %s defined in lines %s', var, locs) # If the variable is uniquely defined for this instruction # it may be eligible for propagation. if len(locs) != 1: continue loc = locs[0] # Methods parameters are defined with a location < 0. if loc < 0: continue orig_ins = graph.get_ins_from_loc(loc) logger.debug(' -> %s', orig_ins) logger.debug( ' -> DU(%s, %s) = %s', var, loc, du[var, loc] ) # We defined some instructions as not propagable. # Actually this is the case only for array creation # (new foo[x]) if not orig_ins.is_propagable(): logger.debug(' %s not propagable...', orig_ins) continue if not orig_ins.get_rhs().is_const(): # We only try to propagate constants and definition # points which are used at only one location. if len(du[var, loc]) > 1: logger.debug( ' => variable has multiple uses' ' and is not const => skip' ) continue # We check that the propagation is safe for all the # variables that are used in the instruction. # The propagation is not safe if there is a side effect # along the path from the definition of the variable # to its use in the instruction, or if the variable may # be redifined along this path. safe = True orig_ins_used_vars = orig_ins.get_used_vars() logger.debug( ' variables used by the original ' 'instruction: %s', orig_ins_used_vars, ) for var2 in orig_ins_used_vars: # loc is the location of the defined variable # i is the location of the current instruction if not clear_path(graph, var2, loc, i): safe = False break if not safe: logger.debug('Propagation NOT SAFE') continue # We also check that the instruction itself is # propagable. If the instruction has a side effect it # cannot be propagated if there is another side effect # along the path if orig_ins.has_side_effect(): if not clear_path(graph, None, loc, i): logger.debug( ' %s has side effect and the ' 'path is not clear !', orig_ins, ) continue logger.debug(' => Modification of the instruction!') logger.debug(' - BEFORE: %s', ins) ins.replace(var, orig_ins.get_rhs()) logger.debug(' -> AFTER: %s', ins) logger.debug('\t UD(%s, %s) : %s', var, i, ud[var, i]) ud[var, i].remove(loc) logger.debug('\t -> %s', ud[var, i]) if len(ud[var, i]) == 0: ud.pop((var, i)) for var2 in orig_ins.get_used_vars(): # We update the UD chain of the variables we # propagate. We also have to take the # definition points of all the variables used # by the instruction and update the DU chain # with this information. old_ud = ud.get((var2, loc)) logger.debug('\t ud(%s, %s) = %s', var2, loc, old_ud) # If the instruction use the same variable # multiple times, the second+ time the ud chain # will be None because already treated. if old_ud is None: continue ud[var2, i].extend(old_ud) logger.debug( '\t - ud(%s, %s) = %s', var2, i, ud[var2, i] ) ud.pop((var2, loc)) for def_loc in old_ud: du[var2, def_loc].remove(loc) du[var2, def_loc].append(i) new_du = du[var, loc] logger.debug('\t new_du(%s, %s): %s', var, loc, new_du) new_du.remove(i) logger.debug('\t -> %s', new_du) if not new_du: logger.debug('\t REMOVING INS %d', loc) du.pop((var, loc)) graph.remove_ins(loc) change = True class DummyNode(Node): def __init__(self, name): super().__init__(name) def get_loc_with_ins(self): return [] def __repr__(self): return '%s-dumnode' % self.name def __str__(self): return '%s-dummynode' % self.name def group_variables(lvars, DU, UD): treated = defaultdict(list) variables = defaultdict(list) # FIXME for var, loc in sorted(DU, key=lambda x: (str(x[0]), str(x[1]))): if var not in lvars: continue if loc in treated[var]: continue defs = [loc] uses = set(DU[var, loc]) change = True while change: change = False for use in uses: ldefs = UD[var, use] for ldef in ldefs: if ldef not in defs: defs.append(ldef) change = True for ldef in defs[1:]: luses = set(DU[var, ldef]) for use in luses: if use not in uses: uses.add(use) change = True treated[var].extend(defs) variables[var].append((defs, list(uses))) return variables def split_variables(graph, lvars, DU, UD): variables = group_variables(lvars, DU, UD) if lvars: nb_vars = max(lvars) + 1 else: nb_vars = 0 for var, versions in variables.items(): nversions = len(versions) if nversions == 1: continue orig_var = lvars.pop(var) for i, (defs, uses) in enumerate(versions): if min(defs) < 0: # Param if orig_var.this: new_version = ThisParam(var, orig_var.type) else: new_version = Param(var, orig_var.type) lvars[var] = new_version else: new_version = Variable(nb_vars) new_version.type = orig_var.type lvars[nb_vars] = new_version # add new version to variables nb_vars += 1 new_version.name = '%d_%d' % (var, i) for loc in defs: if loc < 0: continue ins = graph.get_ins_from_loc(loc) ins.replace_lhs(new_version) DU[(new_version.value(), loc)] = DU.pop((var, loc)) for loc in uses: ins = graph.get_ins_from_loc(loc) ins.replace_var(var, new_version) UD[(new_version.value(), loc)] = UD.pop((var, loc)) def reach_def_analysis(graph, lparams): # We insert two special nodes : entry & exit, to the graph. # This is done to simplify the reaching definition analysis. old_entry = graph.entry old_exit = graph.exit new_entry = DummyNode('entry') graph.add_node(new_entry) graph.add_edge(new_entry, old_entry) graph.entry = new_entry if old_exit: new_exit = DummyNode('exit') graph.add_node(new_exit) graph.add_edge(old_exit, new_exit) graph.rpo.append(new_exit) analysis = BasicReachDef(graph, lparams) analysis.run() # The analysis is done, We can now remove the two special nodes. graph.remove_node(new_entry) if old_exit: graph.remove_node(new_exit) graph.entry = old_entry return analysis def build_def_use(graph, lparams): """ Builds the Def-Use and Use-Def (DU/UD) chains of the variables of the method. """ analysis = reach_def_analysis(graph, lparams) UD = defaultdict(list) for node in graph.rpo: for i, ins in node.get_loc_with_ins(): for var in ins.get_used_vars(): # var not in analysis.def_to_loc: test that the register # exists. It is possible that it is not the case, when a # variable is of a type which is stored on multiple registers # e.g: a 'double' stored in v3 is also present in v4, so a call # to foo(v3), will in fact call foo(v3, v4). if var not in analysis.def_to_loc: continue ldefs = analysis.defs[node] prior_def = -1 for v in ldefs.get(var, set()): if prior_def < v < i: prior_def = v if prior_def >= 0: UD[var, i].append(prior_def) else: intersect = analysis.def_to_loc[var].intersection( analysis.R[node] ) UD[var, i].extend(intersect) DU = defaultdict(list) for var_loc, defs_loc in UD.items(): var, loc = var_loc for def_loc in defs_loc: DU[var, def_loc].append(loc) return UD, DU def place_declarations(graph, dvars, du, ud): idom = graph.immediate_dominators() for node in graph.post_order(): for loc, ins in node.get_loc_with_ins(): for var in ins.get_used_vars(): if not isinstance(dvars[var], Variable) or isinstance( dvars[var], Param ): continue var_defs_locs = ud[var, loc] def_nodes = set() for def_loc in var_defs_locs: def_node = graph.get_node_from_loc(def_loc) # TODO: place declarations in catch if needed if def_node.in_catch: continue def_nodes.add(def_node) if not def_nodes: continue common_dominator = def_nodes.pop() for def_node in def_nodes: common_dominator = common_dom( idom, common_dominator, def_node ) if any( var in range(*common_dominator.ins_range) for var in ud[var, loc] ): continue common_dominator.add_variable_declaration(dvars[var]) ================================================ FILE: libs/androguard/decompiler/decompile.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from androguard.core.analysis.analysis import Analysis, MethodAnalysis from androguard.core.dex import EncodedField import struct import sys from collections import defaultdict from loguru import logger import androguard.core.androconf as androconf import androguard.decompiler.util as util from androguard.core import apk, dex from androguard.core.analysis import analysis from androguard.decompiler.control_flow import identify_structures from androguard.decompiler.dast import JSONWriter from androguard.decompiler.dataflow import ( build_def_use, dead_code_elimination, place_declarations, register_propagation, split_variables, ) from androguard.decompiler.graph import construct, simplify, split_if_nodes from androguard.decompiler.instruction import Param, ThisParam from androguard.decompiler.writer import Writer from androguard.util import readFile logger.add( sys.stderr, format="{time} {level} {message}", filter="dad", level="INFO" ) # No seperate DvField class currently def get_field_ast(field: EncodedField) -> dict: triple = ( field.get_class_name()[1:-1], field.get_name(), field.get_descriptor(), ) expr = None if field.init_value: val = field.init_value.value expr = JSONWriter.dummy(str(val)) if val is not None: if field.get_descriptor() == 'Ljava/lang/String;': expr = JSONWriter.literal_string(val) elif field.proto == 'B': expr = JSONWriter.literal_hex_int( struct.unpack(' None: method = methanalysis.get_method() self.method = method self.start_block = next(methanalysis.get_basic_blocks().get(), None) self.cls_name = method.get_class_name() self.name = method.get_name() self.lparams = [] self.var_to_name = defaultdict() self.writer = None self.graph = None self.ast = None self.access = util.get_access_method(method.get_access_flags()) desc = method.get_descriptor() self.type = desc.split(')')[-1] self.params_type = util.get_params_type(desc) self.triple = method.get_triple() self.exceptions = methanalysis.exceptions.exceptions code = method.get_code() if code is None: logger.debug('No code : %s %s', self.name, self.cls_name) else: start = code.registers_size - code.ins_size if 'static' not in self.access: self.var_to_name[start] = ThisParam(start, self.cls_name) self.lparams.append(start) start += 1 num_param = 0 for ptype in self.params_type: param = start + num_param self.lparams.append(param) self.var_to_name[param] = Param(param, ptype) num_param += util.get_type_size(ptype) if not __debug__: from androguard.core import bytecode # TODO: use tempfile to create a correct tempfile (cross platform compatible) bytecode.method2png( '/tmp/dad/graphs/{}#{}.png'.format( self.cls_name.split('/')[-1][:-1], self.name ), methanalysis, ) def process(self, doAST: bool = False) -> None: """ Processes the method and decompile the code. There are two modes of operation: 1) Normal Decompilation to Java Code 2) Decompilation into an abstract syntax tree (AST) The Decompilation is done twice. First, a rough decompilation is created, which is then optimized. Second, the optimized version is used to create the final version. :param doAST: generate AST instead of Java Code """ logger.debug('METHOD : %s', self.name) # Native methods... no blocks. if self.start_block is None: logger.debug('Native Method.') if doAST: self.ast = JSONWriter(None, self).get_ast() else: self.writer = Writer(None, self) self.writer.write_method() return # Construct the CFG graph = construct(self.start_block, self.var_to_name, self.exceptions) self.graph = graph if not __debug__: # TODO: use tempfile to create a correct tempfile (cross platform compatible) util.create_png(self.cls_name, self.name, graph, '/tmp/dad/blocks') use_defs, def_uses = build_def_use(graph, self.lparams) split_variables(graph, self.var_to_name, def_uses, use_defs) dead_code_elimination(graph, def_uses, use_defs) register_propagation(graph, def_uses, use_defs) # FIXME var_to_name need to contain the created tmp variables. # This seems to be a workaround, we add them into the list manually for var, i in def_uses: if not isinstance(var, int): self.var_to_name[var] = var.upper() place_declarations(graph, self.var_to_name, def_uses, use_defs) del def_uses, use_defs # After the DCE pass, some nodes may be empty, so we can simplify the # graph to delete these nodes. # We start by restructuring the graph by spliting the conditional nodes # into a pre-header and a header part. split_if_nodes(graph) # We then simplify the graph by merging multiple statement nodes into # a single statement node when possible. This also delete empty nodes. simplify(graph) graph.compute_rpo() if not __debug__: # TODO: use tempfile to create a correct tempfile (cross platform compatible) util.create_png( self.cls_name, self.name, graph, '/tmp/dad/pre-structured' ) identify_structures(graph, graph.immediate_dominators()) if not __debug__: # TODO: use tempfile to create a correct tempfile (cross platform compatible) util.create_png( self.cls_name, self.name, graph, '/tmp/dad/structured' ) if doAST: self.ast = JSONWriter(graph, self).get_ast() else: self.writer = Writer(graph, self) self.writer.write_method() def get_ast(self) -> dict: """ Returns the AST, if previously was generated by calling :meth:`process` with argument :code:`doAST=True`. The AST is a :class:`dict` with the following keys: * triple * flags * ret * params * comments * body The actual AST for the method is in the :code:`body`. :return: dict """ return self.ast def show_source(self) -> None: print(self.get_source()) def get_source(self) -> str: if self.writer: return str(self.writer) return '' def get_source_ext(self) -> list[tuple]: if self.writer: return self.writer.str_ext() return [] def __repr__(self): # return 'Method %s' % self.name return '' % self.name class DvClass: """ This is a wrapper for :class:`~androguard.core.bytecodes.dvm.ClassDefItem` inside the decompiler. At first, :py:attr:`methods` contains a list of :class:`~androguard.core.dex.EncodedMethod`, which are successively replaced by :class:`DvMethod` in the process of decompilation. :param androguard.core.dex.ClassDefItem dvclass: the class item :param androguard.core.analysis.analysis.Analysis vma: an Analysis object """ def __init__( self, dvclass: dex.ClassDefItem, vma: analysis.Analysis ) -> None: name = dvclass.get_name() if name.find('/') > 0: pckg, name = name.rsplit('/', 1) else: pckg, name = '', name self.package = pckg[1:].replace('/', '.') self.name = name[:-1] self.vma = vma self.methods = dvclass.get_methods() self.fields = dvclass.get_fields() self.code = [] self.inner = False access = dvclass.get_access_flags() # If interface we remove the class and abstract keywords if 0x200 & access: prototype = '%s %s' if access & 0x400: access -= 0x400 else: prototype = '%s class %s' self.access = util.get_access_class(access) self.prototype = prototype % (' '.join(self.access), self.name) self.interfaces = dvclass.get_interfaces() self.superclass = dvclass.get_superclassname() self.thisclass = dvclass.get_name() logger.debug('Class : %s', self.name) logger.debug('Methods added :') for meth in self.methods: logger.debug( '%s (%s, %s)', meth.get_method_idx(), self.name, meth.name ) logger.debug('') def get_methods(self) -> list[dex.EncodedMethod]: return self.methods def process_method(self, num: int, doAST: bool = False) -> None: method = self.methods[num] if not isinstance(method, DvMethod): self.methods[num] = DvMethod(self.vma.get_method(method)) self.methods[num].process(doAST=doAST) else: method.process(doAST=doAST) def process(self, doAST: bool = False) -> None: for i in range(len(self.methods)): try: self.process_method(i, doAST=doAST) except Exception as e: # FIXME: too broad exception? logger.warning( 'Error decompiling method %s: %s', self.methods[i], e ) def get_ast(self) -> dict: fields = [get_field_ast(f) for f in self.fields] methods = [] for m in self.methods: if isinstance(m, DvMethod) and m.ast: methods.append(m.get_ast()) isInterface = 'interface' in self.access return { 'rawname': self.thisclass[1:-1], 'name': JSONWriter.parse_descriptor(self.thisclass), 'super': JSONWriter.parse_descriptor(self.superclass), 'flags': self.access, 'isInterface': isInterface, 'interfaces': list( map(JSONWriter.parse_descriptor, self.interfaces) ), 'fields': fields, 'methods': methods, } def get_source(self) -> str: source = [] if not self.inner and self.package: source.append('package %s;\n' % self.package) superclass, prototype = self.superclass, self.prototype if superclass is not None and superclass != 'Ljava/lang/Object;': superclass = superclass[1:-1].replace('/', '.') prototype += ' extends %s' % superclass if len(self.interfaces) > 0: prototype += ' implements %s' % ', '.join( [str(n[1:-1].replace('/', '.')) for n in self.interfaces] ) source.append('%s {\n' % prototype) for field in self.fields: name = field.get_name() access = util.get_access_field(field.get_access_flags()) f_type = util.get_type(field.get_descriptor()) source.append(' ') if access: source.append(' '.join(access)) source.append(' ') init_value = field.get_init_value() if init_value: value = init_value.value if f_type == 'String': if value: value = '"%s"' % str(value).encode( "unicode-escape" ).decode("ascii") else: # FIXME we can not check if this value here is null or "" # In both cases we end up here... value = '""' elif field.proto == 'B': # byte value: convert from unsiged int to signed and print as hex # as bytes are signed in Java value = hex(struct.unpack("b", struct.pack("B", value))[0]) source.append('{} {} = {};\n'.format(f_type, name, value)) else: source.append('{} {};\n'.format(f_type, name)) for method in self.methods: if isinstance(method, DvMethod): source.append(method.get_source()) source.append('}\n') return ''.join(source) def get_source_ext(self) -> list[tuple[str, list]]: source = [] if not self.inner and self.package: source.append( ( 'PACKAGE', [ ('PACKAGE_START', 'package '), ('NAME_PACKAGE', '%s' % self.package), ('PACKAGE_END', ';\n'), ], ) ) list_proto = [ ('PROTOTYPE_ACCESS', '%s class ' % ' '.join(self.access)), ('NAME_PROTOTYPE', '%s' % self.name, self.package), ] superclass = self.superclass if superclass is not None and superclass != 'Ljava/lang/Object;': superclass = superclass[1:-1].replace('/', '.') list_proto.append(('EXTEND', ' extends ')) list_proto.append(('NAME_SUPERCLASS', '%s' % superclass)) if len(self.interfaces) > 0: list_proto.append(('IMPLEMENTS', ' implements ')) for i, interface in enumerate(self.interfaces): if i != 0: list_proto.append(('COMMA', ', ')) list_proto.append( ('NAME_INTERFACE', interface[1:-1].replace('/', '.')) ) list_proto.append(('PROTOTYPE_END', ' {\n')) source.append(("PROTOTYPE", list_proto)) for field in self.fields: field_access_flags = field.get_access_flags() access = [ util.ACCESS_FLAGS_FIELDS[flag] for flag in util.ACCESS_FLAGS_FIELDS if flag & field_access_flags ] f_type = util.get_type(field.get_descriptor()) name = field.get_name() if access: access_str = ' %s ' % ' '.join(access) else: access_str = ' ' value = None init_value = field.get_init_value() if init_value: value = init_value.value if f_type == 'String': if value: value = ' = "%s"' % value.encode( "unicode-escape" ).decode("ascii") else: # FIXME we can not check if this value here is null or "" # In both cases we end up here... value = ' = ""' elif field.proto == 'B': # a byte value = ' = %s' % hex( struct.unpack("b", struct.pack("B", value))[0] ) else: value = ' = %s' % str(value) if value: source.append( ( 'FIELD', [ ('FIELD_ACCESS', access_str), ('FIELD_TYPE', '%s' % f_type), ('SPACE', ' '), ('NAME_FIELD', '%s' % name, f_type, field), ('FIELD_VALUE', value), ('FIELD_END', ';\n'), ], ) ) else: source.append( ( 'FIELD', [ ('FIELD_ACCESS', access_str), ('FIELD_TYPE', '%s' % f_type), ('SPACE', ' '), ('NAME_FIELD', '%s' % name, f_type, field), ('FIELD_END', ';\n'), ], ) ) for method in self.methods: if isinstance(method, DvMethod): source.append(("METHOD", method.get_source_ext())) source.append(("CLASS_END", [('CLASS_END', '}\n')])) return source def show_source(self) -> None: print(self.get_source()) def __repr__(self): return '' % self.name class DvMachine: """ Wrapper class for a Dalvik Object, like a DEX or ODEX file. The wrapper allows to take a Dalvik file and get a list of Classes out of it. The :class:`~androguard.decompiler.decompile.DvMachine` can take either an APK file directly, where all DEX files from the multidex are used, or a single DEX or ODEX file as an argument. At first, :py:attr:`classes` contains only :class:`~androguard.core.dex.ClassDefItem` as values. Then these objects are replaced by :class:`DvClass` items successively. """ def __init__(self, name: str) -> None: """ :param name: filename to load """ self.vma = analysis.Analysis() # Proper detection which supports multidex inside APK ftype = androconf.is_android(name) if ftype == 'APK': for d in apk.APK(name).get_all_dex(): self.vma.add(dex.DEX(d)) elif ftype == 'DEX': self.vma.add(dex.DEX(readFile(name))) elif ftype == 'DEY': self.vma.add(dex.ODEX(readFile(name))) else: raise ValueError("Format not recognised for filename '%s'" % name) self.classes = { dvclass.orig_class.get_name(): dvclass.orig_class for dvclass in self.vma.get_classes() } # TODO why not? # util.merge_inner(self.classes) def get_classes(self) -> list[str]: """ Return a list of classnames contained in this machine. The format of each name is Lxxx; :return: list of class names """ return list(self.classes.keys()) def get_class(self, class_name: str) -> DvClass: """ Return the :class:`DvClass` with the given name The name is partially matched against the known class names and the first result is returned. For example, the input `foobar` will match on Lfoobar/bla/foo; :param str class_name: :return: the class matching on the name :rtype: :class:`DvClass` """ for name, klass in self.classes.items(): # TODO why use the name partially? if class_name in name: if isinstance(klass, DvClass): return klass dvclass = self.classes[name] = DvClass(klass, self.vma) return dvclass def process(self) -> None: """ Process all classes inside the machine. This calls :meth:`~androgaurd.decompiler.decompile.DvClass.process` on each :class:`DvClass`. """ for name, klass in self.classes.items(): logger.debug('Processing class: %s', name) if isinstance(klass, DvClass): klass.process() else: dvclass = self.classes[name] = DvClass(klass, self.vma) dvclass.process() def show_source(self) -> None: """ Calls `show_source` on all classes inside the machine. This prints the source to stdout. This calls :meth:`~androgaurd.decompiler.decompile.DvClass.show_source` on each :class:`DvClass`. """ for klass in self.classes.values(): klass.show_source() def process_and_show(self) -> None: """ Run :meth:`process` and :meth:`show_source` after each other. """ for name, klass in sorted(self.classes.items()): logger.debug('Processing class: %s', name) if not isinstance(klass, DvClass): klass = DvClass(klass, self.vma) klass.process() klass.show_source() def get_ast(self) -> dict: """ Processes each class with AST enabled and returns a dictionary with all single ASTs Classnames as keys. :return: an dictionary for all classes :rtype: dict """ ret = dict() for name, cls in sorted(self.classes.items()): logger.debug('Processing class: %s', name) if not isinstance(cls, DvClass): cls = DvClass(cls, self.vma) cls.process(doAST=True) ret[name] = cls.get_ast() return ret ================================================ FILE: libs/androguard/decompiler/decompiler.py ================================================ # This file is part of Androguard. # # Copyright (C) 2013, Anthony Desnos # All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from androguard.core.analysis.analysis import Analysis, MethodAnalysis from androguard.core.dex import DEX, ClassDefItem from loguru import logger from pygments import highlight from pygments.formatters import TerminalFormatter from pygments.lexers import get_lexer_by_name from pygments.token import Token from androguard.decompiler import decompile class DecompilerDAD: def __init__(self, vm: DEX, vmx: Analysis) -> None: """ Decompiler wrapper for DAD: **D**AD is **A** **D**ecompiler DAD is the androguard internal decompiler. This Method does not use the :class:`~androguard.decompiler.decompile.DvMachine` but creates :class:`~androguard.decompiler.decompile.DvClass` and :class:`~androguard.decompiler.decompile.DvMethod` on demand. :param androguard.core.bytecodes.DEX vm: `DEX` object :param androguard.core.analysis.analysis.Analysis vmx: `Analysis` object """ self.vm = vm self.vmx = vmx def get_source_method(self, m: MethodAnalysis) -> str: mx = self.vmx.get_method(m) z = decompile.DvMethod(mx) z.process() return z.get_source() def get_ast_method(self, m: MethodAnalysis) -> dict: mx = self.vmx.get_method(m) z = decompile.DvMethod(mx) z.process(doAST=True) return z.get_ast() def display_source(self, m: MethodAnalysis) -> None: result = self.get_source_method(m) lexer = get_lexer_by_name("java", stripall=True) formatter = TerminalFormatter() result = highlight(result, lexer, formatter) print(result) def get_source_class(self, _class: ClassDefItem) -> str: c = decompile.DvClass(_class, self.vmx) c.process() return c.get_source() def get_ast_class(self, _class: ClassDefItem) -> dict: c = decompile.DvClass(_class, self.vmx) c.process(doAST=True) return c.get_ast() def get_source_class_ext( self, _class: ClassDefItem ) -> list[tuple[str, list]]: c = decompile.DvClass(_class, self.vmx) c.process() result = c.get_source_ext() return result def display_all(self, _class: ClassDefItem) -> None: result = self.get_source_class(_class) lexer = get_lexer_by_name("java", stripall=True) formatter = TerminalFormatter() result = highlight(result, lexer, formatter) print(result) ================================================ FILE: libs/androguard/decompiler/graph.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from collections import defaultdict from loguru import logger from androguard.decompiler.basic_blocks import ( CondBlock, StatementBlock, build_node_from_block, ) from androguard.decompiler.instruction import Variable # TODO Could use networkx here, as it has plenty of tools already, no need to reengineer the wheel class Graph: """ Stores a CFG (Control Flow Graph), which is a directed graph. The CFG defines an entry node :py:attr:`entry`, a single exit node :py:attr:`exit`, a list of nodes :py:attr:`nodes` and a list of edges :py:attr:`edges`. """ def __init__(self): self.entry = None self.exit = None self.nodes = list() self.edges = defaultdict(list) self.rpo = [] self.catch_edges = defaultdict(list) self.reverse_edges = defaultdict(list) self.reverse_catch_edges = defaultdict(list) self.loc_to_ins = None self.loc_to_node = None def sucs(self, node): return self.edges.get(node, []) def all_sucs(self, node): return self.edges.get(node, []) + self.catch_edges.get(node, []) def preds(self, node): return [n for n in self.reverse_edges.get(node, []) if not n.in_catch] def all_preds(self, node): return self.reverse_edges.get(node, []) + self.reverse_catch_edges.get( node, [] ) def add_node(self, node): """ Adds the given node to the graph, without connecting it to anyhting else. :param androguard.decompiler.node.Node node: node to add """ self.nodes.append(node) def add_edge(self, e1, e2): lsucs = self.edges[e1] if e2 not in lsucs: lsucs.append(e2) lpreds = self.reverse_edges[e2] if e1 not in lpreds: lpreds.append(e1) def add_catch_edge(self, e1, e2): # Ensure nodes always inherit non-empty catch types from each other. active_type = e1.catch_type or e2.catch_type e1.set_catch_type(active_type) e2.set_catch_type(active_type) lsucs = self.catch_edges[e1] if e2 not in lsucs: lsucs.append(e2) lpreds = self.reverse_catch_edges[e2] if e1 not in lpreds: lpreds.append(e1) def remove_node(self, node): """ Remove the node from the graph, removes also all connections. :param androguard.decompiler.node.Node node: the node to remove """ preds = self.reverse_edges.get(node, []) for pred in preds: self.edges[pred].remove(node) succs = self.edges.get(node, []) for suc in succs: self.reverse_edges[suc].remove(node) exc_preds = self.reverse_catch_edges.pop(node, []) for pred in exc_preds: self.catch_edges[pred].remove(node) exc_succs = self.catch_edges.pop(node, []) for suc in exc_succs: self.reverse_catch_edges[suc].remove(node) self.nodes.remove(node) if node in self.rpo: self.rpo.remove(node) del node def number_ins(self): self.loc_to_ins = {} self.loc_to_node = {} num = 0 for node in self.rpo: start_node = num num = node.number_ins(num) end_node = num - 1 self.loc_to_ins.update(node.get_loc_with_ins()) self.loc_to_node[start_node, end_node] = node def get_ins_from_loc(self, loc): return self.loc_to_ins.get(loc) def get_node_from_loc(self, loc): for (start, end), node in self.loc_to_node.items(): if start <= loc <= end: return node def remove_ins(self, loc): ins = self.get_ins_from_loc(loc) self.get_node_from_loc(loc).remove_ins(loc, ins) self.loc_to_ins.pop(loc) def compute_rpo(self): """ Number the nodes in reverse post order. An RPO traversal visit as many predecessors of a node as possible before visiting the node itself. """ nb = len(self.nodes) + 1 for node in self.post_order(): node.num = nb - node.po self.rpo = sorted(self.nodes, key=lambda n: n.num) def post_order(self): """ Yields the :class`~androguard.decompiler.node.Node`s of the graph in post-order i.e we visit all the children of a node before visiting the node itself. """ def _visit(n, cnt): visited.add(n) for suc in self.all_sucs(n): if suc not in visited: for cnt, s in _visit(suc, cnt): yield cnt, s n.po = cnt yield cnt + 1, n visited = set() for _, node in _visit(self.entry, 1): yield node def draw(self, name, dname, draw_branches=True): """ Writes the current graph as a PNG file :param str name: filename (without .png) :param str dname: directory of the output png :param draw_branches: :return: """ import os from pydot import Dot, Edge g = Dot() g.set_node_defaults( color='lightgray', style='filled', shape='box', fontname='Courier', fontsize='10', ) for node in sorted(self.nodes, key=lambda x: x.num): if draw_branches and node.type.is_cond: g.add_edge(Edge(str(node), str(node.true), color='green')) g.add_edge(Edge(str(node), str(node.false), color='red')) else: for suc in self.sucs(node): g.add_edge(Edge(str(node), str(suc), color='blue')) for except_node in self.catch_edges.get(node, []): g.add_edge( Edge( str(node), str(except_node), color='black', style='dashed', ) ) g.write(os.path.join(dname, '%s.png' % name), format='png') def immediate_dominators(self): return dom_lt(self) def __len__(self): return len(self.nodes) def __repr__(self): return str(self.nodes) def __iter__(self): for node in self.nodes: yield node def split_if_nodes(graph): """ Split IfNodes in two nodes, the first node is the header node, the second one is only composed of the jump condition. """ node_map = {n: n for n in graph} to_update = set() for node in graph.nodes[:]: if node.type.is_cond: if len(node.get_ins()) > 1: pre_ins = node.get_ins()[:-1] last_ins = node.get_ins()[-1] pre_node = StatementBlock('%s-pre' % node.name, pre_ins) cond_node = CondBlock('%s-cond' % node.name, [last_ins]) node_map[node] = pre_node node_map[pre_node] = pre_node node_map[cond_node] = cond_node pre_node.copy_from(node) cond_node.copy_from(node) for var in node.var_to_declare: pre_node.add_variable_declaration(var) pre_node.type.is_stmt = True cond_node.true = node.true cond_node.false = node.false for pred in graph.all_preds(node): pred_node = node_map[pred] # Verify that the link is not an exception link if node not in graph.sucs(pred): graph.add_catch_edge(pred_node, pre_node) continue if pred is node: pred_node = cond_node if pred.type.is_cond: # and not (pred is node): if pred.true is node: pred_node.true = pre_node if pred.false is node: pred_node.false = pre_node graph.add_edge(pred_node, pre_node) for suc in graph.sucs(node): graph.add_edge(cond_node, node_map[suc]) # We link all the exceptions to the pre node instead of the # condition node, which should not trigger any of them. for suc in graph.catch_edges.get(node, []): graph.add_catch_edge(pre_node, node_map[suc]) if node is graph.entry: graph.entry = pre_node graph.add_node(pre_node) graph.add_node(cond_node) graph.add_edge(pre_node, cond_node) pre_node.update_attribute_with(node_map) cond_node.update_attribute_with(node_map) graph.remove_node(node) else: to_update.add(node) for node in to_update: node.update_attribute_with(node_map) def simplify(graph): """ Simplify the CFG by merging/deleting statement nodes when possible: If statement B follows statement A and if B has no other predecessor besides A, then we can merge A and B into a new statement node. We also remove nodes which do nothing except redirecting the control flow (nodes which only contains a goto). """ redo = True while redo: redo = False node_map = {} to_update = set() for node in graph.nodes[:]: if node.type.is_stmt and node in graph: sucs = graph.all_sucs(node) if len(sucs) != 1: continue suc = sucs[0] if len(node.get_ins()) == 0: if any( pred.type.is_switch for pred in graph.all_preds(node) ): continue if node is suc: continue node_map[node] = suc for pred in graph.all_preds(node): pred.update_attribute_with(node_map) if node not in graph.sucs(pred): graph.add_catch_edge(pred, suc) continue graph.add_edge(pred, suc) redo = True if node is graph.entry: graph.entry = suc graph.remove_node(node) elif ( suc.type.is_stmt and len(graph.all_preds(suc)) == 1 and not (suc in graph.catch_edges) and not ((node is suc) or (suc is graph.entry)) ): ins_to_merge = suc.get_ins() node.add_ins(ins_to_merge) for var in suc.var_to_declare: node.add_variable_declaration(var) new_suc = graph.sucs(suc)[0] if new_suc: graph.add_edge(node, new_suc) for exception_suc in graph.catch_edges.get(suc, []): graph.add_catch_edge(node, exception_suc) redo = True graph.remove_node(suc) else: to_update.add(node) for node in to_update: node.update_attribute_with(node_map) def dom_lt(graph): """Dominator algorithm from Lengauer-Tarjan""" def _dfs(v, n): semi[v] = n = n + 1 vertex[n] = label[v] = v ancestor[v] = 0 for w in graph.all_sucs(v): if not semi[w]: parent[w] = v n = _dfs(w, n) pred[w].add(v) return n def _compress(v): u = ancestor[v] if ancestor[u]: _compress(u) if semi[label[u]] < semi[label[v]]: label[v] = label[u] ancestor[v] = ancestor[u] def _eval(v): if ancestor[v]: _compress(v) return label[v] return v def _link(v, w): ancestor[w] = v parent, ancestor, vertex = {}, {}, {} label, dom = {}, {} pred, bucket = defaultdict(set), defaultdict(set) # Step 1: semi = {v: 0 for v in graph.nodes} n = _dfs(graph.entry, 0) for i in range(n, 1, -1): w = vertex[i] # Step 2: for v in pred[w]: u = _eval(v) y = semi[w] = min(semi[w], semi[u]) bucket[vertex[y]].add(w) pw = parent[w] _link(pw, w) # Step 3: bpw = bucket[pw] while bpw: v = bpw.pop() u = _eval(v) dom[v] = u if semi[u] < semi[v] else pw # Step 4: for i in range(2, n + 1): w = vertex[i] dw = dom[w] if dw != vertex[semi[w]]: dom[w] = dom[dw] dom[graph.entry] = None return dom def bfs(start): """ Breadth first search Yields all nodes found from the starting point :param start: start node """ to_visit = [start] visited = {start} while to_visit: node = to_visit.pop(0) yield node if node.exception_analysis: for _, _, exception in node.exception_analysis.exceptions: if exception not in visited: to_visit.append(exception) visited.add(exception) for _, _, child in node.childs: if child not in visited: to_visit.append(child) visited.add(child) class GenInvokeRetName: def __init__(self): self.num = 0 self.ret = None def new(self): self.num += 1 self.ret = Variable('tmp%d' % self.num) return self.ret def set_to(self, ret): self.ret = ret def last(self): return self.ret def make_node(graph, block, block_to_node, vmap, gen_ret): node = block_to_node.get(block) if node is None: node = build_node_from_block(block, vmap, gen_ret) block_to_node[block] = node if block.exception_analysis: for _type, _, exception_target in block.exception_analysis.exceptions: exception_node = block_to_node.get(exception_target) if exception_node is None: exception_node = build_node_from_block( exception_target, vmap, gen_ret, _type ) exception_node.in_catch = True block_to_node[exception_target] = exception_node node.set_catch_type(_type) exception_node.set_catch_type(_type) graph.add_catch_edge(node, exception_node) for _, _, child_block in block.childs: child_node = block_to_node.get(child_block) if child_node is None: child_node = build_node_from_block(child_block, vmap, gen_ret) block_to_node[child_block] = child_node graph.add_edge(node, child_node) if node.type.is_switch: node.add_case(child_node) if node.type.is_cond: if_target = ( (block.end // 2) - (block.last_length // 2) + node.off_last_ins ) child_addr = child_block.start // 2 if if_target == child_addr: node.true = child_node else: node.false = child_node # Check that both branch of the if point to something # It may happen that both branch point to the same node, in this case # the false branch will be None. So we set it to the right node. # TODO: In this situation, we should transform the condition node into # a statement node if node.type.is_cond and node.false is None: node.false = node.true return node def construct(start_block, vmap, exceptions): """ Constructs a CFG :param androguard.core.analysis.analysis.DEXBasicBlock start_block: The startpoint :param vmap: variable mapping :param exceptions: list of androguard.core.analysis.analysis.ExceptionAnalysis :rtype: Graph """ bfs_blocks = bfs(start_block) graph = Graph() gen_ret = GenInvokeRetName() # Construction of a mapping of basic blocks into Nodes block_to_node = {} exceptions_start_block = [] for exception in exceptions: for _, _, block in exception.exceptions: exceptions_start_block.append(block) for block in bfs_blocks: node = make_node(graph, block, block_to_node, vmap, gen_ret) graph.add_node(node) graph.entry = block_to_node[start_block] del block_to_node, bfs_blocks graph.compute_rpo() graph.number_ins() for node in graph.rpo: preds = [pred for pred in graph.all_preds(node) if pred.num < node.num] if preds and all(pred.in_catch for pred in preds): node.in_catch = True # FIXME: We have seen samples in the wild which have multiple exit nodes! # This seems to be not necessarily a obfuscation method, but rather some # speciality with certain compilers! # Create a list of Node which are 'return' node # There should be one and only one node of this type # If this is not the case, try to continue anyway by setting the exit node # to the one which has the greatest RPO number (not necessarily the case) lexit_nodes = [node for node in graph if node.type.is_return] if len(lexit_nodes) > 1: # Not sure that this case is possible... logger.error('Multiple exit nodes found !') graph.exit = graph.rpo[-1] elif len(lexit_nodes) < 1: # A method can have no return if it has throw statement(s) or if its # body is a while(1) whitout break/return. logger.debug('No exit node found !') else: graph.exit = lexit_nodes[0] return graph ================================================ FILE: libs/androguard/decompiler/instruction.py ================================================ # This file is part of Androguard. # # Copyright (C) 2012, Geoffroy Gueguen # All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import androguard.decompiler.util as util class IRForm: def __init__(self): self.var_map = {} self.type = None def is_call(self): return False def is_cond(self): return False def is_const(self): return False def is_ident(self): return False def is_propagable(self): return True def get_type(self): return self.type def set_type(self, _type): self.type = _type def has_side_effect(self): return False def get_used_vars(self): return [] def replace(self, old, new): raise NotImplementedError('replace not implemented in %r' % self) def replace_lhs(self, new): raise NotImplementedError('replace_lhs not implemented in %r' % self) def replace_var(self, old, new): raise NotImplementedError('replace_var not implemented in %r' % self) def remove_defined_var(self): pass def get_rhs(self): return [] def get_lhs(self): return None def visit(self, visitor): pass class Constant(IRForm): def __init__(self, value, atype, int_value=None, descriptor=None): """ :param value: :param atype: the type of the constant as described in https://source.android.com/devices/tech/dalvik/dex-format.html#typedescriptor :param int_value: :param descriptor: """ self.v = 'c%s' % value self.cst = value if int_value is None: self.cst2 = value else: self.cst2 = int_value self.type = atype self.clsdesc = descriptor def get_used_vars(self): return [] def is_const(self): return True def get_int_value(self): return self.cst2 def get_type(self): return self.type def visit(self, visitor): if self.type == 'Z': if self.cst == 0: return visitor.visit_constant('false') else: return visitor.visit_constant('true') elif self.type == 'Ljava/lang/Class;': return visitor.visit_base_class(self.cst, data=self.cst) elif self.type in 'IJB': return visitor.visit_constant(self.cst2) else: return visitor.visit_constant(self.cst) def __str__(self): return 'CST_%s' % repr(self.cst) class BaseClass(IRForm): def __init__(self, name, descriptor=None): self.v = 'c%s' % name self.cls = name self.clsdesc = descriptor def is_const(self): return True def visit(self, visitor): return visitor.visit_base_class(self.cls, data=self.cls) def __str__(self): return 'BASECLASS_%s' % self.cls class Variable(IRForm): def __init__(self, value): self.v = value self.declared = False self.type = None self.name = value def get_used_vars(self): return [self.v] def is_ident(self): return True def value(self): return self.v def visit(self, visitor): return visitor.visit_variable(self) def visit_decl(self, visitor): return visitor.visit_decl(self) def __str__(self): return 'VAR_%s' % self.name class Param(Variable): def __init__(self, value, atype): super().__init__(value) self.declared = True self.type = atype self.this = False def is_const(self): return True def visit(self, visitor): return visitor.visit_param(self.v, data=self.type) def __str__(self): return 'PARAM_%s' % self.name class ThisParam(Param): def __init__(self, value, atype): super().__init__(value, atype) self.this = True self.super = False def visit(self, visitor): if self.super: return visitor.visit_super() return visitor.visit_this() def __str__(self): return 'THIS' class AssignExpression(IRForm): def __init__(self, lhs, rhs): super().__init__() if lhs: self.lhs = lhs.v self.var_map[lhs.v] = lhs lhs.set_type(rhs.get_type()) else: self.lhs = None self.rhs = rhs def is_propagable(self): return self.rhs.is_propagable() def is_call(self): return self.rhs.is_call() def has_side_effect(self): return self.rhs.has_side_effect() def get_rhs(self): return self.rhs def get_lhs(self): return self.lhs def get_used_vars(self): return self.rhs.get_used_vars() def remove_defined_var(self): self.lhs = None def replace(self, old, new): self.rhs.replace(old, new) def replace_lhs(self, new): self.lhs = new.v self.var_map[new.v] = new def replace_var(self, old, new): self.rhs.replace_var(old, new) def visit(self, visitor): return visitor.visit_assign(self.var_map.get(self.lhs), self.rhs) def __str__(self): return 'ASSIGN({}, {})'.format(self.var_map.get(self.lhs), self.rhs) class MoveExpression(IRForm): def __init__(self, lhs, rhs): super().__init__() self.lhs = lhs.v self.rhs = rhs.v self.var_map.update([(lhs.v, lhs), (rhs.v, rhs)]) lhs.set_type(rhs.get_type()) def has_side_effect(self): return False def is_call(self): return self.var_map[self.rhs].is_call() def get_used_vars(self): return self.var_map[self.rhs].get_used_vars() def get_rhs(self): return self.var_map[self.rhs] def get_lhs(self): return self.lhs def visit(self, visitor): v_m = self.var_map return visitor.visit_move(v_m[self.lhs], v_m[self.rhs]) def replace(self, old, new): v_m = self.var_map rhs = v_m[self.rhs] if not (rhs.is_const() or rhs.is_ident()): rhs.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.rhs = new.value() else: v_m[old] = new def replace_lhs(self, new): if self.lhs != self.rhs: self.var_map.pop(self.lhs) self.lhs = new.v self.var_map[new.v] = new def replace_var(self, old, new): if self.lhs != old: self.var_map.pop(old) self.rhs = new.v self.var_map[new.v] = new def __str__(self): v_m = self.var_map return '{} = {}'.format(v_m.get(self.lhs), v_m.get(self.rhs)) class MoveResultExpression(MoveExpression): def __init__(self, lhs, rhs): super().__init__(lhs, rhs) def is_propagable(self): return self.var_map[self.rhs].is_propagable() def has_side_effect(self): return self.var_map[self.rhs].has_side_effect() def visit(self, visitor): v_m = self.var_map return visitor.visit_move_result(v_m[self.lhs], v_m[self.rhs]) def __str__(self): v_m = self.var_map return '{} = {}'.format(v_m.get(self.lhs), v_m.get(self.rhs)) class ArrayStoreInstruction(IRForm): def __init__(self, rhs, array, index, _type): super().__init__() self.rhs = rhs.v self.array = array.v self.index = index.v self.var_map.update([(rhs.v, rhs), (array.v, array), (index.v, index)]) self.type = _type def has_side_effect(self): return True def get_used_vars(self): v_m = self.var_map lused_vars = v_m[self.array].get_used_vars() lused_vars.extend(v_m[self.index].get_used_vars()) lused_vars.extend(v_m[self.rhs].get_used_vars()) return list(set(lused_vars)) def visit(self, visitor): v_m = self.var_map return visitor.visit_astore( v_m[self.array], v_m[self.index], v_m[self.rhs], data=self ) def replace_var(self, old, new): if self.rhs == old: self.rhs = new.v if self.array == old: self.array = new.v if self.index == old: self.index = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map if old in v_m: arg = v_m[old] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new if self.rhs == old: self.rhs = new.value() if self.array == old: self.array = new.value() if self.index == old: self.array = new.value() else: v_m[old] = new else: for arg in (v_m[self.array], v_m[self.index], v_m[self.rhs]): if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) def __str__(self): v_m = self.var_map return '{}[{}] = {}'.format( v_m[self.array], v_m[self.index], v_m[self.rhs] ) class StaticInstruction(IRForm): def __init__(self, rhs, klass, ftype, name): super().__init__() self.rhs = rhs.v self.cls = util.get_type(klass) self.ftype = ftype self.name = name self.var_map[rhs.v] = rhs self.clsdesc = klass def has_side_effect(self): return True def get_used_vars(self): return self.var_map[self.rhs].get_used_vars() def get_lhs(self): return None def visit(self, visitor): return visitor.visit_put_static( self.cls, self.name, self.var_map[self.rhs] ) def replace_var(self, old, new): self.rhs = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map rhs = v_m[self.rhs] if not (rhs.is_const() or rhs.is_ident()): rhs.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.rhs = new.value() else: v_m[old] = new def __str__(self): return '{}.{} = {}'.format(self.cls, self.name, self.var_map[self.rhs]) class InstanceInstruction(IRForm): def __init__(self, rhs, lhs, klass, atype, name): super().__init__() self.lhs = lhs.v self.rhs = rhs.v self.atype = atype self.cls = util.get_type(klass) self.name = name self.var_map.update([(lhs.v, lhs), (rhs.v, rhs)]) self.clsdesc = klass def has_side_effect(self): return True def get_used_vars(self): v_m = self.var_map lused_vars = v_m[self.lhs].get_used_vars() lused_vars.extend(v_m[self.rhs].get_used_vars()) return list(set(lused_vars)) def get_lhs(self): return None def visit(self, visitor): v_m = self.var_map return visitor.visit_put_instance( v_m[self.lhs], self.name, v_m[self.rhs], data=self.atype ) def replace_var(self, old, new): if self.lhs == old: self.lhs = new.v if self.rhs == old: self.rhs = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map if old in v_m: arg = v_m[old] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new if self.lhs == old: self.lhs = new.value() if self.rhs == old: self.rhs = new.value() else: v_m[old] = new else: for arg in (v_m[self.lhs], v_m[self.rhs]): if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) def __str__(self): v_m = self.var_map return '{}.{} = {}'.format(v_m[self.lhs], self.name, v_m[self.rhs]) class NewInstance(IRForm): def __init__(self, ins_type): super().__init__() self.type = ins_type def get_type(self): return self.type def get_used_vars(self): return [] def visit(self, visitor): return visitor.visit_new(self.type, data=self) def replace(self, old, new): pass def __str__(self): return 'NEW(%s)' % self.type class InvokeInstruction(IRForm): def __init__(self, clsname, name, base, rtype, ptype, args, triple): super().__init__() self.cls = clsname self.name = name self.base = base.v self.rtype = rtype self.ptype = ptype self.args = [arg.v for arg in args] self.var_map[base.v] = base for arg in args: self.var_map[arg.v] = arg self.triple = triple assert triple[1] == name def get_type(self): if self.name == '': return self.var_map[self.base].get_type() return self.rtype def is_call(self): return True def has_side_effect(self): return True def replace_var(self, old, new): if self.base == old: self.base = new.v new_args = [] for arg in self.args: if arg != old: new_args.append(arg) else: new_args.append(new.v) self.args = new_args self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map if old in v_m: arg = v_m[old] if not (arg.is_ident() or arg.is_const()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new if self.base == old: self.base = new.value() new_args = [] for arg in self.args: if arg != old: new_args.append(arg) else: new_args.append(new.v) self.args = new_args else: v_m[old] = new else: base = v_m[self.base] if not (base.is_ident() or base.is_const()): base.replace(old, new) for arg in self.args: cnt = v_m[arg] if not (cnt.is_ident() or cnt.is_const()): cnt.replace(old, new) def get_used_vars(self): v_m = self.var_map lused_vars = [] for arg in self.args: lused_vars.extend(v_m[arg].get_used_vars()) lused_vars.extend(v_m[self.base].get_used_vars()) return list(set(lused_vars)) def visit(self, visitor): v_m = self.var_map largs = [v_m[arg] for arg in self.args] return visitor.visit_invoke( self.name, v_m[self.base], self.ptype, self.rtype, largs, self ) def __str__(self): v_m = self.var_map return '{}.{}({})'.format( v_m[self.base], self.name, ', '.join('%s' % v_m[i] for i in self.args), ) class InvokeRangeInstruction(InvokeInstruction): def __init__(self, clsname, name, rtype, ptype, args, triple): base = args.pop(0) super().__init__(clsname, name, base, rtype, ptype, args, triple) class InvokeDirectInstruction(InvokeInstruction): def __init__(self, clsname, name, base, rtype, ptype, args, triple): super().__init__(clsname, name, base, rtype, ptype, args, triple) class InvokeStaticInstruction(InvokeInstruction): def __init__(self, clsname, name, base, rtype, ptype, args, triple): super().__init__(clsname, name, base, rtype, ptype, args, triple) def get_used_vars(self): v_m = self.var_map lused_vars = [] for arg in self.args: lused_vars.extend(v_m[arg].get_used_vars()) return list(set(lused_vars)) class ReturnInstruction(IRForm): def __init__(self, arg): super().__init__() self.arg = arg if arg is not None: self.var_map[arg.v] = arg self.arg = arg.v def get_used_vars(self): if self.arg is None: return [] return self.var_map[self.arg].get_used_vars() def get_lhs(self): return None def visit(self, visitor): if self.arg is None: return visitor.visit_return_void() else: return visitor.visit_return(self.var_map[self.arg]) def replace_var(self, old, new): self.arg = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map arg = v_m[self.arg] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.arg = new.value() else: v_m[old] = new def __str__(self): if self.arg is not None: return 'RETURN(%s)' % self.var_map.get(self.arg) return 'RETURN' class NopExpression(IRForm): def __init__(self): pass def get_used_vars(self): return [] def get_lhs(self): return None def visit(self, visitor): return visitor.visit_nop() class SwitchExpression(IRForm): def __init__(self, src, branch): super().__init__() self.src = src.v self.branch = branch self.var_map[src.v] = src def get_used_vars(self): return self.var_map[self.src].get_used_vars() def visit(self, visitor): return visitor.visit_switch(self.var_map[self.src]) def replace_var(self, old, new): self.src = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map src = v_m[self.src] if not (src.is_const() or src.is_ident()): src.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.src = new.value() else: v_m[old] = new def __str__(self): return 'SWITCH(%s)' % (self.var_map[self.src]) class CheckCastExpression(IRForm): def __init__(self, arg, _type, descriptor=None): super().__init__() self.arg = arg.v self.var_map[arg.v] = arg self.type = descriptor self.clsdesc = descriptor def is_const(self): return self.var_map[self.arg].is_const() def get_used_vars(self): return self.var_map[self.arg].get_used_vars() def visit(self, visitor): return visitor.visit_check_cast( self.var_map[self.arg], util.get_type(self.type) ) def replace_var(self, old, new): self.arg = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map arg = v_m[self.arg] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.arg = new.value() else: v_m[old] = new def __str__(self): return 'CAST({}) {}'.format(self.type, self.var_map[self.arg]) class ArrayExpression(IRForm): def __init__(self): super().__init__() class ArrayLoadExpression(ArrayExpression): def __init__(self, arg, index, _type): super().__init__() self.array = arg.v self.idx = index.v self.var_map.update([(arg.v, arg), (index.v, index)]) self.type = _type def get_used_vars(self): v_m = self.var_map lused_vars = v_m[self.array].get_used_vars() lused_vars.extend(v_m[self.idx].get_used_vars()) return list(set(lused_vars)) def visit(self, visitor): v_m = self.var_map return visitor.visit_aload(v_m[self.array], v_m[self.idx]) def get_type(self): return self.var_map[self.array].get_type().replace('[', '', 1) def replace_var(self, old, new): if self.array == old: self.array = new.v if self.idx == old: self.idx = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map if old in v_m: arg = v_m[old] if not (arg.is_ident() or arg.is_const()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new if self.array == old: self.array = new.value() if self.idx == old: self.idx = new.value() else: v_m[old] = new else: for arg in (self.array, self.idx): cnt = v_m[arg] if not (cnt.is_ident() or cnt.is_const()): cnt.replace(old, new) def __str__(self): v_m = self.var_map return 'ARRAYLOAD({}, {})'.format(v_m[self.array], v_m[self.idx]) class ArrayLengthExpression(ArrayExpression): def __init__(self, array): super().__init__() self.array = array.v self.var_map[array.v] = array def get_type(self): return 'I' def get_used_vars(self): return self.var_map[self.array].get_used_vars() def visit(self, visitor): return visitor.visit_alength(self.var_map[self.array]) def replace_var(self, old, new): self.array = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map array = v_m[self.array] if not (array.is_const() or array.is_ident()): array.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.array = new.value() else: v_m[old] = new def __str__(self): return 'ARRAYLEN(%s)' % (self.var_map[self.array]) class NewArrayExpression(ArrayExpression): def __init__(self, asize, atype): super().__init__() self.size = asize.v self.type = atype self.var_map[asize.v] = asize def is_propagable(self): return False def get_used_vars(self): return self.var_map[self.size].get_used_vars() def visit(self, visitor): return visitor.visit_new_array(self.type, self.var_map[self.size]) def replace_var(self, old, new): self.size = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map size = v_m[self.size] if not (size.is_const() or size.is_ident()): size.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.size = new.value() else: v_m[old] = new def __str__(self): return 'NEWARRAY_{}[{}]'.format(self.type, self.var_map[self.size]) class FilledArrayExpression(ArrayExpression): def __init__(self, asize, atype, args): super().__init__() self.size = asize self.type = atype self.args = [] for arg in args: self.var_map[arg.v] = arg self.args.append(arg.v) def get_used_vars(self): lused_vars = [] for arg in self.args: lused_vars.extend(self.var_map[arg].get_used_vars()) return list(set(lused_vars)) def replace_var(self, old, new): new_args = [] for arg in self.args: if arg == old: new_args.append(new.v) else: new_args.append(arg) self.args = new_args self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map if old in v_m: arg = v_m[old] if not (arg.is_ident() or arg.is_const()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new new_args = [] for arg in self.args: if arg == old: new_args.append(new.v) else: new_args.append(arg) self.args = new_args else: v_m[old] = new else: for arg in self.args: cnt = v_m[arg] if not (cnt.is_ident() or cnt.is_const()): cnt.replace(old, new) def visit(self, visitor): v_m = self.var_map largs = [v_m[arg] for arg in self.args] return visitor.visit_filled_new_array(self.type, self.size, largs) class FillArrayExpression(ArrayExpression): def __init__(self, reg, value): super().__init__() self.reg = reg.v self.var_map[reg.v] = reg self.value = value def is_propagable(self): return False def get_rhs(self): return self.reg def replace_var(self, old, new): self.reg = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map reg = v_m[self.reg] if not (reg.is_const() or reg.is_ident()): reg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.reg = new.value() else: v_m[old] = new def get_used_vars(self): return self.var_map[self.reg].get_used_vars() def visit(self, visitor): return visitor.visit_fill_array(self.var_map[self.reg], self.value) class RefExpression(IRForm): def __init__(self, ref): super().__init__() self.ref = ref.v self.var_map[ref.v] = ref def is_propagable(self): return False def get_used_vars(self): return self.var_map[self.ref].get_used_vars() def replace_var(self, old, new): self.ref = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map ref = v_m[self.ref] if not (ref.is_const() or ref.is_ident()): ref.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new self.ref = new.value() else: v_m[old] = new class MoveExceptionExpression(RefExpression): def __init__(self, ref, _type): super().__init__(ref) self.type = _type ref.set_type(_type) def get_lhs(self): return self.ref def has_side_effect(self): return True def get_used_vars(self): return [] def replace_lhs(self, new): self.var_map.pop(self.ref) self.ref = new.v self.var_map[new.v] = new def visit(self, visitor): return visitor.visit_move_exception(self.var_map[self.ref], data=self) def __str__(self): return 'MOVE_EXCEPT %s' % self.var_map[self.ref] class MonitorEnterExpression(RefExpression): def __init__(self, ref): super().__init__(ref) def visit(self, visitor): return visitor.visit_monitor_enter(self.var_map[self.ref]) class MonitorExitExpression(RefExpression): def __init__(self, ref): super().__init__(ref) def visit(self, visitor): return visitor.visit_monitor_exit(self.var_map[self.ref]) class ThrowExpression(RefExpression): def __init__(self, ref): super().__init__(ref) def visit(self, visitor): return visitor.visit_throw(self.var_map[self.ref]) def __str__(self): return 'Throw %s' % self.var_map[self.ref] class BinaryExpression(IRForm): def __init__(self, op, arg1, arg2, _type): super().__init__() self.op = op self.arg1 = arg1.v self.arg2 = arg2.v self.var_map.update([(arg1.v, arg1), (arg2.v, arg2)]) self.type = _type def has_side_effect(self): v_m = self.var_map return ( v_m[self.arg1].has_side_effect() or v_m[self.arg2].has_side_effect() ) def get_used_vars(self): v_m = self.var_map lused_vars = v_m[self.arg1].get_used_vars() lused_vars.extend(v_m[self.arg2].get_used_vars()) return list(set(lused_vars)) def visit(self, visitor): v_m = self.var_map return visitor.visit_binary_expression( self.op, v_m[self.arg1], v_m[self.arg2] ) def replace_var(self, old, new): if self.arg1 == old: self.arg1 = new.v if self.arg2 == old: self.arg2 = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map if old in v_m: arg = v_m[old] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new if self.arg1 == old: self.arg1 = new.value() if self.arg2 == old: self.arg2 = new.value() else: v_m[old] = new else: for arg in (v_m[self.arg1], v_m[self.arg2]): if not (arg.is_ident() or arg.is_const()): arg.replace(old, new) def __str__(self): v_m = self.var_map return '({} {} {})'.format(self.op, v_m[self.arg1], v_m[self.arg2]) class BinaryCompExpression(BinaryExpression): def __init__(self, op, arg1, arg2, _type): super().__init__(op, arg1, arg2, _type) def visit(self, visitor): v_m = self.var_map return visitor.visit_cond_expression( self.op, v_m[self.arg1], v_m[self.arg2] ) class BinaryExpression2Addr(BinaryExpression): def __init__(self, op, dest, arg, _type): super().__init__(op, dest, arg, _type) class BinaryExpressionLit(BinaryExpression): def __init__(self, op, arg1, arg2): super().__init__(op, arg1, arg2, 'I') class UnaryExpression(IRForm): def __init__(self, op, arg, _type): super().__init__() self.op = op self.arg = arg.v self.var_map[arg.v] = arg self.type = _type def get_type(self): return self.var_map[self.arg].get_type() def get_used_vars(self): return self.var_map[self.arg].get_used_vars() def visit(self, visitor): return visitor.visit_unary_expression(self.op, self.var_map[self.arg]) def replace_var(self, old, new): self.arg = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map arg = v_m[self.arg] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) elif old in v_m: if new.is_ident(): v_m[new.value()] = new self.arg = new.value() else: v_m[old] = new def __str__(self): return '({}, {})'.format(self.op, self.var_map[self.arg]) class CastExpression(UnaryExpression): def __init__(self, op, atype, arg): super().__init__(op, arg, atype) self.clsdesc = atype def is_const(self): return self.var_map[self.arg].is_const() def get_type(self): return self.type def get_used_vars(self): return self.var_map[self.arg].get_used_vars() def visit(self, visitor): return visitor.visit_cast(self.op, self.var_map[self.arg]) def __str__(self): return 'CAST_{}({})'.format(self.op, self.var_map[self.arg]) CONDS = { '==': '!=', '!=': '==', '<': '>=', '<=': '>', '>=': '<', '>': '<=', } class ConditionalExpression(IRForm): def __init__(self, op, arg1, arg2): super().__init__() self.op = op self.arg1 = arg1.v self.arg2 = arg2.v self.var_map.update([(arg1.v, arg1), (arg2.v, arg2)]) def get_lhs(self): return None def is_cond(self): return True def get_used_vars(self): v_m = self.var_map lused_vars = v_m[self.arg1].get_used_vars() lused_vars.extend(v_m[self.arg2].get_used_vars()) return list(set(lused_vars)) def neg(self): self.op = CONDS[self.op] def visit(self, visitor): v_m = self.var_map return visitor.visit_cond_expression( self.op, v_m[self.arg1], v_m[self.arg2] ) def replace_var(self, old, new): if self.arg1 == old: self.arg1 = new.v if self.arg2 == old: self.arg2 = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map if old in v_m: arg = v_m[old] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) else: if new.is_ident(): v_m[new.value()] = new if self.arg1 == old: self.arg1 = new.value() if self.arg2 == old: self.arg2 = new.value() else: v_m[old] = new else: for arg in (v_m[self.arg1], v_m[self.arg2]): if not (arg.is_ident() or arg.is_const()): arg.replace(old, new) def __str__(self): v_m = self.var_map return 'COND({}, {}, {})'.format( self.op, v_m[self.arg1], v_m[self.arg2] ) class ConditionalZExpression(IRForm): def __init__(self, op, arg): super().__init__() self.op = op self.arg = arg.v self.var_map[arg.v] = arg def get_lhs(self): return None def is_cond(self): return True def get_used_vars(self): return self.var_map[self.arg].get_used_vars() def neg(self): self.op = CONDS[self.op] def visit(self, visitor): return visitor.visit_condz_expression(self.op, self.var_map[self.arg]) def replace_var(self, old, new): self.arg = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map arg = v_m[self.arg] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) elif old in v_m: if new.is_ident(): v_m[new.value()] = new self.arg = new.value() else: v_m[old] = new def __str__(self): return '(IS{}0, {})'.format(self.op, self.var_map[self.arg]) class InstanceExpression(IRForm): def __init__(self, arg, klass, ftype, name): super().__init__() self.arg = arg.v self.cls = util.get_type(klass) self.ftype = ftype self.name = name self.var_map[arg.v] = arg self.clsdesc = klass def get_type(self): return self.ftype def get_used_vars(self): return self.var_map[self.arg].get_used_vars() def visit(self, visitor): return visitor.visit_get_instance( self.var_map[self.arg], self.name, data=self.ftype ) def replace_var(self, old, new): self.arg = new.v self.var_map.pop(old) self.var_map[new.v] = new def replace(self, old, new): v_m = self.var_map arg = v_m[self.arg] if not (arg.is_const() or arg.is_ident()): arg.replace(old, new) elif old in v_m: if new.is_ident(): v_m[new.value()] = new self.arg = new.value() else: v_m[old] = new def __str__(self): return '{}.{}'.format(self.var_map[self.arg], self.name) class StaticExpression(IRForm): def __init__(self, cls_name, field_type, field_name): super().__init__() self.cls = util.get_type(cls_name) self.ftype = field_type self.name = field_name self.clsdesc = cls_name def get_type(self): return self.ftype def visit(self, visitor): return visitor.visit_get_static(self.cls, self.name) def replace(self, old, new): pass def __str__(self): return '{}.{}'.format(self.cls, self.name) ================================================ FILE: libs/androguard/decompiler/node.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. class MakeProperties(type): def __init__(cls, name, bases, dct): def _wrap_set(names, name): def fun(self, value): for field in names: self.__dict__[field] = (name == field) and value return fun def _wrap_get(name): def fun(self): return self.__dict__[name] return fun super().__init__(name, bases, dct) attrs = [] prefixes = ('_get_', '_set_') for key in list(dct.keys()): for prefix in prefixes: if key.startswith(prefix): attrs.append(key[4:]) delattr(cls, key) for attr in attrs: setattr( cls, attr[1:], property(_wrap_get(attr), _wrap_set(attrs, attr)), ) cls._attrs = attrs def __call__(cls, *args, **kwds): obj = super().__call__(*args, **kwds) for attr in cls._attrs: obj.__dict__[attr] = False return obj class LoopType(metaclass=MakeProperties): _set_is_pretest = _set_is_posttest = _set_is_endless = None _get_is_pretest = _get_is_posttest = _get_is_endless = None def copy(self): res = LoopType() for key, value in self.__dict__.items(): setattr(res, key, value) return res class NodeType(metaclass=MakeProperties): _set_is_cond = _set_is_switch = _set_is_stmt = None _get_is_cond = _get_is_switch = _get_is_stmt = None _set_is_return = _set_is_throw = None _get_is_return = _get_is_throw = None def copy(self): res = NodeType() for key, value in self.__dict__.items(): setattr(res, key, value) return res class Node: def __init__(self, name): self.name = name self.num = 0 self.follow = {'if': None, 'loop': None, 'switch': None} self.looptype = LoopType() self.type = NodeType() self.in_catch = False self.interval = None self.startloop = False self.latch = None self.loop_nodes = [] def copy_from(self, node): self.num = node.num self.looptype = node.looptype.copy() self.interval = node.interval self.startloop = node.startloop self.type = node.type.copy() self.follow = node.follow.copy() self.latch = node.latch self.loop_nodes = node.loop_nodes self.in_catch = node.in_catch def update_attribute_with(self, n_map): self.latch = n_map.get(self.latch, self.latch) for follow_type, value in self.follow.items(): self.follow[follow_type] = n_map.get(value, value) self.loop_nodes = list({n_map.get(n, n) for n in self.loop_nodes}) def get_head(self): return self def get_end(self): return self def __repr__(self): return '%s' % self class Interval: def __init__(self, head): self.name = 'Interval-%s' % head.name self.content = {head} self.end = None self.head = head self.in_catch = head.in_catch head.interval = self def __contains__(self, item): # If the interval contains nodes, check if the item is one of them if item in self.content: return True # If the interval contains intervals, we need to check them return any( item in node for node in self.content if isinstance(node, Interval) ) def add_node(self, node): if node in self.content: return False self.content.add(node) node.interval = self return True def compute_end(self, graph): for node in self.content: for suc in graph.sucs(node): if suc not in self.content: self.end = node self.end = self.end or self.head def get_end(self): return self.end.get_end() def get_head(self): return self.head.get_head() def __len__(self): return len(self.content) def __repr__(self): return '{}({})'.format(self.name, self.content) ================================================ FILE: libs/androguard/decompiler/opcode_ins.py ================================================ # This file is part of Androguard. # # Copyright (C) 2012, Geoffroy Gueguen # All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from struct import pack, unpack from loguru import logger import androguard.decompiler.util as util from androguard.decompiler.instruction import ( ArrayLengthExpression, ArrayLoadExpression, ArrayStoreInstruction, AssignExpression, BaseClass, BinaryCompExpression, BinaryExpression, BinaryExpression2Addr, BinaryExpressionLit, CastExpression, CheckCastExpression, ConditionalExpression, ConditionalZExpression, Constant, FillArrayExpression, FilledArrayExpression, InstanceExpression, InstanceInstruction, InvokeDirectInstruction, InvokeInstruction, InvokeRangeInstruction, InvokeStaticInstruction, MonitorEnterExpression, MonitorExitExpression, MoveExceptionExpression, MoveExpression, MoveResultExpression, NewArrayExpression, NewInstance, NopExpression, ReturnInstruction, StaticExpression, StaticInstruction, SwitchExpression, ThisParam, ThrowExpression, UnaryExpression, Variable, ) class Op: CMP = 'cmp' ADD = '+' SUB = '-' MUL = '*' DIV = '/' MOD = '%' AND = '&' OR = '|' XOR = '^' EQUAL = '==' NEQUAL = '!=' GREATER = '>' LOWER = '<' GEQUAL = '>=' LEQUAL = '<=' NEG = '-' NOT = '~' INTSHL = '<<' # '(%s << ( %s & 0x1f ))' INTSHR = '>>' # '(%s >> ( %s & 0x1f ))' LONGSHL = '<<' # '(%s << ( %s & 0x3f ))' LONGSHR = '>>' # '(%s >> ( %s & 0x3f ))' def get_variables(vmap, *variables): res = [] for variable in variables: res.append(vmap.setdefault(variable, Variable(variable))) if len(res) == 1: return res[0] return res def assign_const(dest_reg, cst, vmap): return AssignExpression(get_variables(vmap, dest_reg), cst) def assign_cmp(val_a, val_b, val_c, cmp_type, vmap): reg_a, reg_b, reg_c = get_variables(vmap, val_a, val_b, val_c) exp = BinaryCompExpression(Op.CMP, reg_b, reg_c, cmp_type) return AssignExpression(reg_a, exp) def load_array_exp(val_a, val_b, val_c, ar_type, vmap): reg_a, reg_b, reg_c = get_variables(vmap, val_a, val_b, val_c) return AssignExpression(reg_a, ArrayLoadExpression(reg_b, reg_c, ar_type)) def store_array_inst(val_a, val_b, val_c, ar_type, vmap): reg_a, reg_b, reg_c = get_variables(vmap, val_a, val_b, val_c) return ArrayStoreInstruction(reg_a, reg_b, reg_c, ar_type) def assign_cast_exp(val_a, val_b, val_op, op_type, vmap): reg_a, reg_b = get_variables(vmap, val_a, val_b) return AssignExpression(reg_a, CastExpression(val_op, op_type, reg_b)) def assign_binary_exp(ins, val_op, op_type, vmap): reg_a, reg_b, reg_c = get_variables(vmap, ins.AA, ins.BB, ins.CC) return AssignExpression( reg_a, BinaryExpression(val_op, reg_b, reg_c, op_type) ) def assign_binary_2addr_exp(ins, val_op, op_type, vmap): reg_a, reg_b = get_variables(vmap, ins.A, ins.B) return AssignExpression( reg_a, BinaryExpression2Addr(val_op, reg_a, reg_b, op_type) ) def assign_lit(op_type, val_cst, val_a, val_b, vmap): cst = Constant(val_cst, 'I') var_a, var_b = get_variables(vmap, val_a, val_b) return AssignExpression(var_a, BinaryExpressionLit(op_type, var_b, cst)) ## From here on, there are all defined instructions # nop def nop(ins, vmap): return NopExpression() # move vA, vB ( 4b, 4b ) def move(ins, vmap): logger.debug('Move %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.A, ins.B) return MoveExpression(reg_a, reg_b) # move/from16 vAA, vBBBB ( 8b, 16b ) def movefrom16(ins, vmap): logger.debug('MoveFrom16 %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.AA, ins.BBBB) return MoveExpression(reg_a, reg_b) # move/16 vAAAA, vBBBB ( 16b, 16b ) def move16(ins, vmap): logger.debug('Move16 %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.AAAA, ins.BBBB) return MoveExpression(reg_a, reg_b) # move-wide vA, vB ( 4b, 4b ) def movewide(ins, vmap): logger.debug('MoveWide %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.A, ins.B) return MoveExpression(reg_a, reg_b) # move-wide/from16 vAA, vBBBB ( 8b, 16b ) def movewidefrom16(ins, vmap): logger.debug('MoveWideFrom16 : %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.AA, ins.BBBB) return MoveExpression(reg_a, reg_b) # move-wide/16 vAAAA, vBBBB ( 16b, 16b ) def movewide16(ins, vmap): logger.debug('MoveWide16 %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.AAAA, ins.BBBB) return MoveExpression(reg_a, reg_b) # move-object vA, vB ( 4b, 4b ) def moveobject(ins, vmap): logger.debug('MoveObject %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.A, ins.B) return MoveExpression(reg_a, reg_b) # move-object/from16 vAA, vBBBB ( 8b, 16b ) def moveobjectfrom16(ins, vmap): logger.debug('MoveObjectFrom16 : %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.AA, ins.BBBB) return MoveExpression(reg_a, reg_b) # move-object/16 vAAAA, vBBBB ( 16b, 16b ) def moveobject16(ins, vmap): logger.debug('MoveObject16 : %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.AAAA, ins.BBBB) return MoveExpression(reg_a, reg_b) # move-result vAA ( 8b ) def moveresult(ins, vmap, ret): logger.debug('MoveResult : %s', ins.get_output()) return MoveResultExpression(get_variables(vmap, ins.AA), ret) # move-result-wide vAA ( 8b ) def moveresultwide(ins, vmap, ret): logger.debug('MoveResultWide : %s', ins.get_output()) return MoveResultExpression(get_variables(vmap, ins.AA), ret) # move-result-object vAA ( 8b ) def moveresultobject(ins, vmap, ret): logger.debug('MoveResultObject : %s', ins.get_output()) return MoveResultExpression(get_variables(vmap, ins.AA), ret) # move-exception vAA ( 8b ) def moveexception(ins, vmap, _type): logger.debug('MoveException : %s', ins.get_output()) return MoveExceptionExpression(get_variables(vmap, ins.AA), _type) # return-void def returnvoid(ins, vmap): logger.debug('ReturnVoid') return ReturnInstruction(None) # return vAA ( 8b ) def return_reg(ins, vmap): logger.debug('Return : %s', ins.get_output()) return ReturnInstruction(get_variables(vmap, ins.AA)) # return-wide vAA ( 8b ) def returnwide(ins, vmap): logger.debug('ReturnWide : %s', ins.get_output()) return ReturnInstruction(get_variables(vmap, ins.AA)) # return-object vAA ( 8b ) def returnobject(ins, vmap): logger.debug('ReturnObject : %s', ins.get_output()) return ReturnInstruction(get_variables(vmap, ins.AA)) # const/4 vA, #+B ( 4b, 4b ) def const4(ins, vmap): logger.debug('Const4 : %s', ins.get_output()) cst = Constant(ins.B, 'I') return assign_const(ins.A, cst, vmap) # const/16 vAA, #+BBBB ( 8b, 16b ) def const16(ins, vmap): logger.debug('Const16 : %s', ins.get_output()) cst = Constant(ins.BBBB, 'I') return assign_const(ins.AA, cst, vmap) # const vAA, #+BBBBBBBB ( 8b, 32b ) def const(ins, vmap): logger.debug('Const : %s', ins.get_output()) cst = Constant(ins.BBBBBBBB, 'I') return assign_const(ins.AA, cst, vmap) # const/high16 vAA, #+BBBB0000 ( 8b, 16b ) def consthigh16(ins, vmap): logger.debug('ConstHigh16 : %s', ins.get_output()) cst = Constant(ins.BBBB, 'I') return assign_const(ins.AA, cst, vmap) # const-wide/16 vAA, #+BBBB ( 8b, 16b ) def constwide16(ins, vmap): logger.debug('ConstWide16 : %s', ins.get_output()) cst = Constant(ins.BBBB, 'J') return assign_const(ins.AA, cst, vmap) # const-wide/32 vAA, #+BBBBBBBB ( 8b, 32b ) def constwide32(ins, vmap): logger.debug('ConstWide32 : %s', ins.get_output()) cst = Constant(ins.BBBBBBBB, 'J') return assign_const(ins.AA, cst, vmap) # const-wide vAA, #+BBBBBBBBBBBBBBBB ( 8b, 64b ) def constwide(ins, vmap): logger.debug('ConstWide : %s', ins.get_output()) cst = Constant(ins.BBBBBBBBBBBBBBBB, 'J') return assign_const(ins.AA, cst, vmap) # const-wide/high16 vAA, #+BBBB000000000000 ( 8b, 16b ) def constwidehigh16(ins, vmap): logger.debug('ConstWideHigh16 : %s', ins.get_output()) cst = Constant(ins.BBBB, 'J') return assign_const(ins.AA, cst, vmap) # const-string vAA ( 8b ) def conststring(ins, vmap): logger.debug('ConstString : %s', ins.get_output()) cst = Constant(ins.get_raw_string(), 'Ljava/lang/String;') return assign_const(ins.AA, cst, vmap) # const-string/jumbo vAA ( 8b ) def conststringjumbo(ins, vmap): logger.debug('ConstStringJumbo %s', ins.get_output()) cst = Constant(ins.get_raw_string(), 'Ljava/lang/String;') return assign_const(ins.AA, cst, vmap) # const-class vAA, type@BBBB ( 8b ) def constclass(ins, vmap): logger.debug('ConstClass : %s', ins.get_output()) cst = Constant( util.get_type(ins.get_string()), 'Ljava/lang/Class;', descriptor=ins.get_string(), ) return assign_const(ins.AA, cst, vmap) # monitor-enter vAA ( 8b ) def monitorenter(ins, vmap): logger.debug('MonitorEnter : %s', ins.get_output()) return MonitorEnterExpression(get_variables(vmap, ins.AA)) # monitor-exit vAA ( 8b ) def monitorexit(ins, vmap): logger.debug('MonitorExit : %s', ins.get_output()) a = get_variables(vmap, ins.AA) return MonitorExitExpression(a) # check-cast vAA ( 8b ) def checkcast(ins, vmap): logger.debug('CheckCast: %s', ins.get_output()) cast_type = util.get_type(ins.get_translated_kind()) cast_var = get_variables(vmap, ins.AA) cast_expr = CheckCastExpression( cast_var, cast_type, descriptor=ins.get_translated_kind() ) return AssignExpression(cast_var, cast_expr) # instance-of vA, vB ( 4b, 4b ) def instanceof(ins, vmap): logger.debug('InstanceOf : %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.A, ins.B) reg_c = BaseClass( util.get_type(ins.get_translated_kind()), descriptor=ins.get_translated_kind(), ) exp = BinaryExpression('instanceof', reg_b, reg_c, 'Z') return AssignExpression(reg_a, exp) # array-length vA, vB ( 4b, 4b ) def arraylength(ins, vmap): logger.debug('ArrayLength: %s', ins.get_output()) reg_a, reg_b = get_variables(vmap, ins.A, ins.B) return AssignExpression(reg_a, ArrayLengthExpression(reg_b)) # new-instance vAA ( 8b ) def newinstance(ins, vmap): logger.debug('NewInstance : %s', ins.get_output()) reg_a = get_variables(vmap, ins.AA) ins_type = ins.cm.get_type(ins.BBBB) return AssignExpression(reg_a, NewInstance(ins_type)) # new-array vA, vB ( 8b, size ) def newarray(ins, vmap): logger.debug('NewArray : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) exp = NewArrayExpression(b, ins.cm.get_type(ins.CCCC)) return AssignExpression(a, exp) # filled-new-array {vD, vE, vF, vG, vA} ( 4b each ) def fillednewarray(ins, vmap, ret): logger.debug('FilledNewArray : %s', ins.get_output()) c, d, e, f, g = get_variables(vmap, ins.C, ins.D, ins.E, ins.F, ins.G) array_type = ins.cm.get_type(ins.BBBB) exp = FilledArrayExpression(ins.A, array_type, [c, d, e, f, g][: ins.A]) return AssignExpression(ret, exp) # filled-new-array/range {vCCCC..vNNNN} ( 16b ) def fillednewarrayrange(ins, vmap, ret): logger.debug('FilledNewArrayRange : %s', ins.get_output()) a, c, n = get_variables(vmap, ins.AA, ins.CCCC, ins.NNNN) array_type = ins.cm.get_type(ins.BBBB) exp = FilledArrayExpression(a, array_type, [c, n]) return AssignExpression(ret, exp) # fill-array-data vAA, +BBBBBBBB ( 8b, 32b ) def fillarraydata(ins, vmap, value): logger.debug('FillArrayData : %s', ins.get_output()) return FillArrayExpression(get_variables(vmap, ins.AA), value) # fill-array-data-payload vAA, +BBBBBBBB ( 8b, 32b ) def fillarraydatapayload(ins, vmap): logger.debug('FillArrayDataPayload : %s', ins.get_output()) return FillArrayExpression(None) # throw vAA ( 8b ) def throw(ins, vmap): logger.debug('Throw : %s', ins.get_output()) return ThrowExpression(get_variables(vmap, ins.AA)) # goto +AA ( 8b ) def goto(ins, vmap): return NopExpression() # goto/16 +AAAA ( 16b ) def goto16(ins, vmap): return NopExpression() # goto/32 +AAAAAAAA ( 32b ) def goto32(ins, vmap): return NopExpression() # packed-switch vAA, +BBBBBBBB ( reg to test, 32b ) def packedswitch(ins, vmap): logger.debug('PackedSwitch : %s', ins.get_output()) reg_a = get_variables(vmap, ins.AA) return SwitchExpression(reg_a, ins.BBBBBBBB) # sparse-switch vAA, +BBBBBBBB ( reg to test, 32b ) def sparseswitch(ins, vmap): logger.debug('SparseSwitch : %s', ins.get_output()) reg_a = get_variables(vmap, ins.AA) return SwitchExpression(reg_a, ins.BBBBBBBB) # cmpl-float vAA, vBB, vCC ( 8b, 8b, 8b ) def cmplfloat(ins, vmap): logger.debug('CmpglFloat : %s', ins.get_output()) return assign_cmp(ins.AA, ins.BB, ins.CC, 'F', vmap) # cmpg-float vAA, vBB, vCC ( 8b, 8b, 8b ) def cmpgfloat(ins, vmap): logger.debug('CmpgFloat : %s', ins.get_output()) return assign_cmp(ins.AA, ins.BB, ins.CC, 'F', vmap) # cmpl-double vAA, vBB, vCC ( 8b, 8b, 8b ) def cmpldouble(ins, vmap): logger.debug('CmplDouble : %s', ins.get_output()) return assign_cmp(ins.AA, ins.BB, ins.CC, 'D', vmap) # cmpg-double vAA, vBB, vCC ( 8b, 8b, 8b ) def cmpgdouble(ins, vmap): logger.debug('CmpgDouble : %s', ins.get_output()) return assign_cmp(ins.AA, ins.BB, ins.CC, 'D', vmap) # cmp-long vAA, vBB, vCC ( 8b, 8b, 8b ) def cmplong(ins, vmap): logger.debug('CmpLong : %s', ins.get_output()) return assign_cmp(ins.AA, ins.BB, ins.CC, 'J', vmap) # if-eq vA, vB, +CCCC ( 4b, 4b, 16b ) def ifeq(ins, vmap): logger.debug('IfEq : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) return ConditionalExpression(Op.EQUAL, a, b) # if-ne vA, vB, +CCCC ( 4b, 4b, 16b ) def ifne(ins, vmap): logger.debug('IfNe : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) return ConditionalExpression(Op.NEQUAL, a, b) # if-lt vA, vB, +CCCC ( 4b, 4b, 16b ) def iflt(ins, vmap): logger.debug('IfLt : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) return ConditionalExpression(Op.LOWER, a, b) # if-ge vA, vB, +CCCC ( 4b, 4b, 16b ) def ifge(ins, vmap): logger.debug('IfGe : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) return ConditionalExpression(Op.GEQUAL, a, b) # if-gt vA, vB, +CCCC ( 4b, 4b, 16b ) def ifgt(ins, vmap): logger.debug('IfGt : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) return ConditionalExpression(Op.GREATER, a, b) # if-le vA, vB, +CCCC ( 4b, 4b, 16b ) def ifle(ins, vmap): logger.debug('IfLe : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) return ConditionalExpression(Op.LEQUAL, a, b) # if-eqz vAA, +BBBB ( 8b, 16b ) def ifeqz(ins, vmap): logger.debug('IfEqz : %s', ins.get_output()) return ConditionalZExpression(Op.EQUAL, get_variables(vmap, ins.AA)) # if-nez vAA, +BBBB ( 8b, 16b ) def ifnez(ins, vmap): logger.debug('IfNez : %s', ins.get_output()) return ConditionalZExpression(Op.NEQUAL, get_variables(vmap, ins.AA)) # if-ltz vAA, +BBBB ( 8b, 16b ) def ifltz(ins, vmap): logger.debug('IfLtz : %s', ins.get_output()) return ConditionalZExpression(Op.LOWER, get_variables(vmap, ins.AA)) # if-gez vAA, +BBBB ( 8b, 16b ) def ifgez(ins, vmap): logger.debug('IfGez : %s', ins.get_output()) return ConditionalZExpression(Op.GEQUAL, get_variables(vmap, ins.AA)) # if-gtz vAA, +BBBB ( 8b, 16b ) def ifgtz(ins, vmap): logger.debug('IfGtz : %s', ins.get_output()) return ConditionalZExpression(Op.GREATER, get_variables(vmap, ins.AA)) # if-lez vAA, +BBBB (8b, 16b ) def iflez(ins, vmap): logger.debug('IfLez : %s', ins.get_output()) return ConditionalZExpression(Op.LEQUAL, get_variables(vmap, ins.AA)) # TODO: check type for all aget # aget vAA, vBB, vCC ( 8b, 8b, 8b ) def aget(ins, vmap): logger.debug('AGet : %s', ins.get_output()) return load_array_exp(ins.AA, ins.BB, ins.CC, None, vmap) # aget-wide vAA, vBB, vCC ( 8b, 8b, 8b ) def agetwide(ins, vmap): logger.debug('AGetWide : %s', ins.get_output()) return load_array_exp(ins.AA, ins.BB, ins.CC, 'W', vmap) # aget-object vAA, vBB, vCC ( 8b, 8b, 8b ) def agetobject(ins, vmap): logger.debug('AGetObject : %s', ins.get_output()) return load_array_exp(ins.AA, ins.BB, ins.CC, 'O', vmap) # aget-boolean vAA, vBB, vCC ( 8b, 8b, 8b ) def agetboolean(ins, vmap): logger.debug('AGetBoolean : %s', ins.get_output()) return load_array_exp(ins.AA, ins.BB, ins.CC, 'Z', vmap) # aget-byte vAA, vBB, vCC ( 8b, 8b, 8b ) def agetbyte(ins, vmap): logger.debug('AGetByte : %s', ins.get_output()) return load_array_exp(ins.AA, ins.BB, ins.CC, 'B', vmap) # aget-char vAA, vBB, vCC ( 8b, 8b, 8b ) def agetchar(ins, vmap): logger.debug('AGetChar : %s', ins.get_output()) return load_array_exp(ins.AA, ins.BB, ins.CC, 'C', vmap) # aget-short vAA, vBB, vCC ( 8b, 8b, 8b ) def agetshort(ins, vmap): logger.debug('AGetShort : %s', ins.get_output()) return load_array_exp(ins.AA, ins.BB, ins.CC, 'S', vmap) # aput vAA, vBB, vCC def aput(ins, vmap): logger.debug('APut : %s', ins.get_output()) return store_array_inst(ins.AA, ins.BB, ins.CC, None, vmap) # aput-wide vAA, vBB, vCC ( 8b, 8b, 8b ) def aputwide(ins, vmap): logger.debug('APutWide : %s', ins.get_output()) return store_array_inst(ins.AA, ins.BB, ins.CC, 'W', vmap) # aput-object vAA, vBB, vCC ( 8b, 8b, 8b ) def aputobject(ins, vmap): logger.debug('APutObject : %s', ins.get_output()) return store_array_inst(ins.AA, ins.BB, ins.CC, 'O', vmap) # aput-boolean vAA, vBB, vCC ( 8b, 8b, 8b ) def aputboolean(ins, vmap): logger.debug('APutBoolean : %s', ins.get_output()) return store_array_inst(ins.AA, ins.BB, ins.CC, 'Z', vmap) # aput-byte vAA, vBB, vCC ( 8b, 8b, 8b ) def aputbyte(ins, vmap): logger.debug('APutByte : %s', ins.get_output()) return store_array_inst(ins.AA, ins.BB, ins.CC, 'B', vmap) # aput-char vAA, vBB, vCC ( 8b, 8b, 8b ) def aputchar(ins, vmap): logger.debug('APutChar : %s', ins.get_output()) return store_array_inst(ins.AA, ins.BB, ins.CC, 'C', vmap) # aput-short vAA, vBB, vCC ( 8b, 8b, 8b ) def aputshort(ins, vmap): logger.debug('APutShort : %s', ins.get_output()) return store_array_inst(ins.AA, ins.BB, ins.CC, 'S', vmap) # iget vA, vB ( 4b, 4b ) def iget(ins, vmap): logger.debug('IGet : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) exp = InstanceExpression(b, klass, ftype, name) return AssignExpression(a, exp) # iget-wide vA, vB ( 4b, 4b ) def igetwide(ins, vmap): logger.debug('IGetWide : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) exp = InstanceExpression(b, klass, ftype, name) return AssignExpression(a, exp) # iget-object vA, vB ( 4b, 4b ) def igetobject(ins, vmap): logger.debug('IGetObject : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) exp = InstanceExpression(b, klass, ftype, name) return AssignExpression(a, exp) # iget-boolean vA, vB ( 4b, 4b ) def igetboolean(ins, vmap): logger.debug('IGetBoolean : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) exp = InstanceExpression(b, klass, ftype, name) return AssignExpression(a, exp) # iget-byte vA, vB ( 4b, 4b ) def igetbyte(ins, vmap): logger.debug('IGetByte : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) exp = InstanceExpression(b, klass, ftype, name) return AssignExpression(a, exp) # iget-char vA, vB ( 4b, 4b ) def igetchar(ins, vmap): logger.debug('IGetChar : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) exp = InstanceExpression(b, klass, ftype, name) return AssignExpression(a, exp) # iget-short vA, vB ( 4b, 4b ) def igetshort(ins, vmap): logger.debug('IGetShort : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) exp = InstanceExpression(b, klass, ftype, name) return AssignExpression(a, exp) # iput vA, vB ( 4b, 4b ) def iput(ins, vmap): logger.debug('IPut %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) return InstanceInstruction(a, b, klass, atype, name) # iput-wide vA, vB ( 4b, 4b ) def iputwide(ins, vmap): logger.debug('IPutWide %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) return InstanceInstruction(a, b, klass, atype, name) # iput-object vA, vB ( 4b, 4b ) def iputobject(ins, vmap): logger.debug('IPutObject %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) return InstanceInstruction(a, b, klass, atype, name) # iput-boolean vA, vB ( 4b, 4b ) def iputboolean(ins, vmap): logger.debug('IPutBoolean %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) return InstanceInstruction(a, b, klass, atype, name) # iput-byte vA, vB ( 4b, 4b ) def iputbyte(ins, vmap): logger.debug('IPutByte %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) return InstanceInstruction(a, b, klass, atype, name) # iput-char vA, vB ( 4b, 4b ) def iputchar(ins, vmap): logger.debug('IPutChar %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) return InstanceInstruction(a, b, klass, atype, name) # iput-short vA, vB ( 4b, 4b ) def iputshort(ins, vmap): logger.debug('IPutShort %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.CCCC) a, b = get_variables(vmap, ins.A, ins.B) return InstanceInstruction(a, b, klass, atype, name) # sget vAA ( 8b ) def sget(ins, vmap): logger.debug('SGet : %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.BBBB) exp = StaticExpression(klass, atype, name) a = get_variables(vmap, ins.AA) return AssignExpression(a, exp) # sget-wide vAA ( 8b ) def sgetwide(ins, vmap): logger.debug('SGetWide : %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.BBBB) exp = StaticExpression(klass, atype, name) a = get_variables(vmap, ins.AA) return AssignExpression(a, exp) # sget-object vAA ( 8b ) def sgetobject(ins, vmap): logger.debug('SGetObject : %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.BBBB) exp = StaticExpression(klass, atype, name) a = get_variables(vmap, ins.AA) return AssignExpression(a, exp) # sget-boolean vAA ( 8b ) def sgetboolean(ins, vmap): logger.debug('SGetBoolean : %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.BBBB) exp = StaticExpression(klass, atype, name) a = get_variables(vmap, ins.AA) return AssignExpression(a, exp) # sget-byte vAA ( 8b ) def sgetbyte(ins, vmap): logger.debug('SGetByte : %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.BBBB) exp = StaticExpression(klass, atype, name) a = get_variables(vmap, ins.AA) return AssignExpression(a, exp) # sget-char vAA ( 8b ) def sgetchar(ins, vmap): logger.debug('SGetChar : %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.BBBB) exp = StaticExpression(klass, atype, name) a = get_variables(vmap, ins.AA) return AssignExpression(a, exp) # sget-short vAA ( 8b ) def sgetshort(ins, vmap): logger.debug('SGetShort : %s', ins.get_output()) klass, atype, name = ins.cm.get_field(ins.BBBB) exp = StaticExpression(klass, atype, name) a = get_variables(vmap, ins.AA) return AssignExpression(a, exp) # sput vAA ( 8b ) def sput(ins, vmap): logger.debug('SPut : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.BBBB) a = get_variables(vmap, ins.AA) return StaticInstruction(a, klass, ftype, name) # sput-wide vAA ( 8b ) def sputwide(ins, vmap): logger.debug('SPutWide : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.BBBB) a = get_variables(vmap, ins.AA) return StaticInstruction(a, klass, ftype, name) # sput-object vAA ( 8b ) def sputobject(ins, vmap): logger.debug('SPutObject : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.BBBB) a = get_variables(vmap, ins.AA) return StaticInstruction(a, klass, ftype, name) # sput-boolean vAA ( 8b ) def sputboolean(ins, vmap): logger.debug('SPutBoolean : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.BBBB) a = get_variables(vmap, ins.AA) return StaticInstruction(a, klass, ftype, name) # sput-wide vAA ( 8b ) def sputbyte(ins, vmap): logger.debug('SPutByte : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.BBBB) a = get_variables(vmap, ins.AA) return StaticInstruction(a, klass, ftype, name) # sput-char vAA ( 8b ) def sputchar(ins, vmap): logger.debug('SPutChar : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.BBBB) a = get_variables(vmap, ins.AA) return StaticInstruction(a, klass, ftype, name) # sput-short vAA ( 8b ) def sputshort(ins, vmap): logger.debug('SPutShort : %s', ins.get_output()) klass, ftype, name = ins.cm.get_field(ins.BBBB) a = get_variables(vmap, ins.AA) return StaticInstruction(a, klass, ftype, name) def get_args(vmap, param_type, largs): num_param = 0 args = [] if len(param_type) > len(largs): logger.warning('len(param_type) > len(largs) !') return args for type_ in param_type: param = largs[num_param] args.append(param) num_param += util.get_type_size(type_) if len(param_type) == 1: return [get_variables(vmap, *args)] return get_variables(vmap, *args) # invoke-virtual {vD, vE, vF, vG, vA} ( 4b each ) def invokevirtual(ins, vmap, ret): logger.debug('InvokeVirtual : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = [ins.D, ins.E, ins.F, ins.G] args = get_args(vmap, param_type, largs) c = get_variables(vmap, ins.C) returned = None if ret_type == 'V' else ret.new() exp = InvokeInstruction( cls_name, name, c, ret_type, param_type, args, method.get_triple() ) return AssignExpression(returned, exp) # invoke-super {vD, vE, vF, vG, vA} ( 4b each ) def invokesuper(ins, vmap, ret): logger.debug('InvokeSuper : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = [ins.D, ins.E, ins.F, ins.G] args = get_args(vmap, param_type, largs) superclass = BaseClass('super') returned = None if ret_type == 'V' else ret.new() exp = InvokeInstruction( cls_name, name, superclass, ret_type, param_type, args, method.get_triple(), ) return AssignExpression(returned, exp) # invoke-direct {vD, vE, vF, vG, vA} ( 4b each ) def invokedirect(ins, vmap, ret): logger.debug('InvokeDirect : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = [ins.D, ins.E, ins.F, ins.G] args = get_args(vmap, param_type, largs) base = get_variables(vmap, ins.C) if ret_type == 'V': if isinstance(base, ThisParam): returned = None else: returned = base ret.set_to(base) else: returned = ret.new() exp = InvokeDirectInstruction( cls_name, name, base, ret_type, param_type, args, method.get_triple() ) return AssignExpression(returned, exp) # invoke-static {vD, vE, vF, vG, vA} ( 4b each ) def invokestatic(ins, vmap, ret): logger.debug('InvokeStatic : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = [ins.C, ins.D, ins.E, ins.F, ins.G] args = get_args(vmap, param_type, largs) base = BaseClass(cls_name, descriptor=method.get_class_name()) returned = None if ret_type == 'V' else ret.new() exp = InvokeStaticInstruction( cls_name, name, base, ret_type, param_type, args, method.get_triple() ) return AssignExpression(returned, exp) # invoke-interface {vD, vE, vF, vG, vA} ( 4b each ) def invokeinterface(ins, vmap, ret): logger.debug('InvokeInterface : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = [ins.D, ins.E, ins.F, ins.G] args = get_args(vmap, param_type, largs) c = get_variables(vmap, ins.C) returned = None if ret_type == 'V' else ret.new() exp = InvokeInstruction( cls_name, name, c, ret_type, param_type, args, method.get_triple() ) return AssignExpression(returned, exp) # invoke-virtual/range {vCCCC..vNNNN} ( 16b each ) def invokevirtualrange(ins, vmap, ret): logger.debug('InvokeVirtualRange : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = list(range(ins.CCCC, ins.NNNN + 1)) this_arg = get_variables(vmap, largs[0]) args = get_args(vmap, param_type, largs[1:]) returned = None if ret_type == 'V' else ret.new() exp = InvokeRangeInstruction( cls_name, name, ret_type, param_type, [this_arg] + args, method.get_triple(), ) return AssignExpression(returned, exp) # invoke-super/range {vCCCC..vNNNN} ( 16b each ) def invokesuperrange(ins, vmap, ret): logger.debug('InvokeSuperRange : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = list(range(ins.CCCC, ins.NNNN + 1)) args = get_args(vmap, param_type, largs[1:]) base = get_variables(vmap, ins.CCCC) if ret_type != 'V': returned = ret.new() else: returned = base ret.set_to(base) superclass = BaseClass('super') exp = InvokeRangeInstruction( cls_name, name, ret_type, param_type, [superclass] + args, method.get_triple(), ) return AssignExpression(returned, exp) # invoke-direct/range {vCCCC..vNNNN} ( 16b each ) def invokedirectrange(ins, vmap, ret): logger.debug('InvokeDirectRange : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = list(range(ins.CCCC, ins.NNNN + 1)) this_arg = get_variables(vmap, largs[0]) args = get_args(vmap, param_type, largs[1:]) base = get_variables(vmap, ins.CCCC) if ret_type != 'V': returned = ret.new() else: returned = base ret.set_to(base) exp = InvokeRangeInstruction( cls_name, name, ret_type, param_type, [this_arg] + args, method.get_triple(), ) return AssignExpression(returned, exp) # invoke-static/range {vCCCC..vNNNN} ( 16b each ) def invokestaticrange(ins, vmap, ret): logger.debug('InvokeStaticRange : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = list(range(ins.CCCC, ins.NNNN + 1)) args = get_args(vmap, param_type, largs) base = BaseClass(cls_name, descriptor=method.get_class_name()) returned = None if ret_type == 'V' else ret.new() exp = InvokeStaticInstruction( cls_name, name, base, ret_type, param_type, args, method.get_triple() ) return AssignExpression(returned, exp) # invoke-interface/range {vCCCC..vNNNN} ( 16b each ) def invokeinterfacerange(ins, vmap, ret): logger.debug('InvokeInterfaceRange : %s', ins.get_output()) method = ins.cm.get_method_ref(ins.BBBB) cls_name = util.get_type(method.get_class_name()) name = method.get_name() param_type, ret_type = method.get_proto() param_type = util.get_params_type(param_type) largs = list(range(ins.CCCC, ins.NNNN + 1)) base_arg = get_variables(vmap, largs[0]) args = get_args(vmap, param_type, largs[1:]) returned = None if ret_type == 'V' else ret.new() exp = InvokeRangeInstruction( cls_name, name, ret_type, param_type, [base_arg] + args, method.get_triple(), ) return AssignExpression(returned, exp) # neg-int vA, vB ( 4b, 4b ) def negint(ins, vmap): logger.debug('NegInt : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) exp = UnaryExpression(Op.NEG, b, 'I') return AssignExpression(a, exp) # not-int vA, vB ( 4b, 4b ) def notint(ins, vmap): logger.debug('NotInt : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) exp = UnaryExpression(Op.NOT, b, 'I') return AssignExpression(a, exp) # neg-long vA, vB ( 4b, 4b ) def neglong(ins, vmap): logger.debug('NegLong : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) exp = UnaryExpression(Op.NEG, b, 'J') return AssignExpression(a, exp) # not-long vA, vB ( 4b, 4b ) def notlong(ins, vmap): logger.debug('NotLong : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) exp = UnaryExpression(Op.NOT, b, 'J') return AssignExpression(a, exp) # neg-float vA, vB ( 4b, 4b ) def negfloat(ins, vmap): logger.debug('NegFloat : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) exp = UnaryExpression(Op.NEG, b, 'F') return AssignExpression(a, exp) # neg-double vA, vB ( 4b, 4b ) def negdouble(ins, vmap): logger.debug('NegDouble : %s', ins.get_output()) a, b = get_variables(vmap, ins.A, ins.B) exp = UnaryExpression(Op.NEG, b, 'D') return AssignExpression(a, exp) # int-to-long vA, vB ( 4b, 4b ) def inttolong(ins, vmap): logger.debug('IntToLong : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(long)', 'J', vmap) # int-to-float vA, vB ( 4b, 4b ) def inttofloat(ins, vmap): logger.debug('IntToFloat : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(float)', 'F', vmap) # int-to-double vA, vB ( 4b, 4b ) def inttodouble(ins, vmap): logger.debug('IntToDouble : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(double)', 'D', vmap) # long-to-int vA, vB ( 4b, 4b ) def longtoint(ins, vmap): logger.debug('LongToInt : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(int)', 'I', vmap) # long-to-float vA, vB ( 4b, 4b ) def longtofloat(ins, vmap): logger.debug('LongToFloat : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(float)', 'F', vmap) # long-to-double vA, vB ( 4b, 4b ) def longtodouble(ins, vmap): logger.debug('LongToDouble : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(double)', 'D', vmap) # float-to-int vA, vB ( 4b, 4b ) def floattoint(ins, vmap): logger.debug('FloatToInt : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(int)', 'I', vmap) # float-to-long vA, vB ( 4b, 4b ) def floattolong(ins, vmap): logger.debug('FloatToLong : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(long)', 'J', vmap) # float-to-double vA, vB ( 4b, 4b ) def floattodouble(ins, vmap): logger.debug('FloatToDouble : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(double)', 'D', vmap) # double-to-int vA, vB ( 4b, 4b ) def doubletoint(ins, vmap): logger.debug('DoubleToInt : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(int)', 'I', vmap) # double-to-long vA, vB ( 4b, 4b ) def doubletolong(ins, vmap): logger.debug('DoubleToLong : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(long)', 'J', vmap) # double-to-float vA, vB ( 4b, 4b ) def doubletofloat(ins, vmap): logger.debug('DoubleToFloat : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(float)', 'F', vmap) # int-to-byte vA, vB ( 4b, 4b ) def inttobyte(ins, vmap): logger.debug('IntToByte : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(byte)', 'B', vmap) # int-to-char vA, vB ( 4b, 4b ) def inttochar(ins, vmap): logger.debug('IntToChar : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(char)', 'C', vmap) # int-to-short vA, vB ( 4b, 4b ) def inttoshort(ins, vmap): logger.debug('IntToShort : %s', ins.get_output()) return assign_cast_exp(ins.A, ins.B, '(short)', 'S', vmap) # add-int vAA, vBB, vCC ( 8b, 8b, 8b ) def addint(ins, vmap): logger.debug('AddInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.ADD, 'I', vmap) # sub-int vAA, vBB, vCC ( 8b, 8b, 8b ) def subint(ins, vmap): logger.debug('SubInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.SUB, 'I', vmap) # mul-int vAA, vBB, vCC ( 8b, 8b, 8b ) def mulint(ins, vmap): logger.debug('MulInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.MUL, 'I', vmap) # div-int vAA, vBB, vCC ( 8b, 8b, 8b ) def divint(ins, vmap): logger.debug('DivInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.DIV, 'I', vmap) # rem-int vAA, vBB, vCC ( 8b, 8b, 8b ) def remint(ins, vmap): logger.debug('RemInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.MOD, 'I', vmap) # and-int vAA, vBB, vCC ( 8b, 8b, 8b ) def andint(ins, vmap): logger.debug('AndInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.AND, 'I', vmap) # or-int vAA, vBB, vCC ( 8b, 8b, 8b ) def orint(ins, vmap): logger.debug('OrInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.OR, 'I', vmap) # xor-int vAA, vBB, vCC ( 8b, 8b, 8b ) def xorint(ins, vmap): logger.debug('XorInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.XOR, 'I', vmap) # shl-int vAA, vBB, vCC ( 8b, 8b, 8b ) def shlint(ins, vmap): logger.debug('ShlInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.INTSHL, 'I', vmap) # shr-int vAA, vBB, vCC ( 8b, 8b, 8b ) def shrint(ins, vmap): logger.debug('ShrInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.INTSHR, 'I', vmap) # ushr-int vAA, vBB, vCC ( 8b, 8b, 8b ) def ushrint(ins, vmap): logger.debug('UShrInt : %s', ins.get_output()) return assign_binary_exp(ins, Op.INTSHR, 'I', vmap) # add-long vAA, vBB, vCC ( 8b, 8b, 8b ) def addlong(ins, vmap): logger.debug('AddLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.ADD, 'J', vmap) # sub-long vAA, vBB, vCC ( 8b, 8b, 8b ) def sublong(ins, vmap): logger.debug('SubLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.SUB, 'J', vmap) # mul-long vAA, vBB, vCC ( 8b, 8b, 8b ) def mullong(ins, vmap): logger.debug('MulLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.MUL, 'J', vmap) # div-long vAA, vBB, vCC ( 8b, 8b, 8b ) def divlong(ins, vmap): logger.debug('DivLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.DIV, 'J', vmap) # rem-long vAA, vBB, vCC ( 8b, 8b, 8b ) def remlong(ins, vmap): logger.debug('RemLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.MOD, 'J', vmap) # and-long vAA, vBB, vCC ( 8b, 8b, 8b ) def andlong(ins, vmap): logger.debug('AndLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.AND, 'J', vmap) # or-long vAA, vBB, vCC ( 8b, 8b, 8b ) def orlong(ins, vmap): logger.debug('OrLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.OR, 'J', vmap) # xor-long vAA, vBB, vCC ( 8b, 8b, 8b ) def xorlong(ins, vmap): logger.debug('XorLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.XOR, 'J', vmap) # shl-long vAA, vBB, vCC ( 8b, 8b, 8b ) def shllong(ins, vmap): logger.debug('ShlLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.LONGSHL, 'J', vmap) # shr-long vAA, vBB, vCC ( 8b, 8b, 8b ) def shrlong(ins, vmap): logger.debug('ShrLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.LONGSHR, 'J', vmap) # ushr-long vAA, vBB, vCC ( 8b, 8b, 8b ) def ushrlong(ins, vmap): logger.debug('UShrLong : %s', ins.get_output()) return assign_binary_exp(ins, Op.LONGSHR, 'J', vmap) # add-float vAA, vBB, vCC ( 8b, 8b, 8b ) def addfloat(ins, vmap): logger.debug('AddFloat : %s', ins.get_output()) return assign_binary_exp(ins, Op.ADD, 'F', vmap) # sub-float vAA, vBB, vCC ( 8b, 8b, 8b ) def subfloat(ins, vmap): logger.debug('SubFloat : %s', ins.get_output()) return assign_binary_exp(ins, Op.SUB, 'F', vmap) # mul-float vAA, vBB, vCC ( 8b, 8b, 8b ) def mulfloat(ins, vmap): logger.debug('MulFloat : %s', ins.get_output()) return assign_binary_exp(ins, Op.MUL, 'F', vmap) # div-float vAA, vBB, vCC ( 8b, 8b, 8b ) def divfloat(ins, vmap): logger.debug('DivFloat : %s', ins.get_output()) return assign_binary_exp(ins, Op.DIV, 'F', vmap) # rem-float vAA, vBB, vCC ( 8b, 8b, 8b ) def remfloat(ins, vmap): logger.debug('RemFloat : %s', ins.get_output()) return assign_binary_exp(ins, Op.MOD, 'F', vmap) # add-double vAA, vBB, vCC ( 8b, 8b, 8b ) def adddouble(ins, vmap): logger.debug('AddDouble : %s', ins.get_output()) return assign_binary_exp(ins, Op.ADD, 'D', vmap) # sub-double vAA, vBB, vCC ( 8b, 8b, 8b ) def subdouble(ins, vmap): logger.debug('SubDouble : %s', ins.get_output()) return assign_binary_exp(ins, Op.SUB, 'D', vmap) # mul-double vAA, vBB, vCC ( 8b, 8b, 8b ) def muldouble(ins, vmap): logger.debug('MulDouble : %s', ins.get_output()) return assign_binary_exp(ins, Op.MUL, 'D', vmap) # div-double vAA, vBB, vCC ( 8b, 8b, 8b ) def divdouble(ins, vmap): logger.debug('DivDouble : %s', ins.get_output()) return assign_binary_exp(ins, Op.DIV, 'D', vmap) # rem-double vAA, vBB, vCC ( 8b, 8b, 8b ) def remdouble(ins, vmap): logger.debug('RemDouble : %s', ins.get_output()) return assign_binary_exp(ins, Op.MOD, 'D', vmap) # add-int/2addr vA, vB ( 4b, 4b ) def addint2addr(ins, vmap): logger.debug('AddInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.ADD, 'I', vmap) # sub-int/2addr vA, vB ( 4b, 4b ) def subint2addr(ins, vmap): logger.debug('SubInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.SUB, 'I', vmap) # mul-int/2addr vA, vB ( 4b, 4b ) def mulint2addr(ins, vmap): logger.debug('MulInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MUL, 'I', vmap) # div-int/2addr vA, vB ( 4b, 4b ) def divint2addr(ins, vmap): logger.debug('DivInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.DIV, 'I', vmap) # rem-int/2addr vA, vB ( 4b, 4b ) def remint2addr(ins, vmap): logger.debug('RemInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MOD, 'I', vmap) # and-int/2addr vA, vB ( 4b, 4b ) def andint2addr(ins, vmap): logger.debug('AndInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.AND, 'I', vmap) # or-int/2addr vA, vB ( 4b, 4b ) def orint2addr(ins, vmap): logger.debug('OrInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.OR, 'I', vmap) # xor-int/2addr vA, vB ( 4b, 4b ) def xorint2addr(ins, vmap): logger.debug('XorInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.XOR, 'I', vmap) # shl-int/2addr vA, vB ( 4b, 4b ) def shlint2addr(ins, vmap): logger.debug('ShlInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.INTSHL, 'I', vmap) # shr-int/2addr vA, vB ( 4b, 4b ) def shrint2addr(ins, vmap): logger.debug('ShrInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.INTSHR, 'I', vmap) # ushr-int/2addr vA, vB ( 4b, 4b ) def ushrint2addr(ins, vmap): logger.debug('UShrInt2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.INTSHR, 'I', vmap) # add-long/2addr vA, vB ( 4b, 4b ) def addlong2addr(ins, vmap): logger.debug('AddLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.ADD, 'J', vmap) # sub-long/2addr vA, vB ( 4b, 4b ) def sublong2addr(ins, vmap): logger.debug('SubLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.SUB, 'J', vmap) # mul-long/2addr vA, vB ( 4b, 4b ) def mullong2addr(ins, vmap): logger.debug('MulLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MUL, 'J', vmap) # div-long/2addr vA, vB ( 4b, 4b ) def divlong2addr(ins, vmap): logger.debug('DivLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.DIV, 'J', vmap) # rem-long/2addr vA, vB ( 4b, 4b ) def remlong2addr(ins, vmap): logger.debug('RemLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MOD, 'J', vmap) # and-long/2addr vA, vB ( 4b, 4b ) def andlong2addr(ins, vmap): logger.debug('AndLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.AND, 'J', vmap) # or-long/2addr vA, vB ( 4b, 4b ) def orlong2addr(ins, vmap): logger.debug('OrLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.OR, 'J', vmap) # xor-long/2addr vA, vB ( 4b, 4b ) def xorlong2addr(ins, vmap): logger.debug('XorLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.XOR, 'J', vmap) # shl-long/2addr vA, vB ( 4b, 4b ) def shllong2addr(ins, vmap): logger.debug('ShlLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.LONGSHL, 'J', vmap) # shr-long/2addr vA, vB ( 4b, 4b ) def shrlong2addr(ins, vmap): logger.debug('ShrLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.LONGSHR, 'J', vmap) # ushr-long/2addr vA, vB ( 4b, 4b ) def ushrlong2addr(ins, vmap): logger.debug('UShrLong2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.LONGSHR, 'J', vmap) # add-float/2addr vA, vB ( 4b, 4b ) def addfloat2addr(ins, vmap): logger.debug('AddFloat2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.ADD, 'F', vmap) # sub-float/2addr vA, vB ( 4b, 4b ) def subfloat2addr(ins, vmap): logger.debug('SubFloat2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.SUB, 'F', vmap) # mul-float/2addr vA, vB ( 4b, 4b ) def mulfloat2addr(ins, vmap): logger.debug('MulFloat2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MUL, 'F', vmap) # div-float/2addr vA, vB ( 4b, 4b ) def divfloat2addr(ins, vmap): logger.debug('DivFloat2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.DIV, 'F', vmap) # rem-float/2addr vA, vB ( 4b, 4b ) def remfloat2addr(ins, vmap): logger.debug('RemFloat2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MOD, 'F', vmap) # add-double/2addr vA, vB ( 4b, 4b ) def adddouble2addr(ins, vmap): logger.debug('AddDouble2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.ADD, 'D', vmap) # sub-double/2addr vA, vB ( 4b, 4b ) def subdouble2addr(ins, vmap): logger.debug('subDouble2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.SUB, 'D', vmap) # mul-double/2addr vA, vB ( 4b, 4b ) def muldouble2addr(ins, vmap): logger.debug('MulDouble2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MUL, 'D', vmap) # div-double/2addr vA, vB ( 4b, 4b ) def divdouble2addr(ins, vmap): logger.debug('DivDouble2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.DIV, 'D', vmap) # rem-double/2addr vA, vB ( 4b, 4b ) def remdouble2addr(ins, vmap): logger.debug('RemDouble2Addr : %s', ins.get_output()) return assign_binary_2addr_exp(ins, Op.MOD, 'D', vmap) # add-int/lit16 vA, vB, #+CCCC ( 4b, 4b, 16b ) def addintlit16(ins, vmap): logger.debug('AddIntLit16 : %s', ins.get_output()) return assign_lit(Op.ADD, ins.CCCC, ins.A, ins.B, vmap) # rsub-int vA, vB, #+CCCC ( 4b, 4b, 16b ) def rsubint(ins, vmap): logger.debug('RSubInt : %s', ins.get_output()) var_a, var_b = get_variables(vmap, ins.A, ins.B) cst = Constant(ins.CCCC, 'I') return AssignExpression(var_a, BinaryExpressionLit(Op.SUB, cst, var_b)) # mul-int/lit16 vA, vB, #+CCCC ( 4b, 4b, 16b ) def mulintlit16(ins, vmap): logger.debug('MulIntLit16 : %s', ins.get_output()) return assign_lit(Op.MUL, ins.CCCC, ins.A, ins.B, vmap) # div-int/lit16 vA, vB, #+CCCC ( 4b, 4b, 16b ) def divintlit16(ins, vmap): logger.debug('DivIntLit16 : %s', ins.get_output()) return assign_lit(Op.DIV, ins.CCCC, ins.A, ins.B, vmap) # rem-int/lit16 vA, vB, #+CCCC ( 4b, 4b, 16b ) def remintlit16(ins, vmap): logger.debug('RemIntLit16 : %s', ins.get_output()) return assign_lit(Op.MOD, ins.CCCC, ins.A, ins.B, vmap) # and-int/lit16 vA, vB, #+CCCC ( 4b, 4b, 16b ) def andintlit16(ins, vmap): logger.debug('AndIntLit16 : %s', ins.get_output()) return assign_lit(Op.AND, ins.CCCC, ins.A, ins.B, vmap) # or-int/lit16 vA, vB, #+CCCC ( 4b, 4b, 16b ) def orintlit16(ins, vmap): logger.debug('OrIntLit16 : %s', ins.get_output()) return assign_lit(Op.OR, ins.CCCC, ins.A, ins.B, vmap) # xor-int/lit16 vA, vB, #+CCCC ( 4b, 4b, 16b ) def xorintlit16(ins, vmap): logger.debug('XorIntLit16 : %s', ins.get_output()) return assign_lit(Op.XOR, ins.CCCC, ins.A, ins.B, vmap) # add-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def addintlit8(ins, vmap): logger.debug('AddIntLit8 : %s', ins.get_output()) literal, op = [(ins.CC, Op.ADD), (-ins.CC, Op.SUB)][ins.CC < 0] return assign_lit(op, literal, ins.AA, ins.BB, vmap) # rsub-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def rsubintlit8(ins, vmap): logger.debug('RSubIntLit8 : %s', ins.get_output()) var_a, var_b = get_variables(vmap, ins.AA, ins.BB) cst = Constant(ins.CC, 'I') return AssignExpression(var_a, BinaryExpressionLit(Op.SUB, cst, var_b)) # mul-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def mulintlit8(ins, vmap): logger.debug('MulIntLit8 : %s', ins.get_output()) return assign_lit(Op.MUL, ins.CC, ins.AA, ins.BB, vmap) # div-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def divintlit8(ins, vmap): logger.debug('DivIntLit8 : %s', ins.get_output()) return assign_lit(Op.DIV, ins.CC, ins.AA, ins.BB, vmap) # rem-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def remintlit8(ins, vmap): logger.debug('RemIntLit8 : %s', ins.get_output()) return assign_lit(Op.MOD, ins.CC, ins.AA, ins.BB, vmap) # and-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def andintlit8(ins, vmap): logger.debug('AndIntLit8 : %s', ins.get_output()) return assign_lit(Op.AND, ins.CC, ins.AA, ins.BB, vmap) # or-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def orintlit8(ins, vmap): logger.debug('OrIntLit8 : %s', ins.get_output()) return assign_lit(Op.OR, ins.CC, ins.AA, ins.BB, vmap) # xor-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def xorintlit8(ins, vmap): logger.debug('XorIntLit8 : %s', ins.get_output()) return assign_lit(Op.XOR, ins.CC, ins.AA, ins.BB, vmap) # shl-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def shlintlit8(ins, vmap): logger.debug('ShlIntLit8 : %s', ins.get_output()) return assign_lit(Op.INTSHL, ins.CC, ins.AA, ins.BB, vmap) # shr-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def shrintlit8(ins, vmap): logger.debug('ShrIntLit8 : %s', ins.get_output()) return assign_lit(Op.INTSHR, ins.CC, ins.AA, ins.BB, vmap) # ushr-int/lit8 vAA, vBB, #+CC ( 8b, 8b, 8b ) def ushrintlit8(ins, vmap): logger.debug('UShrIntLit8 : %s', ins.get_output()) return assign_lit(Op.INTSHR, ins.CC, ins.AA, ins.BB, vmap) # FIXME: Need to add all opcodes here, check for new unused ones. # FIXME: The instruction set is dalvik version specific INSTRUCTION_SET = [ # 0x00 nop, # nop move, # move movefrom16, # move/from16 move16, # move/16 movewide, # move-wide movewidefrom16, # move-wide/from16 movewide16, # move-wide/16 moveobject, # move-object moveobjectfrom16, # move-object/from16 moveobject16, # move-object/16 moveresult, # move-result moveresultwide, # move-result-wide moveresultobject, # move-result-object moveexception, # move-exception returnvoid, # return-void return_reg, # return # 0x10 returnwide, # return-wide returnobject, # return-object const4, # const/4 const16, # const/16 const, # const consthigh16, # const/high16 constwide16, # const-wide/16 constwide32, # const-wide/32 constwide, # const-wide constwidehigh16, # const-wide/high16 conststring, # const-string conststringjumbo, # const-string/jumbo constclass, # const-class monitorenter, # monitor-enter monitorexit, # monitor-exit checkcast, # check-cast # 0x20 instanceof, # instance-of arraylength, # array-length newinstance, # new-instance newarray, # new-array fillednewarray, # filled-new-array fillednewarrayrange, # filled-new-array/range fillarraydata, # fill-array-data throw, # throw goto, # goto goto16, # goto/16 goto32, # goto/32 packedswitch, # packed-switch sparseswitch, # sparse-switch cmplfloat, # cmpl-float cmpgfloat, # cmpg-float cmpldouble, # cmpl-double # 0x30 cmpgdouble, # cmpg-double cmplong, # cmp-long ifeq, # if-eq ifne, # if-ne iflt, # if-lt ifge, # if-ge ifgt, # if-gt ifle, # if-le ifeqz, # if-eqz ifnez, # if-nez ifltz, # if-ltz ifgez, # if-gez ifgtz, # if-gtz iflez, # if-l nop, # unused nop, # unused # 0x40 nop, # unused nop, # unused nop, # unused nop, # unused aget, # aget agetwide, # aget-wide agetobject, # aget-object agetboolean, # aget-boolean agetbyte, # aget-byte agetchar, # aget-char agetshort, # aget-short aput, # aput aputwide, # aput-wide aputobject, # aput-object aputboolean, # aput-boolean aputbyte, # aput-byte # 0x50 aputchar, # aput-char aputshort, # aput-short iget, # iget igetwide, # iget-wide igetobject, # iget-object igetboolean, # iget-boolean igetbyte, # iget-byte igetchar, # iget-char igetshort, # iget-short iput, # iput iputwide, # iput-wide iputobject, # iput-object iputboolean, # iput-boolean iputbyte, # iput-byte iputchar, # iput-char iputshort, # iput-short # 0x60 sget, # sget sgetwide, # sget-wide sgetobject, # sget-object sgetboolean, # sget-boolean sgetbyte, # sget-byte sgetchar, # sget-char sgetshort, # sget-short sput, # sput sputwide, # sput-wide sputobject, # sput-object sputboolean, # sput-boolean sputbyte, # sput-byte sputchar, # sput-char sputshort, # sput-short invokevirtual, # invoke-virtual invokesuper, # invoke-super # 0x70 invokedirect, # invoke-direct invokestatic, # invoke-static invokeinterface, # invoke-interface nop, # unused invokevirtualrange, # invoke-virtual/range invokesuperrange, # invoke-super/range invokedirectrange, # invoke-direct/range invokestaticrange, # invoke-static/range invokeinterfacerange, # invoke-interface/range nop, # unused nop, # unused negint, # neg-int notint, # not-int neglong, # neg-long notlong, # not-long negfloat, # neg-float # 0x80 negdouble, # neg-double inttolong, # int-to-long inttofloat, # int-to-float inttodouble, # int-to-double longtoint, # long-to-int longtofloat, # long-to-float longtodouble, # long-to-double floattoint, # float-to-int floattolong, # float-to-long floattodouble, # float-to-double doubletoint, # double-to-int doubletolong, # double-to-long doubletofloat, # double-to-float inttobyte, # int-to-byte inttochar, # int-to-char inttoshort, # int-to-short # 0x90 addint, # add-int subint, # sub-int mulint, # mul-int divint, # div-int remint, # rem-int andint, # and-int orint, # or-int xorint, # xor-int shlint, # shl-int shrint, # shr-int ushrint, # ushr-int addlong, # add-long sublong, # sub-long mullong, # mul-long divlong, # div-long remlong, # rem-long # 0xa0 andlong, # and-long orlong, # or-long xorlong, # xor-long shllong, # shl-long shrlong, # shr-long ushrlong, # ushr-long addfloat, # add-float subfloat, # sub-float mulfloat, # mul-float divfloat, # div-float remfloat, # rem-float adddouble, # add-double subdouble, # sub-double muldouble, # mul-double divdouble, # div-double remdouble, # rem-double # 0xb0 addint2addr, # add-int/2addr subint2addr, # sub-int/2addr mulint2addr, # mul-int/2addr divint2addr, # div-int/2addr remint2addr, # rem-int/2addr andint2addr, # and-int/2addr orint2addr, # or-int/2addr xorint2addr, # xor-int/2addr shlint2addr, # shl-int/2addr shrint2addr, # shr-int/2addr ushrint2addr, # ushr-int/2addr addlong2addr, # add-long/2addr sublong2addr, # sub-long/2addr mullong2addr, # mul-long/2addr divlong2addr, # div-long/2addr remlong2addr, # rem-long/2addr # 0xc0 andlong2addr, # and-long/2addr orlong2addr, # or-long/2addr xorlong2addr, # xor-long/2addr shllong2addr, # shl-long/2addr shrlong2addr, # shr-long/2addr ushrlong2addr, # ushr-long/2addr addfloat2addr, # add-float/2addr subfloat2addr, # sub-float/2addr mulfloat2addr, # mul-float/2addr divfloat2addr, # div-float/2addr remfloat2addr, # rem-float/2addr adddouble2addr, # add-double/2addr subdouble2addr, # sub-double/2addr muldouble2addr, # mul-double/2addr divdouble2addr, # div-double/2addr remdouble2addr, # rem-double/2addr # 0xd0 addintlit16, # add-int/lit16 rsubint, # rsub-int mulintlit16, # mul-int/lit16 divintlit16, # div-int/lit16 remintlit16, # rem-int/lit16 andintlit16, # and-int/lit16 orintlit16, # or-int/lit16 xorintlit16, # xor-int/lit16 addintlit8, # add-int/lit8 rsubintlit8, # rsub-int/lit8 mulintlit8, # mul-int/lit8 divintlit8, # div-int/lit8 remintlit8, # rem-int/lit8 andintlit8, # and-int/lit8 orintlit8, # or-int/lit8 xorintlit8, # xor-int/lit8 # 0xe0 shlintlit8, # shl-int/lit8 shrintlit8, # shr-int/lit8 ushrintlit8, # ushr-int/lit8 ] ================================================ FILE: libs/androguard/decompiler/util.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from androguard.decompiler.graph import Graph from loguru import logger TYPE_DESCRIPTOR = { 'V': 'void', 'Z': 'boolean', 'B': 'byte', 'S': 'short', 'C': 'char', 'I': 'int', 'J': 'long', 'F': 'float', 'D': 'double', } ACCESS_FLAGS_CLASSES = { 0x1: 'public', 0x2: 'private', 0x4: 'protected', 0x8: 'static', 0x10: 'final', 0x200: 'interface', 0x400: 'abstract', 0x1000: 'synthetic', 0x2000: 'annotation', 0x4000: 'enum', } ACCESS_FLAGS_FIELDS = { 0x1: 'public', 0x2: 'private', 0x4: 'protected', 0x8: 'static', 0x10: 'final', 0x40: 'volatile', 0x80: 'transient', 0x1000: 'synthetic', 0x4000: 'enum', } ACCESS_FLAGS_METHODS = { 0x1: 'public', 0x2: 'private', 0x4: 'protected', 0x8: 'static', 0x10: 'final', 0x20: 'synchronized', 0x40: 'bridge', 0x80: 'varargs', 0x100: 'native', 0x400: 'abstract', 0x800: 'strictfp', 0x1000: 'synthetic', 0x10000: 'constructor', 0x20000: 'declared_synchronized', } ACCESS_ORDER = [ 0x1, 0x4, 0x2, 0x400, 0x8, 0x10, 0x80, 0x40, 0x20, 0x100, 0x800, 0x200, 0x1000, 0x2000, 0x4000, 0x10000, 0x20000, ] TYPE_LEN = { 'J': 2, 'D': 2, } def get_access_class(access: int) -> list[str]: sorted_access = [i for i in ACCESS_ORDER if i & access] return [ ACCESS_FLAGS_CLASSES.get(flag, 'unkn_%d' % flag) for flag in sorted_access ] def get_access_method(access: int) -> list[str]: sorted_access = [i for i in ACCESS_ORDER if i & access] return [ ACCESS_FLAGS_METHODS.get(flag, 'unkn_%d' % flag) for flag in sorted_access ] def get_access_field(access: int) -> list[str]: sorted_access = [i for i in ACCESS_ORDER if i & access] return [ ACCESS_FLAGS_FIELDS.get(flag, 'unkn_%d' % flag) for flag in sorted_access ] def build_path(graph, node1, node2, path=None): """ Build the path from node1 to node2. The path is composed of all the nodes between node1 and node2, node1 excluded. Although if there is a loop starting from node1, it will be included in the path. """ if path is None: path = [] if node1 is node2: return path path.append(node2) for pred in graph.all_preds(node2): if pred in path: continue build_path(graph, node1, pred, path) return path def common_dom(idom, cur, pred): if not (cur and pred): return cur or pred while cur is not pred: while cur.num < pred.num: pred = idom[pred] while cur.num > pred.num: cur = idom[cur] return cur def merge_inner(clsdict): """ Merge the inner class(es) of a class: e.g class A { ... } class A$foo{ ... } class A$bar{ ... } ==> class A { class foo{...} class bar{...} ... } """ samelist = False done = {} while not samelist: samelist = True classlist = list(clsdict.keys()) for classname in classlist: parts_name = classname.rsplit('$', 1) if len(parts_name) > 1: mainclass, innerclass = parts_name innerclass = innerclass[:-1] # remove ';' of the name mainclass += ';' if mainclass in clsdict: clsdict[mainclass].add_subclass( innerclass, clsdict[classname] ) clsdict[classname].name = innerclass done[classname] = clsdict[classname] del clsdict[classname] samelist = False elif mainclass in done: cls = done[mainclass] cls.add_subclass(innerclass, clsdict[classname]) clsdict[classname].name = innerclass done[classname] = done[mainclass] del clsdict[classname] samelist = False def get_type_size(param): """ Return the number of register needed by the type @param """ return TYPE_LEN.get(param, 1) def get_type(atype: str, size: int = None) -> str: """ Retrieve the java type of a descriptor (e.g : I) """ res = TYPE_DESCRIPTOR.get(atype) if res is None: if atype[0] == 'L': if atype.startswith('Ljava/lang'): res = atype[1:-1].lstrip('java/lang/').replace('/', '.') else: res = atype[1:-1].replace('/', '.') elif atype[0] == '[': if size is None: res = '%s[]' % get_type(atype[1:]) else: res = '{}[{}]'.format(get_type(atype[1:]), size) else: res = atype logger.debug('Unknown descriptor: "%s".', atype) return res def get_params_type(descriptor: str) -> list[str]: """ Return the parameters type of a descriptor (e.g (IC)V) """ params = descriptor.split(')')[0][1:].split() if params: return [param for param in params] return [] def create_png( cls_name: str, meth_name: str, graph: Graph, dir_name: str = 'graphs2' ) -> None: """ Creates a PNG from a given :class:`~androguard.decompiler.graph.Graph`. :param str cls_name: name of the class :param str meth_name: name of the method :param androguard.decompiler.graph.Graph graph: :param str dir_name: output directory """ m_name = ''.join(x for x in meth_name if x.isalnum()) name = ''.join((cls_name.split('/')[-1][:-1], '#', m_name)) graph.draw(name, dir_name) ================================================ FILE: libs/androguard/decompiler/writer.py ================================================ # This file is part of Androguard. # # Copyright (c) 2012 Geoffroy Gueguen # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS-IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from struct import unpack from loguru import logger from androguard.core import mutf8 from androguard.decompiler.instruction import ( BaseClass, BinaryCompExpression, BinaryExpression, Constant, InstanceExpression, NewInstance, ThisParam, Variable, ) from androguard.decompiler.opcode_ins import Op from androguard.decompiler.util import get_type class Writer: """ Transforms a method into Java code. """ def __init__(self, graph, method): self.graph = graph self.method = method self.visited_nodes = set() self.ind = 4 self.buffer = [] self.buffer2 = [] self.loop_follow = [None] self.if_follow = [None] self.switch_follow = [None] self.latch_node = [None] self.try_follow = [None] self.next_case = None self.skip = False self.need_break = True def __str__(self): return ''.join([str(i) for i in self.buffer]) def str_ext(self) -> list[tuple]: return self.buffer2 def inc_ind(self, i=1): self.ind += 4 * i def dec_ind(self, i=1): self.ind -= 4 * i def space(self): if self.skip: self.skip = False return '' return ' ' * self.ind def write_ind(self): if self.skip: self.skip = False else: self.write(self.space()) self.write_ext(('INDENTATION', self.space())) def write(self, s, data=None): self.buffer.append(s) # old method, still used # TODO: clean? if data: self.buffer2.append((data, s)) # at minimum, we have t as a tuple of the form: # (TYPE_STR, MY_STR) such as ('THIS', 'this') # where the 2nd field is the actual generated source code # We can have more fields, for example: # ('METHOD', 'sendToServer', 'this -> sendToServer', ) def write_ext(self, t): if not isinstance(t, tuple): raise "Error in write_ext: %s not a tuple" % str(t) self.buffer2.append(t) def end_ins(self): self.write(';\n') self.write_ext(('END_INSTRUCTION', ';\n')) def write_ind_visit_end(self, lhs, s, rhs=None, data=None): self.write_ind() lhs.visit(self) self.write(s) self.write_ext(('TODO_4343', s, data)) if rhs is not None: rhs.visit(self) self.end_ins() # TODO: prefer this class as write_ind_visit_end that should be deprecated # at the end def write_ind_visit_end_ext( self, lhs, before, s, after, rhs=None, data=None, subsection='UNKNOWN_SUBSECTION', ): self.write_ind() lhs.visit(self) self.write(before + s + after) self.write_ext(('BEFORE', before)) self.write_ext((subsection, s, data)) self.write_ext(('AFTER', after)) if rhs is not None: rhs.visit(self) self.end_ins() def write_inplace_if_possible(self, lhs, rhs): if isinstance(rhs, BinaryExpression) and lhs == rhs.var_map[rhs.arg1]: exp_rhs = rhs.var_map[rhs.arg2] if ( rhs.op in '+-' and isinstance(exp_rhs, Constant) and exp_rhs.get_int_value() == 1 ): return self.write_ind_visit_end(lhs, rhs.op * 2, data=rhs) return self.write_ind_visit_end( lhs, ' %s= ' % rhs.op, exp_rhs, data=rhs ) return self.write_ind_visit_end(lhs, ' = ', rhs, data=rhs) def visit_ins(self, ins): ins.visit(self) def write_method(self): acc = [] access = self.method.access self.constructor = False for modifier in access: if modifier == 'constructor': self.constructor = True continue acc.append(modifier) self.write('\n%s' % self.space()) self.write_ext(('NEWLINE', '\n%s' % (self.space()))) if acc: self.write('%s ' % ' '.join(acc)) self.write_ext(('PROTOTYPE_ACCESS', '%s ' % ' '.join(acc))) if self.constructor: name = get_type(self.method.cls_name).split('.')[-1] self.write(name) self.write_ext(('NAME_METHOD_PROTOTYPE', '%s' % name, self.method)) else: self.write( '{} {}'.format(get_type(self.method.type), self.method.name) ) self.write_ext( ('PROTOTYPE_TYPE', '%s' % get_type(self.method.type)) ) self.write_ext(('SPACE', ' ')) self.write_ext( ('NAME_METHOD_PROTOTYPE', '%s' % self.method.name, self.method) ) params = self.method.lparams if 'static' not in access: params = params[1:] proto = '' self.write_ext(('PARENTHESIS_START', '(')) if self.method.params_type: proto = ', '.join( [ '{} p{}'.format(get_type(p_type), param) for p_type, param in zip(self.method.params_type, params) ] ) first = True for p_type, param in zip(self.method.params_type, params): if not first: self.write_ext(('COMMA', ', ')) else: first = False self.write_ext(('ARG_TYPE', '%s' % get_type(p_type))) self.write_ext(('SPACE', ' ')) self.write_ext( ('NAME_ARG', 'p%s' % param, p_type, self.method) ) self.write_ext(('PARENTHESIS_END', ')')) self.write('(%s)' % proto) if self.graph is None: self.write(';\n') self.write_ext(('METHOD_END_NO_CONTENT', ';\n')) return self.write('\n%s{\n' % self.space()) self.write_ext(('METHOD_START', '\n%s{\n' % self.space())) self.inc_ind() self.visit_node(self.graph.entry) self.dec_ind() self.write('%s}\n' % self.space()) self.write_ext(('METHOD_END', '%s}\n' % self.space())) def visit_node(self, node): if node in ( self.if_follow[-1], self.switch_follow[-1], self.loop_follow[-1], self.latch_node[-1], self.try_follow[-1], ): return if not node.type.is_return and node in self.visited_nodes: return self.visited_nodes.add(node) for var in node.var_to_declare: var.visit_decl(self) var.declared = True node.visit(self) def visit_loop_node(self, loop): follow = loop.follow['loop'] if follow is None and not loop.looptype.is_endless: logger.error('Loop has no follow !') if loop.looptype.is_pretest: if loop.true is follow: loop.neg() loop.true, loop.false = loop.false, loop.true self.write('%swhile (' % self.space()) self.write_ext(('WHILE', '%swhile (' % self.space())) loop.visit_cond(self) self.write(') {\n') self.write_ext(('WHILE_START', ') {\n')) elif loop.looptype.is_posttest: self.write('%sdo {\n' % self.space()) self.write_ext(('DO', '%sdo {\n' % self.space())) self.latch_node.append(loop.latch) elif loop.looptype.is_endless: self.write('%swhile(true) {\n' % self.space()) self.write_ext(('WHILE_TRUE', '%swhile(true) {\n' % self.space())) self.inc_ind() self.loop_follow.append(follow) if loop.looptype.is_pretest: self.visit_node(loop.true) else: self.visit_node(loop.cond) self.loop_follow.pop() self.dec_ind() if loop.looptype.is_pretest: self.write('%s}\n' % self.space()) self.write_ext(('END_PRETEST', '%s}\n' % self.space())) elif loop.looptype.is_posttest: self.latch_node.pop() self.write('%s} while(' % self.space()) self.write_ext(('WHILE_POSTTEST', '%s} while(' % self.space())) loop.latch.visit_cond(self) self.write(');\n') self.write_ext(('POSTTEST_END', ');\n')) else: self.inc_ind() self.visit_node(loop.latch) self.dec_ind() self.write('%s}\n' % self.space()) self.write_ext(('END_LOOP', '%s}\n' % self.space())) if follow is not None: self.visit_node(follow) def visit_cond_node(self, cond): follow = cond.follow['if'] if cond.false is cond.true: self.write( '%s// Both branches of the condition point to the same' ' code.\n' % self.space() ) self.write_ext( ( 'COMMENT_ERROR_MSG', '%s// Both branches of the condition point to the same' ' code.\n' % self.space(), ) ) self.write('%s// if (' % self.space()) self.write_ext(('COMMENT_IF', '%s// if (' % self.space())) cond.visit_cond(self) self.write(') {\n') self.write_ext(('COMMENT_COND_END', ') {\n')) self.inc_ind() self.visit_node(cond.true) self.dec_ind() self.write('%s// }\n' % self.space(), data="COMMENT_IF_COND_END") return if cond.false is self.loop_follow[-1]: cond.neg() cond.true, cond.false = cond.false, cond.true if self.loop_follow[-1] in (cond.true, cond.false): self.write('%sif (' % self.space(), data="IF_2") cond.visit_cond(self) self.write(') {\n', data="IF_TRUE_2") self.inc_ind() self.write('%sbreak;\n' % self.space(), data="BREAK") self.dec_ind() self.write('%s}\n' % self.space(), data="IF_END_2") self.visit_node(cond.false) elif follow is not None: if ( cond.true in (follow, self.next_case) or cond.num > cond.true.num ): # or cond.true.num > cond.false.num: cond.neg() cond.true, cond.false = cond.false, cond.true self.if_follow.append(follow) if cond.true: # in self.visited_nodes: self.write('%sif (' % self.space(), data="IF") cond.visit_cond(self) self.write(') {\n', data="IF_TRUE") self.inc_ind() self.visit_node(cond.true) self.dec_ind() is_else = not (follow in (cond.true, cond.false)) if is_else and not cond.false in self.visited_nodes: self.write('%s} else {\n' % self.space(), data="IF_FALSE") self.inc_ind() self.visit_node(cond.false) self.dec_ind() self.if_follow.pop() self.write('%s}\n' % self.space(), data="IF_END") self.visit_node(follow) else: self.write('%sif (' % self.space(), data="IF_3") cond.visit_cond(self) self.write(') {\n', data="IF_COND_3") self.inc_ind() self.visit_node(cond.true) self.dec_ind() self.write('%s} else {\n' % self.space(), data="ELSE_3") self.inc_ind() self.visit_node(cond.false) self.dec_ind() self.write('%s}\n' % self.space(), data="IF_END_3") def visit_short_circuit_condition(self, nnot, aand, cond1, cond2): if nnot: cond1.neg() self.write('(', data="TODO24") cond1.visit_cond(self) self.write(') %s (' % ['||', '&&'][aand], data="TODO25") cond2.visit_cond(self) self.write(')', data="TODO26") def visit_switch_node(self, switch): lins = switch.get_ins() for ins in lins[:-1]: self.visit_ins(ins) switch_ins = switch.get_ins()[-1] self.write('%sswitch (' % self.space(), data="SWITCH") self.visit_ins(switch_ins) self.write(') {\n', data="SWITCH_END") follow = switch.follow['switch'] cases = switch.cases self.switch_follow.append(follow) default = switch.default for i, node in enumerate(cases): if node in self.visited_nodes: continue self.inc_ind() for case in switch.node_to_case[node]: self.write( '%scase %d:\n' % (self.space(), case), data="CASE_XX" ) if i + 1 < len(cases): self.next_case = cases[i + 1] else: self.next_case = None if node is default: self.write('%sdefault:\n' % self.space(), data="CASE_DEFAULT") default = None self.inc_ind() self.visit_node(node) if self.need_break: self.write('%sbreak;\n' % self.space(), data="CASE_BREAK") else: self.need_break = True self.dec_ind(2) if default not in (None, follow): self.inc_ind() self.write('%sdefault:\n' % self.space(), data="CASE_DEFAULT_2") self.inc_ind() self.visit_node(default) self.dec_ind(2) self.write('%s}\n' % self.space(), data="CASE_END") self.switch_follow.pop() self.visit_node(follow) def visit_statement_node(self, stmt): sucs = self.graph.sucs(stmt) for ins in stmt.get_ins(): self.visit_ins(ins) if len(sucs) == 1: if sucs[0] is self.loop_follow[-1]: self.write('%sbreak;\n' % self.space(), data="BREAK_2") elif sucs[0] is self.next_case: self.need_break = False else: self.visit_node(sucs[0]) def visit_try_node(self, try_node): self.write('%stry {\n' % self.space(), data="TRY_START") self.inc_ind() self.try_follow.append(try_node.follow) self.visit_node(try_node.try_start) self.dec_ind() self.write('%s}' % self.space(), data="TRY_START_END") for catch in try_node.catch: self.visit_node(catch) self.write('\n', data="NEWLINE_END_TRY") self.visit_node(self.try_follow.pop()) def visit_catch_node(self, catch_node): self.write(' catch (', data="CATCH") catch_node.visit_exception(self) self.write(') {\n', data="CATCH_START") self.inc_ind() self.visit_node(catch_node.catch_start) self.dec_ind() self.write('%s}' % self.space(), data="CATCH_END") def visit_return_node(self, ret): self.need_break = False for ins in ret.get_ins(): self.visit_ins(ins) def visit_throw_node(self, throw): for ins in throw.get_ins(): self.visit_ins(ins) def visit_decl(self, var): if not var.declared: var_type = var.get_type() or 'unknownType' self.write( '{}{} v{}'.format(self.space(), get_type(var_type), var.name), data="DECLARATION", ) self.end_ins() def visit_constant(self, cst): if isinstance(cst, str): return self.write(string(cst), data="CONSTANT_STRING") self.write( '%r' % cst, data="CONSTANT_INTEGER" ) # INTEGER or also others? def visit_base_class(self, cls, data=None): self.write(cls) self.write_ext(('NAME_BASE_CLASS', cls, data)) def visit_variable(self, var): var_type = var.get_type() or 'unknownType' if not var.declared: self.write('%s ' % get_type(var_type)) self.write_ext( ('VARIABLE_TYPE', '%s' % get_type(var_type), var_type) ) self.write_ext(('SPACE', ' ')) var.declared = True self.write('v%s' % var.name) self.write_ext(('NAME_VARIABLE', 'v%s' % var.name, var, var_type)) def visit_param(self, param, data=None): self.write('p%s' % param) self.write_ext(('NAME_PARAM', 'p%s' % param, data)) def visit_this(self): self.write('this', data="THIS") def visit_super(self): self.write('super') def visit_assign(self, lhs, rhs): if lhs is not None: return self.write_inplace_if_possible(lhs, rhs) self.write_ind() rhs.visit(self) if not self.skip: self.end_ins() def visit_move_result(self, lhs, rhs): self.write_ind_visit_end(lhs, ' = ', rhs) def visit_move(self, lhs, rhs): if lhs is not rhs: self.write_inplace_if_possible(lhs, rhs) def visit_astore(self, array, index, rhs, data=None): self.write_ind() array.visit(self) self.write('[', data=("ASTORE_START", data)) index.visit(self) self.write('] = ', data="ASTORE_END") rhs.visit(self) self.end_ins() def visit_put_static(self, cls, name, rhs): self.write_ind() self.write('{}.{} = '.format(cls, name), data="STATIC_PUT") rhs.visit(self) self.end_ins() def visit_put_instance(self, lhs, name, rhs, data=None): self.write_ind_visit_end_ext( lhs, '.', '%s' % name, ' = ', rhs, data=data, subsection='NAME_CLASS_ASSIGNMENT', ) def visit_new(self, atype, data=None): self.write('new %s' % get_type(atype)) self.write_ext(('NEW', 'new ')) self.write_ext( ('NAME_CLASS_NEW', '%s' % get_type(atype), data.type, data) ) def visit_invoke(self, name, base, ptype, rtype, args, invokeInstr): if isinstance(base, ThisParam): if name == '': if self.constructor and len(args) == 0: self.skip = True return if ( invokeInstr and base.type[1:-1].replace('/', '.') != invokeInstr.cls ): base.super = True base.visit(self) if name != '': if isinstance(base, BaseClass): call_name = "{} -> {}".format(base.cls, name) elif isinstance(base, InstanceExpression): call_name = "{} -> {}".format(base.ftype, name) elif hasattr(base, "base") and hasattr(base, "var_map"): base2base = base while True: base2base = base2base.var_map[base2base.base] if isinstance(base2base, NewInstance): call_name = "{} -> {}".format(base2base.type, name) break elif hasattr(base2base, "base") and hasattr( base2base, "var_map" ): continue else: call_name = "UNKNOWN_TODO" break elif isinstance(base, ThisParam): call_name = "this -> %s" % name elif isinstance(base, Variable): call_name = "{} -> {}".format(base.type, name) else: call_name = "UNKNOWN_TODO2" self.write('.%s' % name) self.write_ext(('INVOKE', '.')) self.write_ext( ( 'NAME_METHOD_INVOKE', '%s' % name, call_name, ptype, rtype, base, invokeInstr, ) ) self.write('(', data="PARAM_START") comma = False for arg in args: if comma: self.write(', ', data="PARAM_SEPARATOR") comma = True arg.visit(self) self.write(')', data="PARAM_END") def visit_return_void(self): self.write_ind() self.write('return', data="RETURN") self.end_ins() def visit_return(self, arg): self.write_ind() self.write('return ', data="RETURN") arg.visit(self) self.end_ins() def visit_nop(self): pass def visit_switch(self, arg): arg.visit(self) def visit_check_cast(self, arg, atype): self.write('((%s) ' % atype, data="CHECKCAST") arg.visit(self) self.write(')') def visit_aload(self, array, index): array.visit(self) self.write('[', data="ALOAD_START") index.visit(self) self.write(']', data="ALOAD_END") def visit_alength(self, array): array.visit(self) self.write('.length', data="ARRAY_LENGTH") def visit_new_array(self, atype, size): self.write('new %s[' % get_type(atype[1:]), data="NEW_ARRAY") size.visit(self) self.write(']', data="NEW_ARRAY_END") def visit_filled_new_array(self, atype, size, args): self.write('new %s {' % get_type(atype), data="NEW_ARRAY_FILLED") for idx, arg in enumerate(args): arg.visit(self) if idx + 1 < len(args): self.write(', ', data="COMMA") self.write('})', data="NEW_ARRAY_FILLED_END") def visit_fill_array(self, array, value): self.write_ind() array.visit(self) self.write(' = {', data="ARRAY_FILLED") data = value.get_data() tab = [] elem_size = value.element_width # Set type depending on size of elements data_types = {1: 'b', 2: 'h', 4: 'i', 8: 'd'} if elem_size in data_types: elem_id = data_types[elem_size] else: # FIXME for other types we just assume bytes... logger.warning( "Unknown element size {} for array. Assume bytes.".format( elem_size ) ) elem_id = 'b' elem_size = 1 for i in range(0, value.size * elem_size, elem_size): tab.append('%s' % unpack(elem_id, data[i : i + elem_size])[0]) self.write(', '.join(tab), data="COMMA") self.write('}', data="ARRAY_FILLED_END") self.end_ins() def visit_move_exception(self, var, data=None): var.declared = True var_type = var.get_type() or 'unknownType' self.write('{} v{}'.format(get_type(var_type), var.name)) self.write_ext( ('EXCEPTION_TYPE', '%s' % get_type(var_type), data.type) ) self.write_ext(('SPACE', ' ')) self.write_ext( ('NAME_CLASS_EXCEPTION', 'v%s' % var.value(), data.type, data) ) def visit_monitor_enter(self, ref): self.write_ind() self.write('synchronized(', data="SYNCHRONIZED") ref.visit(self) self.write(') {\n', data="SYNCHRONIZED_END") self.inc_ind() def visit_monitor_exit(self, ref): self.dec_ind() self.write_ind() self.write('}\n', data="MONITOR_EXIT") def visit_throw(self, ref): self.write_ind() self.write('throw ', data="THROW") ref.visit(self) self.end_ins() def visit_binary_expression(self, op, arg1, arg2): self.write('(', data="BINARY_EXPRESSION_START") arg1.visit(self) self.write(' %s ' % op, data="TODO58") arg2.visit(self) self.write(')', data="BINARY_EXPRESSION_END") def visit_unary_expression(self, op, arg): self.write('(%s ' % op, data="UNARY_EXPRESSION_START") arg.visit(self) self.write(')', data="UNARY_EXPRESSION_END") def visit_cast(self, op, arg): self.write('(%s ' % op, data="CAST_START") arg.visit(self) self.write(')', data="CAST_END") def visit_cond_expression(self, op, arg1, arg2): arg1.visit(self) self.write(' %s ' % op, data="COND_EXPRESSION") arg2.visit(self) def visit_condz_expression(self, op, arg): if isinstance(arg, BinaryCompExpression): arg.op = op return arg.visit(self) atype = str(arg.get_type()) if atype == 'Z': if op == Op.EQUAL: self.write('!', data="NEGATE") arg.visit(self) else: arg.visit(self) try: atype = atype.string except AttributeError: pass if atype in 'VBSCIJFD': self.write(' %s 0' % op, data="TODO64") else: self.write(' %s null' % op, data="TODO65") def visit_get_instance(self, arg, name, data=None): arg.visit(self) self.write('.%s' % name) self.write_ext(('GET_INSTANCE', '.')) self.write_ext(('NAME_CLASS_INSTANCE', '%s' % name, data)) def visit_get_static(self, cls, name): self.write('{}.{}'.format(cls, name), data="GET_STATIC") def string(s): """ Convert a string to a escaped ASCII representation including quotation marks :param s: a string :return: ASCII escaped string """ ret = ['"'] for c in s: if ' ' <= c < '\x7f': if c == "'" or c == '"' or c == '\\': ret.append('\\') ret.append(c) continue elif c <= '\x7f': if c in ('\r', '\n', '\t'): # unicode-escape produces bytes ret.append(c.encode('unicode-escape').decode("ascii")) continue i = ord(c) ret.append('\\u') ret.append('%x' % (i >> 12)) ret.append('%x' % ((i >> 8) & 0x0F)) ret.append('%x' % ((i >> 4) & 0x0F)) ret.append('%x' % (i & 0x0F)) ret.append('"') return ''.join(ret) ================================================ FILE: libs/androguard/misc.py ================================================ # Allows type hinting of types not-yet-declared # in Python >= 3.7 # see https://peps.python.org/pep-0563/ from __future__ import annotations import hashlib import os import re from typing import Union from loguru import logger from androguard.core import androconf, apk, dex from androguard.core.analysis.analysis import Analysis from androguard.decompiler import decompiler from androguard.session import Session def get_default_session() -> Session: """ Return the default [Session][androguard.session.Session] from the configuration or create a new one, if the session in the configuration is `None`. :returns: `androguard.session.Session` object """ if androconf.CONF["SESSION"] is None: androconf.CONF["SESSION"] = Session() return androconf.CONF["SESSION"] def AnalyzeAPK( _file: Union[str, bytes], session: Union[Session, None] = None, raw: bool = False, ) -> tuple[apk.APK, list[dex.DEX], Analysis]: """ Analyze an android application and setup all stuff for a more quickly analysis! If session is `None`, no session is used at all. This is the default behaviour. If you like to continue your work later, it might be a good idea to use a session. A default session can be created by using [get_default_session][androguard.misc.get_default_session]. :param _file: the filename of the android application or a buffer which represents the application :param session: A session (default: None) :param raw: boolean if raw bytes are supplied instead of a filename :returns: the `androguard.core.apk.APK`, list of `androguard.core.dex.DEX`, and `androguard.core.analysis.analysis.Analysis` objects """ logger.debug("AnalyzeAPK") if session: logger.debug("Using existing session {}".format(session)) if raw: data = _file filename = hashlib.md5(_file).hexdigest() else: with open(_file, "rb") as fd: data = fd.read() filename = _file digest = session.add(filename, data) return session.get_objects_apk(filename, digest) else: logger.debug("Analysing without session") a = apk.APK(_file, raw=raw) # FIXME: probably it is not necessary to keep all DEXs, as # they are already part of Analysis. But when using sessions, it works # this way... d = [] dx = Analysis() for dex_bytes in a.get_all_dex(): df = dex.DEX(dex_bytes, using_api=a.get_target_sdk_version()) dx.add(df) d.append(df) df.set_decompiler(decompiler.DecompilerDAD(df, dx)) dx.create_xref() return a, d, dx def AnalyzeDex( filename: str, session: Session = None, raw: bool = False ) -> tuple[str, dex.DEX, Analysis]: """ Analyze an android dex file and setup all stuff for a more quickly analysis ! :param filename: the filename of the android dex file or a buffer which represents the dex file :param session: A session (Default `None`) :param raw: If set, `filenam`` will be used as the odex's data (bytes). Defaults to `False` :returns: a tuple of (sha256hash, `DEX`, `Analysis`) """ logger.debug("AnalyzeDex") if not session: session = get_default_session() if raw: data = filename else: with open(filename, "rb") as fd: data = fd.read() return session.addDEX(filename, data) # def AnalyzeODex(filename: str, session:Session=None, raw:bool=False): # """ # Analyze an android odex file and setup all stuff for a more quickly analysis ! # :param filename: the filename of the android dex file or a buffer which represents the dex file # :type filename: string # :param session: The Androguard Session to add the ODex to (default: None) # :param raw: If set, ``filename`` will be used as the odex's data (bytes). Defaults to ``False`` # :rtype: return a tuple of (sha256hash, :class:`DalvikOdexVMFormat`, :class:`Analysis`) # """ # logger.debug("AnalyzeODex") # if not session: # session = get_default_session() # if raw: # data = filename # else: # with open(filename, "rb") as fd: # data = fd.read() # return session.addDEY(filename, data) # <- this function is missing def clean_file_name( filename: str, unique: bool = True, replace: str = "_", force_nt: bool = False, ) -> str: """ Return a filename version, which has no characters in it which are forbidden. On Windows these are for example <, /, ?, ... The intention of this function is to allow distribution of files to different OSes. :param filename: string to clean :param unique: check if the filename is already taken and append an integer to be unique (default: `True`) :param replace: replacement character. (default: '_') :param force_nt: Force shortening of paths like on NT systems (default: `False`) :returns: clean string """ if re.match(r'[<>:"/\\|?* .\x00-\x1f]', replace): raise ValueError("replacement character is not allowed!") path, fname = os.path.split(filename) # For Windows see: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx # Other operating systems seems to be more tolerant... # Not allowed filenames, attach replace character if necessary if re.match(r'(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])', fname): fname += replace # reserved characters fname = re.sub(r'[<>:"/\\|?*\x00-\x1f]', replace, fname) # Do not end with dot or space fname = re.sub(r'[ .]$', replace, fname) # It is a sensible default, to assume that there is a hard 255 char limit per filename # See https://en.wikipedia.org/wiki/Comparison_of_file_systems # If you are using a filesystem with less, you have other problems ;) # # We simply make a hard cut after 255 chars. To leave some space for an extension, which might get added later, # There is room for improvement here, so feel free to implement a better method! PATH_MAX_LENGTH = 230 # give extra space for other stuff... # Check filename length limit, usually a problem on older Windows versions if len(fname) > PATH_MAX_LENGTH: if "." in fname: f, ext = fname.rsplit(".", 1) fname = "{}.{}".format(f[: PATH_MAX_LENGTH - (len(ext) + 1)], ext) else: fname = fname[:PATH_MAX_LENGTH] if force_nt or os.name == 'nt': # Special behaviour... On Windows, there is also a problem with the maximum path length in explorer.exe # maximum length is limited to 260 chars, so use 250 to have room for other stuff if len(os.path.abspath(os.path.join(path, fname))) > 250: fname = fname[: 250 - (len(os.path.abspath(path)) + 1)] if unique: counter = 0 origname = fname while os.path.isfile(os.path.join(path, fname)): if "." in fname: # assume extension f, ext = origname.rsplit(".", 1) fname = "{}_{}.{}".format(f, counter, ext) else: fname = "{}_{}".format(origname, counter) counter += 1 return os.path.join(path, fname) ================================================ FILE: libs/androguard/pentest/__init__.py ================================================ import glob import hashlib import json import os import queue import threading import frida from . import adb md5 = lambda bs: hashlib.md5(bs).hexdigest() from loguru import logger class Message: pass class MessageEvent(Message): def __init__( self, index, function_callee, function_call, params, ret_value ): self.index = index self.from_method = function_call self.to_method = function_callee self.params = params self.ret_value = ret_value class MessageSystem(Message): def __init__( self, index, function_callee, function_call, params, information ): self.index = index self.from_method = function_call self.to_method = function_callee self.params = params self.ret_value = information class Pentest: def __init__(self): self.ag_session = None self.package_name = None self.device = None self.frida_session = None self.pid = -1 self.detached = False self.scripts = [] self.pending = [] self.list_file_scripts = [] self.ag_scripts = ['androguard/pentest/internal/utils.js'] self.idx = 0 self.message_queue = queue.Queue() def is_detached(self): return self.detached def disconnect(self): logger.info("Disconnected from frida server") if self.scripts: for script in self.scripts: try: script.unload() except frida.InvalidOperationError as e: logger.error(e) self.frida_session.detach() self.package_name = None self.device = None self.frida_session = None self.pid = -1 self.scripts = [] self.pending = [] self.list_file_scripts = [] def print_devices(self): logger.info("List of devices") devices = frida.enumerate_devices() for i in range(len(devices)): logger.info('{}) {}'.format(i, devices[i])) def connect_default_usb(self): self.device = frida.get_usb_device() logger.info("Connected to device {}".format(self.device)) def _read_scripts(self, scripts): data_scripts = "" for script_file in scripts: with open(script_file, 'r') as file: data_scripts += file.read() data_scripts += '\n\n' return data_scripts def read_scripts(self, scripts): return ( "Java.perform(function () {\n" + self._read_scripts(self.ag_scripts + scripts) + "\n" + "});" ) def install_apk(self, filename): adb.adb(self.device.id, "install {}".format(filename)) def attach_package(self, package_name, list_file_scripts, pid=None): self.package_name = package_name logger.info( "Starting package {} {} {}".format( package_name, list_file_scripts, pid ) ) self.list_file_scripts = list_file_scripts self.device.on('spawn-added', self.spawn_added) self.device.on('spawn-removed', self.spawn_removed) self.device.on('child-added', self.child_added) self.device.on('child-removed', self.on_spawned) self.device.on('process-crashed', self.on_spawned) self.device.on('output', self.on_spawned) self.device.on('uninjected', self.on_spawned) self.device.on('lost', self.on_spawned) self.device.enable_spawn_gating() self.event = threading.Event() logger.info('Enabled spawn gating') try: # It is not an existing process, spawn a new one if not pid: pid = self.device.spawn([package_name]) self.pid = pid self.frida_session = self.device.attach(self.pid) self.load_scripts(self.frida_session, list_file_scripts) self.frida_session.on('detached', self.on_detached) except frida.NotSupportedError as e: logger.error(e) def load_scripts(self, current_session, scripts): try: logger.info('Loading scripts {}'.format(scripts)) script = current_session.create_script(self.read_scripts(scripts)) script.on("message", self.androguard_message_handler) script.load() self.scripts.append(script) except Exception as e: logger.error(e) def run_frida(self): logger.info("Running frida ! Resuming the PID {}".format(self.pid)) self.device.resume(self.pid) def androguard_message_handler(self, message, payload): # use for system event previous_stacktrace = None logger.debug("MESSAGE {} {}".format(message, payload)) if message["type"] == "send": msg_payload = json.loads(message["payload"]) params = {} if msg_payload["id"] == "AG-EVENT": for i in msg_payload: if i not in ["id", "ret", "timestamp", "stacktrace"]: params[i] = msg_payload[i] function_call = msg_payload["stacktrace"][0] function_callee = msg_payload["stacktrace"][1] ret_value = json.dumps(msg_payload.get("ret")) logger.info( "{} - [{}:{}] [{}] -> [{}]".format( msg_payload["timestamp"], function_call, function_callee, params, ret_value, ) ) self.message_queue.put( MessageEvent( self.idx, function_call, function_callee, params, ret_value, ) ) self.ag_session.insert_event( call=function_call, callee=function_callee, params=params, ret=ret_value, ) previous_stacktrace = msg_payload["stacktrace"] self.idx += 1 elif msg_payload["id"] == "AG-SYSTEM": for i in msg_payload: if i not in [ "id", "information", "timestamp", "stacktrace", ]: params[i] = msg_payload[i] function_call = None function_callee = None information = msg_payload["information"] if previous_stacktrace: function_call = previous_stacktrace[0] function_callee = previous_stacktrace[1] else: function_callee = information logger.warning( "{} - [{}:{}] [{}] -> [{}]".format( msg_payload["timestamp"], function_call, function_callee, information, params, ) ) self.message_queue.put( MessageSystem( self.idx, function_call, function_callee, params, information, ) ) self.ag_session.insert_system_event( call=function_call, callee=function_callee, params=params, information=information, ) if not previous_stacktrace: self.idx += 1 elif msg_payload["id"] == "AG-BINDER": logger.info("BINDER {} {}".format(message, payload)) self.idx += 1 def dump(self, package_name): api = self.scripts[0].exports matches = api.scandex() mds = [] for info in matches: try: bs = api.memorydump(info['addr'], info['size']) md = md5(bs) if md in mds: logger.warning( "[DEXDump]: Skip duplicate dex {}<{}>".format( info['addr'], md ), fg="blue", ) continue mds.append(md) if not os.path.exists("./" + package_name + "/"): os.mkdir("./" + package_name + "/") if bs[:4] != "dex\n": bs = b"dex\n035\x00" + bs[8:] readable_hash = hashlib.sha256(bs).hexdigest() with open( package_name + "/" + readable_hash + ".dex", 'wb' ) as out: out.write(bs) logger.info( "[DEXDump]: DexSize={}, SavePath={}/{}/{}.dex".format( hex(info['size']), os.getcwd(), package_name, readable_hash, ), fg='green', ) except Exception as e: logger.error("[Except] - {}: {}".format(e, info), bg='yellow') def on_detached(self, reason): logger.info("Session is detached due to: {}".format(reason)) self.detached = True def on_spawned(self, spawn): # logger.info('on_spawned: {}'.format(spawn)) self.pending.append(spawn) self.event.set() def spawn_added(self, spawn): # logger.info('spawn_added: {}'.format(spawn)) self.event.set() if spawn.identifier.startswith(self.package_name): # logger.info('added tace: {}'.format(spawn)) session = self.device.attach(spawn.pid) self.load_scripts(session, self.list_file_scripts) self.device.resume(spawn.pid) # logger.info('Resumed') def spawn_removed(self, spawn): logger.info('spawn_removed: {}'.format(spawn)) self.event.set() def child_added(self, spawn): logger.info('child_added: {}'.format(spawn)) def start_trace( self, filename, session, list_modules, live=False, noapk=False, dump=False, ): self.ag_session = session logger.info("Start to trace {} {}".format(filename, list_modules)) if not live: apk_obj, dex_objs, dx_obj = session.get_objects_apk(filename) if not apk_obj: logger.error("Can't find any APK object associated") return if not self.device: logger.error("Not connected to any device yet") return list_scripts_to_load = [] for new_module in list_modules: if '*' in new_module: for i_module in glob.iglob(new_module, recursive=True): if os.path.isfile(i_module): if "disable_" not in i_module: list_scripts_to_load.append(i_module) else: list_scripts_to_load.append(new_module) package_name = "" pid = None if not live: self.install_apk(filename) package_name = apk_obj.get_package() else: package_name = filename pid_value = ( os.popen( "adb -s {} shell pidof {}".format( self.device.id, package_name ) ) .read() .strip() ) if pid_value: pid = int(pid_value) self.attach_package(package_name, list_scripts_to_load, pid) if not dump: self.run_frida() else: self.dump(package_name) ================================================ FILE: libs/androguard/pentest/adb.py ================================================ import subprocess from loguru import logger def adb(device_id, cmd=None): logger.info("ADB: Running on {}:{}".format(device_id, cmd)) subprocess.run('adb -s {} {}'.format(device_id, cmd), shell=True) ================================================ FILE: libs/androguard/pentest/internal/utils.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets console.log("[+] LOADING INTERNAL/UTILS.JS"); ("use strict"); var FLAG_SECURE_VALUE = ""; var mode = ""; var methodURL = ""; var requestHeaders = ""; var requestBody = ""; var responseHeaders = ""; var responseBody = ""; const java_lang_threadObj = Java.use("java.lang.Thread").$new(); function getStackTrace() { const stack = java_lang_threadObj.currentThread().getStackTrace(); var buff = []; //for (var i = 2; i < stack.length; i++) { for (var i = 2; i < 4; i++) { buff.push(stack[i].toString()); } return buff; } function flatten(obj) { var ret = {}; for (var i in obj) { ret[i] = obj[i]; } return ret; } const Packet = { id: "AG-EVENT", payload: "", toString() { return JSON.stringify(flatten(this)); }, send() { send(this.toString(), this.payload); }, }; // Create a new Androguard Packet function agPacket(source) { const obj = Object.create(Packet); obj.timestamp = Date.now(); obj.stacktrace = getStackTrace(); // Assign dynamic data from hooks to the packet Object.assign(obj, source); return obj; } // Create a new Androguard System Packet function agSysPacket(source) { const obj = Object.create(Packet); obj.id = "AG-SYSTEM"; obj.timestamp = Date.now(); // Assign dynamic data from hooks to the packet Object.assign(obj, source); return obj; } // Create a new Androguard Binder Packet function agBinderPacket(source, payload) { const obj = Object.create(Packet); obj.id = "AG-BINDER"; obj.timestamp = Date.now(); obj.payload = payload; // Assign dynamic data from hooks to the packet Object.assign(obj, source); return obj; } function dumpIntent(intent) { var cmp = ""; if (intent.getComponent()) { cmp = intent.getComponent().getClassName(); } return { action: intent.getAction(), cmp: cmp, flags: intent.getFlags() }; } function dumpReceiver(receiver) { if (receiver != null) { return { name: receiver.getClass().toString() }; } return {}; } function dumpFilter(filter) { if (filter != null) { actions_list = []; categories_list = []; for (iAction = 0; iAction < filter.countActions(); iAction++) { actions_list.push(filter.getAction(iAction)); } for (iCategory = 0; iCategory < filter.countCategories(); iCategory++) { categories_list.push(filter.getCategory(iCategory)); } return { actions: actions_list, categories: categories_list }; } return {}; } function dumpWebview(wv) { return { getAllowContentAccess: wv.getSettings().getAllowContentAccess(), getJavaScriptEnabled: wv.getSettings().getJavaScriptEnabled(), getAllowFileAccess: wv.getSettings().getAllowFileAccess(), getAllowFileAccessFromFileURLs: wv .getSettings() .getAllowFileAccessFromFileURLs(), getAllowUniversalAccessFromFileURLs: wv .getSettings() .getAllowUniversalAccessFromFileURLs(), }; } var Color = { RESET: "\x1b[39;49;00m", Black: "0;01", Blue: "4;01", Cyan: "6;01", Gray: "7;11", Green: "2;01", Purple: "5;01", Red: "1;01", Yellow: "3;01", Light: { Black: "0;11", Blue: "4;11", Cyan: "6;11", Gray: "7;01", Green: "2;11", Purple: "5;11", Red: "1;11", Yellow: "3;11", }, }; function enumerateModules() { var modules = Process.enumerateModules(); colorLog("[+] Enumerating loaded modules:", { c: Color.Blue }); for (var i = 0; i < modules.length; i++) console.log(modules[i].path + modules[i].name); } function getApplicationContext() { return Java.use("android.app.ActivityThread") .currentApplication() .getApplicationContext(); } function traceClass(targetClass) { colorLog("[+] entering traceClass", { c: Color.Red }); var hook = Java.use(targetClass); var methods = hook.class.getDeclaredMethods(); hook.$dispose(); colorLog("[+] entering parsedMethods", { c: Color.Blue }); var parsedMethods = []; methods.forEach(function (method) { try { parsedMethods.push( method .toString() .replace(targetClass + ".", "TOKEN") .match(/\sTOKEN(.*)\(/)[1], ); } catch (err) {} }); colorLog("[+] entering traceMethods", { c: Color.Blue }); var targets = uniqBy(parsedMethods, JSON.stringify); targets.forEach(function (targetMethod) { try { traceMethod(targetClass + "." + targetMethod); } catch (err) {} }); } function uniqBy(array, key) { var seen = {}; return array.filter(function (item) { var k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); } function traceMethod(targetClassMethod) { var delim = targetClassMethod.lastIndexOf("."); if (delim === -1) return; var targetClass = targetClassMethod.slice(0, delim); var targetMethod = targetClassMethod.slice( delim + 1, targetClassMethod.length, ); var hook = Java.use(targetClass); var overloadCount = hook[targetMethod].overloads.length; colorLog( "Tracing " + targetClassMethod + " [" + overloadCount + " overload(s)]", { c: Color.Green }, ); for (var i = 0; i < overloadCount; i++) { hook[targetMethod].overloads[i].implementation = function () { colorLog("\n[+] Entering: " + targetClassMethod, { c: Color.Yellow, }); if (arguments.length) console.log(); for (var j = 0; j < arguments.length; j++) { agPacket({ arg: arguments[j] }).send(); } var retval = this[targetMethod].apply(this, arguments); agPacket({ ret: retval }).send(); colorLog("\n[-] Exiting " + targetClassMethod); return retval; }; } } var Utf8 = { encode: function (string) { string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if (c > 127 && c < 2048) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // publi decode: function (utftext) { var string = ""; var i = 0; var c = (c1 = c2 = 0); while (i < utftext.length) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if (c > 191 && c < 224) { c2 = utftext.charCodeAt(i + 1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i + 1); c3 = utftext.charCodeAt(i + 2); string += String.fromCharCode( ((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63), ); i += 3; } } return string; }, }; function describeJavaClass(className) { var jClass = Java.use(className); console.log( JSON.stringify( { _name: className, _methods: Object.getOwnPropertyNames(jClass.__proto__).filter( function (m) { return ( !m.startsWith("$") || // filter out Frida related special properties m == "class" || m == "constructor" ); // optional }, ), _fields: jClass.class.getFields().map(function (f) { return f.toString(); }), }, null, 2, ), ); } var colorLog = function (input, kwargs) { kwargs = kwargs || {}; var logLevel = kwargs["l"] || "log", colorPrefix = "\x1b[3", colorSuffix = "m"; if (typeof input === "object") input = JSON.stringify(input, null, kwargs["i"] ? 2 : null); if (kwargs["c"]) input = colorPrefix + kwargs["c"] + colorSuffix + input + Color.RESET; console[logLevel](input); }; var processArgs = function (command, envp, dir) { var output = {}; if (command) { console.log("Command: " + command); // output.command = command; } if (envp) { console.log("Environment: " + envp); // output.envp = envp; } if (dir) { console.log("Working Directory: " + dir); // output.dir = dir; } // return output; }; var _byteArraytoHexString = function (byteArray) { if (!byteArray) { return "null"; } if (byteArray.map) { return byteArray .map(function (byte) { return ("0" + (byte & 0xff).toString(16)).slice(-2); }) .join(""); } else { return byteArray + ""; } }; var updateInput = function (input) { if (input.length && input.length > 0) { var normalized = byteArraytoHexString(input); } else if (input.array) { var normalized = byteArraytoHexString(input.array()); } else { var normalized = input.toString(); } return normalized; }; var byteArraytoHexString = function (byteArray) { if (byteArray && byteArray.map) { return byteArray .map(function (byte) { return ("0" + (byte & 0xff).toString(16)).slice(-2); }) .join(""); } else { return JSON.stringify(byteArray); } }; var hexToAscii = function (input) { var hex = input.toString(); var str = ""; for (var i = 0; i < hex.length; i += 2) str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); return str; }; var displayString = function (input) { var str = input.replace("[", ""); var str1 = str.replace("]", ""); var res = str1.split(","); var ret = ""; for (var i = 0; i < res.length; i++) { if (res[i] > 31 && res[i] < 127) ret += String.fromCharCode(res[i]); else ret += " "; } colorLog("[+] PARSING TO STRING: " + ret, { c: Color.Green }); colorLog("", { c: Color.RESET }); }; var normalize = function (input) { if (input.length && input.length > 0) { var normalized = byteArraytoHexString(input); } else if (input.array) { var normalized = byteArraytoHexString(input.array()); } else { var normalized = input.toString(); } return normalized; }; var normalizeInput = function (input) { if (input.array) { var normalized = byteArraytoHexString(input.array()); } else if (input.length && input.length > 0) { var normalized = byteArraytoHexString(input); } else { var normalized = JSON.stringify(input); } return normalized; }; var getMode = function (Cipher, mode) { if (mode === 2) { mode = "DECRYPT"; } else if (mode === 1) { mode = "ENCRYPT"; } return mode; }; var getRandomValue = function (arg) { if (!arg) { return "null"; } var type = arg.toString().split("@")[0].split("."); type = type[type.length - 1]; if (type === "SecureRandom") { if (arg.getSeed) { return byteArraytoHexString(arg.getSeed(10)); } } }; var normalizeKey = function (cert_or_key) { var type = cert_or_key.toString().split("@")[0].split("."); type = type[type.length - 1]; if (type === "SecretKeySpec") { return byteArraytoHexString(cert_or_key.getEncoded()); } else { return ( "non-SecretKeySpec: " + cert_or_key.toString() + ", encoded: " + byteArraytoHexString(cert_or_key.getEncoded()) + ", object: " + JSON.stringify(cert_or_key) ); } }; var byteArrayToString = function (input) { var buffer = Java.array("byte", input); var result = ""; for (var i = 0; i < buffer.length; i++) { if (buffer[i] > 31 && buffer[i] < 127) { result += String.fromCharCode(buffer[i]); } else { result += " "; } } return result; }; var byteArrayToStringE = function (input) { var buffer = Java.array("byte", input); var result = ""; var unprintable = false; for (var i = 0; i < buffer.length; ++i) { if (buffer[i] > 31 && buffer[i] < 127) result += String.fromCharCode(buffer[i]); else { unprintable = true; result = "Input cant be transformed to ascii string"; break; } } return result; }; function readStreamToHex(stream) { var data = []; var byteRead = stream.read(); while (byteRead != -1) { data.push(("0" + (byteRead & 0xff).toString(16)).slice(-2)); /* <---------------- binary to hex ---------------> */ byteRead = stream.read(); } stream.close(); return data.join(""); } const jni_struct_array = [ "reserved0", "reserved1", "reserved2", "reserved3", "GetVersion", "DefineClass", "FindClass", "FromReflectedMethod", "FromReflectedField", "ToReflectedMethod", "GetSuperclass", "IsAssignableFrom", "ToReflectedField", "Throw", "ThrowNew", "ExceptionOccurred", "ExceptionDescribe", "ExceptionClear", "FatalError", "PushLocalFrame", "PopLocalFrame", "NewGlobalRef", "DeleteGlobalRef", "DeleteLocalRef", "IsSameObject", "NewLocalRef", "EnsureLocalCapacity", "AllocObject", "NewObject", "NewObjectV", "NewObjectA", "GetObjectClass", "IsInstanceOf", "GetMethodID", "CallObjectMethod", "CallObjectMethodV", "CallObjectMethodA", "CallBooleanMethod", "CallBooleanMethodV", "CallBooleanMethodA", "CallByteMethod", "CallByteMethodV", "CallByteMethodA", "CallCharMethod", "CallCharMethodV", "CallCharMethodA", "CallShortMethod", "CallShortMethodV", "CallShortMethodA", "CallIntMethod", "CallIntMethodV", "CallIntMethodA", "CallLongMethod", "CallLongMethodV", "CallLongMethodA", "CallFloatMethod", "CallFloatMethodV", "CallFloatMethodA", "CallDoubleMethod", "CallDoubleMethodV", "CallDoubleMethodA", "CallVoidMethod", "CallVoidMethodV", "CallVoidMethodA", "CallNonvirtualObjectMethod", "CallNonvirtualObjectMethodV", "CallNonvirtualObjectMethodA", "CallNonvirtualBooleanMethod", "CallNonvirtualBooleanMethodV", "CallNonvirtualBooleanMethodA", "CallNonvirtualByteMethod", "CallNonvirtualByteMethodV", "CallNonvirtualByteMethodA", "CallNonvirtualCharMethod", "CallNonvirtualCharMethodV", "CallNonvirtualCharMethodA", "CallNonvirtualShortMethod", "CallNonvirtualShortMethodV", "CallNonvirtualShortMethodA", "CallNonvirtualIntMethod", "CallNonvirtualIntMethodV", "CallNonvirtualIntMethodA", "CallNonvirtualLongMethod", "CallNonvirtualLongMethodV", "CallNonvirtualLongMethodA", "CallNonvirtualFloatMethod", "CallNonvirtualFloatMethodV", "CallNonvirtualFloatMethodA", "CallNonvirtualDoubleMethod", "CallNonvirtualDoubleMethodV", "CallNonvirtualDoubleMethodA", "CallNonvirtualVoidMethod", "CallNonvirtualVoidMethodV", "CallNonvirtualVoidMethodA", "GetFieldID", "GetObjectField", "GetBooleanField", "GetByteField", "GetCharField", "GetShortField", "GetIntField", "GetLongField", "GetFloatField", "GetDoubleField", "SetObjectField", "SetBooleanField", "SetByteField", "SetCharField", "SetShortField", "SetIntField", "SetLongField", "SetFloatField", "SetDoubleField", "GetStaticMethodID", "CallStaticObjectMethod", "CallStaticObjectMethodV", "CallStaticObjectMethodA", "CallStaticBooleanMethod", "CallStaticBooleanMethodV", "CallStaticBooleanMethodA", "CallStaticByteMethod", "CallStaticByteMethodV", "CallStaticByteMethodA", "CallStaticCharMethod", "CallStaticCharMethodV", "CallStaticCharMethodA", "CallStaticShortMethod", "CallStaticShortMethodV", "CallStaticShortMethodA", "CallStaticIntMethod", "CallStaticIntMethodV", "CallStaticIntMethodA", "CallStaticLongMethod", "CallStaticLongMethodV", "CallStaticLongMethodA", "CallStaticFloatMethod", "CallStaticFloatMethodV", "CallStaticFloatMethodA", "CallStaticDoubleMethod", "CallStaticDoubleMethodV", "CallStaticDoubleMethodA", "CallStaticVoidMethod", "CallStaticVoidMethodV", "CallStaticVoidMethodA", "GetStaticFieldID", "GetStaticObjectField", "GetStaticBooleanField", "GetStaticByteField", "GetStaticCharField", "GetStaticShortField", "GetStaticIntField", "GetStaticLongField", "GetStaticFloatField", "GetStaticDoubleField", "SetStaticObjectField", "SetStaticBooleanField", "SetStaticByteField", "SetStaticCharField", "SetStaticShortField", "SetStaticIntField", "SetStaticLongField", "SetStaticFloatField", "SetStaticDoubleField", "NewString", "GetStringLength", "GetStringChars", "ReleaseStringChars", "NewStringUTF", "GetStringUTFLength", "GetStringUTFChars", "ReleaseStringUTFChars", "GetArrayLength", "NewObjectArray", "GetObjectArrayElement", "SetObjectArrayElement", "NewBooleanArray", "NewByteArray", "NewCharArray", "NewShortArray", "NewIntArray", "NewLongArray", "NewFloatArray", "NewDoubleArray", "GetBooleanArrayElements", "GetByteArrayElements", "GetCharArrayElements", "GetShortArrayElements", "GetIntArrayElements", "GetLongArrayElements", "GetFloatArrayElements", "GetDoubleArrayElements", "ReleaseBooleanArrayElements", "ReleaseByteArrayElements", "ReleaseCharArrayElements", "ReleaseShortArrayElements", "ReleaseIntArrayElements", "ReleaseLongArrayElements", "ReleaseFloatArrayElements", "ReleaseDoubleArrayElements", "GetBooleanArrayRegion", "GetByteArrayRegion", "GetCharArrayRegion", "GetShortArrayRegion", "GetIntArrayRegion", "GetLongArrayRegion", "GetFloatArrayRegion", "GetDoubleArrayRegion", "SetBooleanArrayRegion", "SetByteArrayRegion", "SetCharArrayRegion", "SetShortArrayRegion", "SetIntArrayRegion", "SetLongArrayRegion", "SetFloatArrayRegion", "SetDoubleArrayRegion", "RegisterNatives", "UnregisterNatives", "MonitorEnter", "MonitorExit", "GetJavaVM", "GetStringRegion", "GetStringUTFRegion", "GetPrimitiveArrayCritical", "ReleasePrimitiveArrayCritical", "GetStringCritical", "ReleaseStringCritical", "NewWeakGlobalRef", "DeleteWeakGlobalRef", "ExceptionCheck", "NewDirectByteBuffer", "GetDirectBufferAddress", "GetDirectBufferCapacity", "GetObjectRefType", ]; /* Calculate the given funcName address from the JNIEnv pointer */ function getJNIFunctionAdress(jnienv_addr, func_name) { var offset = jni_struct_array.indexOf(func_name) * Process.pointerSize; // console.log("offset : 0x" + offset.toString(16)) return Memory.readPointer(jnienv_addr.add(offset)); } // Hook all function to have an overview of the function called function hook_all(jnienv_addr) { jni_struct_array.forEach(function (func_name) { // Calculating the address of the function if (!func_name.includes("reserved")) { var func_addr = getJNIFunctionAdress(jnienv_addr, func_name); Interceptor.attach(func_addr, { onEnter: function (args) { console.log("[+] Entered : " + func_name); }, }); } }); } function inspectObject(obj) { const Class_X = Java.use("java.lang.Class"); const obj_class = Java.cast(obj.getClass(), Class_X); const fields = obj_class.getDeclaredFields(); const methods = obj_class.getMethods(); console.log("Inspecting " + obj.getClass().toString()); console.log( "[+]------------------------------Fields------------------------------:", ); for (var i in fields) console.log("\t\t" + fields[i].toString()); console.log( "[+]------------------------------Methods-----------------------------:", ); for (var i in methods) console.log("\t\t" + methods[i].toString()); } //------------------------https://github.com/CreditTone/hooker---------------------------- function classExists(className) { var exists = false; try { var clz = Java.use(className); exists = true; } catch (err) { //console.log(err); } return exists; } function methodInBeat(invokeId, timestamp, methodName, executor) { var startTime = timestamp; var androidLogClz = Java.use("android.util.Log"); var exceptionClz = Java.use("java.lang.Exception"); var threadClz = Java.use("java.lang.Thread"); var currentThread = threadClz.currentThread(); var stackInfo = androidLogClz.getStackTraceString(exceptionClz.$new()); var str = "------------startFlag:" + invokeId + ",objectHash:" + executor + ",thread(id:" + currentThread.getId() + ",name:" + currentThread.getName() + "),timestamp:" + startTime + "---------------\n"; str += methodName + "\n"; str += stackInfo.substring(20); str += "------------endFlag:" + invokeId + ",usedtime:" + (new Date().getTime() - startTime) + "---------------\n"; console.log(str); } function log(str) { console.log(str); } function tryGetClass(className) { var clz = undefined; try { clz = Java.use(className); } catch (e) {} return clz; } var containRegExps = new Array(); var notContainRegExps = new Array(RegExp(/\.jpg/), RegExp(/\.png/)); function check(str) { str = str.toString(); if (!(str && str.match)) { return false; } for (var i = 0; i < containRegExps.length; i++) { if (!str.match(containRegExps[i])) { return false; } } for (var i = 0; i < notContainRegExps.length; i++) { if (str.match(notContainRegExps[i])) { return false; } } return true; } //------------------------https://github.com/CreditTone/hooker EOF---------------------------- function sendAppInfo() { var context = null; var ActivityThread = Java.use("android.app.ActivityThread"); var app = ActivityThread.currentApplication(); if (app != null) { context = app.getApplicationContext(); var app_classname = app.getClass().toString().split(" ")[1]; var filesDirectory = context.getFilesDir().getAbsolutePath().toString(); var cacheDirectory = context.getCacheDir().getAbsolutePath().toString(); var externalCacheDirectory = context .getExternalCacheDir() .getAbsolutePath() .toString(); var codeCacheDirectory = "getCodeCacheDir" in context ? context.getCodeCacheDir().getAbsolutePath().toString() : "N/A"; var obbDir = context.getObbDir().getAbsolutePath().toString(); var packageCodePath = context.getPackageCodePath().toString(); var applicationName = app_classname; var info = {}; info.applicationName = applicationName; info.filesDirectory = filesDirectory; info.cacheDirectory = cacheDirectory; info.externalCacheDirectory = externalCacheDirectory; info.codeCacheDirectory = codeCacheDirectory; info.obbDir = obbDir; info.packageCodePath = packageCodePath; agSysPacket({ information: "app", info: info }).send(); } else { console.log("No context yet!"); } } //------------------------https://github.com/CreditTone/hooker EOF---------------------------- function notifyNewSharedPreference(key, value) { var k = key; var v = value; Java.use("android.app.SharedPreferencesImpl$EditorImpl").putString.overload( "java.lang.String", "java.lang.String", ).implementation = function (k, v) { console.log("[SharedPreferencesImpl]", k, "=", v); return this.putString(k, v); }; } // Send some stuff about the app setTimeout(function () { sendAppInfo(); }, 1000); ================================================ FILE: libs/androguard/pentest/modules/binder/intercept_binder.js ================================================ // Ripped from https://github.com/foundryzero/binder-trace and modified to fit Androguard packets colorLog('[+] LOADING BINDER/INTERCEPT_BINDER.JS',{c: Color.Red}); const BINDER_WRITER_READ = 0xc0306201; const BC_TRANSACTION = 0x40406300; const BC_REPLY = 0x40406301; var parameters = {}; // Note: this filtering mechanism here doesn't actually get used - I moved to filtering displayed parcels rather than // filtering which parcels are captured. var exclude_re = { test(i) { return false } }; var exclude_list = Array(); // Special case: if there are no exclusions and any inclusions, this is set to true // to exclude everything by default instead of including everything. var just_include = false; var include_re = { test(i) { return false } }; var include_list = Array(); var verbosity = 0; var silent = true; var android_version = 11; // Default to android 11, but a different version can be provided through the options object. rpc.exports = { init: function (stage, param) { parameters = param; if (!('exclude' in parameters || 'exclude_re' in parameters) && ('include' in parameters || 'include_re' in parameters)) { just_include = true; } if ('exclude' in parameters) { exclude_list = parameters.exclude } if ('exclude_re' in parameters) { try { exclude_re = new RegExp(parameters.exclude_re) } catch (e) { console.error("Invalid exclusion regex") } } if ('include' in parameters) { just_include = true include_list = parameters.include } if ('include_re' in parameters) { try { include_re = new RegExp(parameters.include_re) } catch (e) { console.error("Invalid inclusion regex") } } if ('verbosity' in parameters) { switch (parameters.verbosity) { case 0: verbosity = 0; break; case 1: verbosity = 1; break; case 2: verbosity = 2; break; default: console.error("Invalid verbosity value") } } if ('connected' in parameters) { silent = true; } if ('version' in parameters) { android_version = parameters.version } } } function check_printable_descriptor(descriptor) { var included = !just_include; // Usually set to true, false if there are only inclusion conditions. //console.log(include_list) if (exclude_list.includes(descriptor) || exclude_re.test(descriptor)) { included = false; } if (include_list.includes(descriptor) || include_re.test(descriptor)) { included = true; } return included } function binder_write_read(ptr) { return { ptr: ptr, get write_size() { return this.ptr.readU64(); }, get write_consumed() { return this.ptr.add(8).readU64(); }, get write_buffer() { return this.ptr.add(16).readPointer(); }, get read_size() { return this.ptr.add(24).readU64(); }, get read_consumed() { return this.ptr.add(32).readU64(); }, get read_buffer() { return this.ptr.add(40).readPointer(); } } } function interface_token(ptr) { return { ptr: ptr, get strict_mode_policy() { return this.ptr.readU32(); }, get work_source_uid() { return this.ptr.add(4).readU32(); }, get version_header() { return this.ptr.add(8).readU32(); }, get descriptor_length() { if (android_version >= 10) { return this.ptr.add(12).readU32(); } else { return this.ptr.add(4).readU32(); } }, get descriptor() { if (android_version >= 10) { return this.ptr.add(16).readUtf16String(this.descriptor_length); } else { return this.ptr.add(8).readUtf16String(this.descriptor_length); } }, } } function parcel(ptr) { if (Process.arch == "ia32" || Process.arch == "arm") { // Return 32-bit parcel return { ptr: ptr, get error() { return this.ptr.readU32() }, get data() { return this.ptr.add(4).readPointer() }, get data_size() { return this.ptr.add(8).readU32() }, get data_capacity() { return this.ptr.add(12).readU32() }, get data_pos() { return this.ptr.add(16).readU32() }, get objects() { return this.ptr.add(20).readPointer() }, get objects_size() { return this.ptr.add(24).readU32() }, get objects_capacity() { return this.ptr.add(28).readU32() }, get next_object_hint() { return this.ptr.add(32).readU32() }, get objects_sorted() { return this.ptr.add(36).readU8() } // TODO finish parsing this } } else { // Return 64-bit parcel return { ptr: ptr, get error() { return this.ptr.readU64() }, get data() { return this.ptr.add(8).readPointer() }, get data_size() { return this.ptr.add(16).readU64() }, get data_capacity() { return this.ptr.add(24).readU64() }, get data_pos() { return this.ptr.add(32).readU64() }, get objects() { return this.ptr.add(40).readPointer() }, get objects_size() { return this.ptr.add(48).readU64() }, get objects_capacity() { return this.ptr.add(56).readU64() }, get next_object_hint() { return this.ptr.add(64).readU64() }, get objects_sorted() { return this.ptr.add(72).readU8() } // TODO finish parsing this } } } function print_transaction(p, code) { var token = interface_token(p.data) if(silent) { agBinderPacket({information: "TRANSACT", "code": code.toInt32()}, p.data.readByteArray(p.data_size)).send(); //send({"type" : "TRANSACT", "code": code.toInt32()}, p.data.readByteArray(p.data_size)) } else { if (verbosity == 0) { console.log(token.descriptor + ":" + code) } else if (verbosity == 1) { console.log(JSON.stringify({ "name": token.descriptor, "code": code })); console.log(hexdump(p.data, { length: p.data_size, header: true, ansi: true })); } else if (verbosity == 2) { console.log('\n\n\n') console.log(JSON.stringify({ "name": token.descriptor, "code": code })); console.log(hexdump(p.data, { length: p.data_size, header: true, ansi: true })); } } } var temp = ptr(0) // IPCThreadState::transact() Interceptor.attach(Module.getExportByName("libbinder.so", "_ZN7android14IPCThreadState8transactEijRKNS_6ParcelEPS1_j"), { reply: ptr("0x0"), descriptor: "", code: 0, onEnter: function (args) { if (!silent) { console.log("\n\n\nTRANSACTION " + args[0] + ", " + args[1] + ", " + args[2] + ", " + args[3] + ", " + args[4] + ", " + args[5]); } var data = parcel(args[3]) if (data.data.isNull()) { //console.log(">> weird packet") this.reply = ptr("0x0"); return; } if (check_printable_descriptor(interface_token(data.data).descriptor)) { print_transaction(data, args[2]); if (args[5].toInt32() & 0x1 || args[4].isNull()) { //console.log(">> one way packet") this.reply = ptr("0x0"); } else { this.reply = parcel(args[4]) this.code = args[2].toInt32() this.descriptor = interface_token(data.data).descriptor } } }, onLeave: function (retval) { if ("data" in this.reply) { // If this.reply is a Parcel if (!silent) { console.log("REPLY " + this.reply.ptr) console.log(hexdump(this.reply.data, { ansi: true, length: this.reply.data_size })); } else { agBinderPacket({information: "REPLY", "code": this.code, "descriptor": this.descriptor}, this.reply.data.readByteArray(this.reply.data_size)).send(); } this.reply = ptr(0); } } }) ================================================ FILE: libs/androguard/pentest/modules/code_loading/dex.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING CODE_LOADING/DEX.JS',{c: Color.Red}); var pathClassLoader = Java.use("dalvik.system.PathClassLoader"); var dexclassLoader = Java.use("dalvik.system.DexClassLoader"); var basedexclassLoader = Java.use("dalvik.system.BaseDexClassLoader"); var delegateLastClassLoader = Java.use("dalvik.system.DelegateLastClassLoader"); var clazz = Java.use('java.lang.Class'); dexclassLoader.$init.implementation = function(dexPath, optimizedDirectory, librarySearchPath, parent){ colorLog('DexClassLoader called:', {c: Color.Green}); console.log("dexPath=" + dexPath ); console.log("optimizedDirectory=" + optimizedDirectory); console.log("librarySearchPath=" + librarySearchPath); console.log("parent=" + parent); return this.$init(dexPath, optimizedDirectory, librarySearchPath, parent); } basedexclassLoader.$init.overloads[0].implementation = function(dexPath, optimizedDirectory, librarySearchPath, parent){ colorLog('BaseDexClassLoader called:', {c: Color.Green}); console.log("dexPath=" + dexPath ); console.log("optimizedDirectory=" + optimizedDirectory); console.log("librarySearchPath=" + librarySearchPath); console.log("parent=" + parent); return this.$init(dexPath, optimizedDirectory, librarySearchPath, parent); } delegateLastClassLoader.$init.overloads[0].implementation = function ( dexPath, parent){ colorLog('DelegateLastClassLoader called:', {c: Color.Green}); console.log("dexPath=" + dexPath ); console.log("parent=" + parent); return this.$init(dexPath, parent); } delegateLastClassLoader.$init.overloads[1].implementation = function ( dexPath, librarySearchPath, parent){ colorLog('DelegateLastClassLoader called:', {c: Color.Green}); console.log("dexPath=" + dexPath ); console.log("librarySearchPath=" + librarySearchPath); console.log("parent=" + parent); return this.$init(dexPath,librarySearchPath, parent); } traceClass('dalvik.system.InMemoryDexClassLoader'); //Creates a PathClassLoader that operates on a given list of files and directories. pathClassLoader.$init.overloads[0].implementation= function( dexPath, parent){ colorLog('PathClassLoader called:', {c: Color.Green}); console.log("dexPath=" + dexPath ); console.log("parent=" + parent); return this.$init(dexPath, parent); } pathClassLoader.$init.overloads[1].implementation=function( dexPath, librarySearchPath, parent){ colorLog('PathClassLoader called:', {c: Color.Green}); console.log("dexPath=" + dexPath ); console.log("librarySearchPath=" + librarySearchPath); console.log("parent=" + parent); return this.$init(dexPath,librarySearchPath, parent); } ================================================ FILE: libs/androguard/pentest/modules/code_loading/dyndex.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING CODE_LOADING/DYNDEX.JS',{c: Color.Red}); const classLoader = Java.use('dalvik.system.DexClassLoader'); const pathLoader = Java.use('dalvik.system.PathClassLoader'); const memoryLoader = Java.use('dalvik.system.InMemoryDexClassLoader'); const delegateLoader = Java.use('dalvik.system.DelegateLastClassLoader'); const File = Java.use('java.io.File'); const FileInputStream = Java.use("java.io.FileInputStream"); const FileOutputStream = Java.use("java.io.FileOutputStream"); const ActivityThread = Java.use("android.app.ActivityThread"); var counter = 0; function dump(filename) { var sourceFile = File.$new(filename); var fis = FileInputStream.$new(sourceFile); var inputChannel = fis.getChannel(); var application = ActivityThread.currentApplication(); if (application == null) return ; var context = application.getApplicationContext(); // you cannot dump to /sdcard unless the app has rights to! var fos = context.openFileOutput('dump_'+counter, 0); counter = counter + 1; var outputChannel = fos.getChannel(); inputChannel.transferTo(0, inputChannel.size(), outputChannel); fis.close(); fos.close(); console.log("[+] Dumped "+filename+" to dump_"+counter); } classLoader.$init.implementation = function(filename, b, c, d) { colorLog('DexClassLoader called: '+filename, {c: Color.Yellow}); dump(filename); return this.$init(filename, b, c, d); } pathLoader.$init.overload('java.lang.String', 'java.lang.ClassLoader').implementation = function(filename, parent) { colorLog('PathClassLoader(f,p) called: '+filename, {c: Color.Yellow}); dump(filename); return this.$init(filename, parent); } pathLoader.$init.overload('java.lang.String', 'java.lang.String', 'java.lang.ClassLoader').implementation = function(filename, librarySearchPath, parent) { colorLog('PathClassLoader(f,l,p) called: '+filename, {c: Color.Yellow}); dump(filename); return this.$init(filename, librarySearchPath, parent); } delegateLoader.$init.overload('java.lang.String', 'java.lang.ClassLoader').implementation = function(filename, parent) { colorLog('DelegateLastClassLoader(f,p) called: '+filename, {c: Color.Yellow}); dump(filename); return this.$init(filename, parent); } delegateLoader.$init.overload('java.lang.String', 'java.lang.String', 'java.lang.ClassLoader').implementation = function(filename, librarySearchPath, parent) { colorLog('DelegateLastClassLoader(f,l,p) called: '+filename, {c: Color.Yellow}); dump(filename); return this.$init(filename, librarySearchPath, parent); } if (Java.use('android.os.Build$VERSION').SDK_INT.value > 28) { delegateLoader.$init.overload('java.lang.String', 'java.lang.String', 'java.lang.ClassLoader', 'boolean').implementation = function(filename, librarySearchPath, parent, resourceLoading) { colorLog('DelegateLastClassLoader(f,l,p,b) called: '+filename, {c: Color.Yellow}); dump(filename); return this.$init(filename, librarySearchPath, parent, resourceLoading); } } memoryLoader.$init.overload('java.nio.ByteBuffer', 'java.lang.ClassLoader').implementation = function(dexbuffer, loader) { var object = this.$init(dexbuffer, loader); /* dexbuffer is a Java ByteBuffer */ var remaining = dexbuffer.remaining(); var filename = 'dump_' + counter; counter = counter + 1; console.log("[*] InMemoryDexClassLoader: Opening file name="+filename+" to write "+remaining+" bytes"); const f = new File(filename,'wb'); var buf = new Uint8Array(remaining); for (var i=0;i 0) { console.log("[-] Error: There are "+remaining+" remaining bytes!"); } else { console.log("[+] Dex dumped successfully in "+filename); } return object; } ================================================ FILE: libs/androguard/pentest/modules/code_loading/load_class.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING CODE_LOADING/LOAD_CLASS.JS',{c: Color.Red}); var classLoaderDef = Java.use('java.lang.ClassLoader'); var loadClass = classLoaderDef.loadClass.overload('java.lang.String', 'boolean'); var internalClasses = [ "android.", "org.", "com.google.", "java.", "androidx."]; /* taken from https://github.com/eybisi/nwaystounpackmobilemalware/blob/master/dereflect.js */ loadClass.implementation = function(class_name, resolve) { var isGood = true; for (var i = 0; i < internalClasses.length; i++) { if (class_name.startsWith(internalClasses[i])) { isGood = false; } } if (isGood) { agPacket({class_name: class_name}).send(); } return loadClass.call(this, class_name, resolve); } ================================================ FILE: libs/androguard/pentest/modules/code_loading/native.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING CODE_LOADING/NATIVE.JS',{c: Color.Red}); var systemA = Java.use('java.lang.System'); systemA.load.implementation = function(filename) { agPacket({filename: filename}).send(); return this.load(filename); } /* systemA.loadLibrary.implementation = function(libname) { agPacket({libname: libname}).send(); colorLog('[+] Application is loading the following library:'+libname,{c: Color.Red}); return this.loadLibrary(libname); }*/ systemA.mapLibraryName.implementation = function(libname) { agPacket({libname: libname}).send(); var ret = this.mapLibraryName(libname); return ret; } ================================================ FILE: libs/androguard/pentest/modules/compression/gzip.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING COMPRESSION/GZIP.JS',{c: Color.Red}); var gzipInputStream = Java.use('java.util.zip.GZIPInputStream'); var gzipOutputStream = Java.use('java.util.zip.GZIPOutputStream'); gzipOutputStream.write.implementation = function(buff, off, len_n){ var buffer = Java.array('byte', buff); var result = ""; for(var i = 0; i < buffer.length; ++i){ if(buffer[i] >= 32 && buffer[i]<127) result+= (String.fromCharCode(buffer[i])); } agPacket({result: result}).send(); return this.write(buff, off, len_n); } gzipInputStream.read.implementation = function(buff, off, len_n){ var buffer = Java.array('byte', buff); var result = ""; for(var i = 0; i < buffer.length; ++i){ if(buffer[i] >= 32 && buffer[i]<127) result+= (String.fromCharCode(buffer[i])); } agPacket({result: result}).send(); return this.write(buff,off,len_n); } ================================================ FILE: libs/androguard/pentest/modules/encoding/base64.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING ENCODING/BASE64.JS', {c: Color.Red}); var base64 = Java.use('android.util.Base64'); base64.decode.overloads[0].implementation = function(endString, flags) { var ret = this.decode(endString, flags); agPacket({endString: endString, flags: flags, ret: ret}).send(); return ret; } base64.encode.overloads[0].implementation = function(byteString, flags) { var ret = this.encode(byteString,flags); agPacket({byteString: byteString, flags: flags, ret: ret}).send(); return ret; } base64.encode.overloads[1].implementation = function(byteString, offset, ln, flags) { var ret = this.encode(byteString, offset, ln, flags); agPacket({byteString: byteString, flags: flags, ln: ln, ret: ret}).send(); return ret; } base64.encodeToString.overloads[1].implementation = function(byteString,flags){ var ret = this.encodeToString(byteString, flags); agPacket({byteString: byteString, flags: flags, ret: ret}).send(); return ret; } ================================================ FILE: libs/androguard/pentest/modules/encryption/cipher.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog("[+] LOADING ENCRYPTION/CIPHER.JS", { c: Color.Red }); var cipher = Java.use("javax.crypto.Cipher"); cipher.init.overload("int", "java.security.Key").implementation = function ( mode, key, ) { var operation = ""; var algorithm = this.getAlgorithm(); if (mode == 1) operation = "Encrypting"; else if (mode == 2) operation = "Decrypting"; agPacket({ algorithm: algorithm, operation: operation, mode: mode, key: byteArraytoHexString(key.getEncoded()), }).send(); return this.init(mode, key); }; cipher.init.overload( "int", "java.security.Key", "java.security.spec.AlgorithmParameterSpec", ).implementation = function (mode, key, paramsec) { var operation = ""; var algorithm = this.getAlgorithm(); if (mode == 1) operation = "Encrypting"; else if (mode == 2) operation = "Decrypting"; agPacket({ algorithm: algorithm, mode: mode, operation: operation, key: byteArraytoHexString(key.getEncoded()), iv: paramsec, }).send(); return this.init(mode, key, paramsec); }; cipher.init.overload( "int", "java.security.Key", "java.security.AlgorithmParameters", "java.security.SecureRandom", ).implementation = function (mode, key, paramsec, secRnd) { var operation = ""; var algorithm = this.getAlgorithm(); if (mode == 1) operation = "Encrypting"; else if (mode == 2) operation = "Decrypting"; agPacket({ algorithm: algorithm, mode: mode, operation: operation, key: byteArraytoHexString(key.getEncoded()), iv: paramsec, secRnd: secRnd, }).send(); return this.init(mode, key, paramsec, secRnd); }; //DO FINAL-------------------------------- cipher.doFinal.overload("[B").implementation = function (byteArray) { var ret = this.doFinal(byteArray); agPacket({ in: byteArraytoHexString(byteArray), ret: byteArraytoHexString(ret), }).send(); return ret; }; cipher.doFinal.overload("[B", "int").implementation = function ( byteArray, outputOffset, ) { var ret = this.doFinal(byteArray, outputOffset); agPacket({ in: byteArray, outputOffset: outputOffset, ret: ret }).send(); return ret; }; cipher.doFinal.overload("[B", "int", "int").implementation = function ( byteArray, outputOffset, inputlen, ) { var ret = this.doFinal(byteArray, outputOffset, inputlen); agPacket({ in: byteArray, outputOffset: outputOffset, inputlen: inputlen, ret: ret, }).send(); return ret; }; cipher.doFinal.overload("[B", "int", "int", "[B").implementation = function ( byteArray, outputOffset, inputlen, output, ) { var ret = this.doFinal(byteArray, outputOffset, inputlen, output); agPacket({ in: byteArray, out: output, outputOffset: outputOffset, inputlen: inputlen, ret: ret, }).send(); return ret; }; cipher.doFinal.overload("[B", "int", "int", "[B", "int").implementation = function (byteArray, outputOffset, inputlen, output, outoffset) { var ret = this.doFinal( byteArray, outputOffset, inputlen, output, outoffset, ); agPacket({ in: byteArray, out: output, outputOffset: outputOffset, inputlen: inputlen, outoffset: outoffset, ret: ret, }).send(); return ret; }; ================================================ FILE: libs/androguard/pentest/modules/encryption/keystore.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog("[+] LOADING ENCRYPTION/KEYSTORE.JS", { c: Color.Red }); var keystore = Java.use("java.security.KeyStore"); keystore.containsAlias.overload("java.lang.String").implementation = function ( alias, ) { var ret = this.containsAlias(alias); agPacket({ alias: alias, ret: ret, }).send(); return ret; }; keystore.getKey.overload("java.lang.String", "[C").implementation = function ( alias, password, ) { var ret = this.getKey(alias, password); agPacket({ alias: alias, password: password, algorithm: ret.getAlgorithm(), encoded: ret.getEncoded(), ret: ret, }).send(); return ret; }; keystore.load.overload("java.io.InputStream", "[C").implementation = function ( stream, charArray, ) { /* sometimes this happen, I have no idea why, tho... */ if (stream == null) { /* just to avoid interfering with app's flow */ this.load(stream, charArray); return; } var hexString = readStreamToHex(stream); agPacket({ certType: this.getType(), password: charArray, cert: hexString, }).send(); /* call the original implementation of 'load' */ this.load(stream, charArray); /* no need to return anything */ }; ================================================ FILE: libs/androguard/pentest/modules/file_system/shared_preferences.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING FILE_SYSTEM/SHARED_PREFERENCES.JS',{c: Color.Red}); var SharedPreferencesImpl = Java.use("android.app.SharedPreferencesImpl"); var SharedPreferencesImpl_EditorImpl = Java.use("android.app.SharedPreferencesImpl$EditorImpl"); SharedPreferencesImpl.contains.implementation = function(key) { var value = this.contains(key); agPacket({key: key, value: value}).send(); return value; }; SharedPreferencesImpl.getInt.implementation = function(key, defValue) { var value = this.getInt(key, defValue); agPacket({key: key, defValue: defValue, value: value}).send(); return value; }; SharedPreferencesImpl.getFloat.implementation = function(key, defValue) { var value = this.getFloat(key, defValue); agPacket({key: key, defValue: defValue, value: value}).send(); return value; }; SharedPreferencesImpl.getLong.implementation = function(key, defValue) { var value = this.getLong(key, defValue); agPacket({key: key, defValue: defValue, value: value}).send(); return value; }; SharedPreferencesImpl.getBoolean.implementation = function(key, defValue) { var value = this.getBoolean(key, defValue); agPacket({key: key, defValue: defValue, value: value}).send(); return value; }; SharedPreferencesImpl.getString.implementation = function(key, defValue) { var value = this.getString(key, defValue); agPacket({key: key, defValue: defValue, value: value}).send(); return value; }; SharedPreferencesImpl.getStringSet.implementation = function(key, defValue) { var value = this.getStringSet(key, defValue); agPacket({key: key, defValue: defValue, value: value}).send(); return value; }; SharedPreferencesImpl_EditorImpl.putString.implementation = function(key, value) { agPacket({key: key, value: value}).send(); return this.putString(key,value); }; SharedPreferencesImpl_EditorImpl.putStringSet.implementation = function(key, values) { agPacket({key: key, values: values}).send(); return this.putStringSet(key,values); }; SharedPreferencesImpl_EditorImpl.putInt.implementation = function(key, value) { agPacket({key: key, value: value}).send(); return this.putInt(key,value); }; SharedPreferencesImpl_EditorImpl.putFloat.implementation = function(key, value) { agPacket({key: key, value: value}).send(); return this.putFloat(key,value); }; SharedPreferencesImpl_EditorImpl.putBoolean.implementation = function(key, value) { agPacket({key: key, value: value}).send(); return this.putBoolean(key,value); }; SharedPreferencesImpl_EditorImpl.putLong.implementation = function(key, value) { agPacket({key: key, value: value}).send(); return this.putLong(key,value); }; SharedPreferencesImpl_EditorImpl.remove.implementation = function(key) { agPacket({key: key}).send(); return this.remove(key); }; ================================================ FILE: libs/androguard/pentest/modules/framework/cordova.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING FRAMEWORK/CORDOVA.JS',{c: Color.Red}); var pluginManager = tryGetClass("org.apache.cordova.PluginManager"); if (pluginManager) { pluginManager.instantiatePlugin.implementation = function(pluginName){ agPacket({pluginName: pluginName}).send(); return this.instantiatePlugin(pluginName); } } ================================================ FILE: libs/androguard/pentest/modules/framework/flutter/disable_cert_chain_bypass_v7a.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING FRAMEWORK/FLUTTER/VERIFY_CERT_CHAIN_BYPASS_V7A.JS',{c: Color.Red}); // Based on nviso's article https://blogger.nviso.eu/2020/05/20/intercepting-flutter-traffic-on-android-x64/ var m = Process.findModuleByName("libflutter.so"); var pattern = "2d e9 f0 4f a3 b0 81 46 50 20 10 70 d9 f8 98 70 00 2f 4d d0 38 68 00 28 4a d0 78 68 0d 46 0d f1 08 0a 90 46 06 68 d1 e9 00 01"; function hook() { Memory.scan(m.base, m.size, pattern, { onMatch: function(address, size){ colorLog('[+] ssl_crypto_x509_session_verify_cert_chain found at: ' + address.toString(),{c: Color.Green}); colorLog('[+] Setting up hook.... ',{c: Color.Blue}); Interceptor.attach(address.add(0x1),{ onEnter: function(args){ colorLog('[+] Entering ssl_crypto_x509_session_verify_cert_chain ',{c: Color.Green}); }, onLeave: function(retval){ colorLog('\t[+] Initial Return Value: '+retval,{c: Color.Blue}); colorLog('\t[+] Returning True ',{c: Color.Red}); retval.replace(0x1); } }); }, onError: function(reason){ console.log('[!] There was an error scanning memory'); }, onComplete: function() { colorLog('[+] All Done... ',{c: Color.Blue}); } }); } try { colorLog("[+] Finding libflutter.so",{c: Color.Green}); Module.ensureInitialized("libflutter.so"); hook(); } catch(err) { console.log("libflutter.so module not loaded. Trying to manually load it.") Module.load("libflutter.so"); } ================================================ FILE: libs/androguard/pentest/modules/framework/flutter/disable_cert_chain_bypass_v8a.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING FRAMEWORK/FLUTTER/VERIFY_CERT_CHAIN_BYPASS_V8A.JS',{c: Color.Red}); // Based on nviso's article https://blogger.nviso.eu/2020/05/20/intercepting-flutter-traffic-on-android-x64/ function hook(){ var m = Process.findModuleByName("libflutter.so"); var pattern = "ff 03 05 d1 fd 7b 0f a9 fa 67 10 a9 f8 5f 11 a9 f6 57 12 a9 f4 4f 13 a9 08 0a 80 52 48 00 00 39 16 54 40 f9"; Memory.scan(m.base, m.size, pattern, { onMatch: function(address, size){ colorLog('[+] ssl_crypto_x509_session_verify_cert_chain found at: ' + address.toString(),{c: Color.Green}); colorLog('[+] Setting up hook.... ',{c: Color.Blue}); Interceptor.attach(address,{ onEnter: function(args){ colorLog('[+] Entering ssl_crypto_x509_session_verify_cert_chain ',{c: Color.Green}); }, onLeave: function(retval){ colorLog('\t[+] Initial Return Value: '+retval,{c: Color.Blue}); colorLog('\t[+] Returning True ',{c: Color.Red}); retval.replace(0x1); } }); }, onError: function(reason){ console.log('[!] There was an error scanning memory'); }, onComplete: function() { colorLog('[+] All Done... ',{c: Color.Blue}); } }); } try { colorLog("[+] Finding libflutter.so",{c: Color.Green}); Module.ensureInitialized("libflutter.so"); hook(); } catch(err) { console.log("libflutter.so module not loaded. Trying to manually load it.") Module.load("libflutter.so"); } ================================================ FILE: libs/androguard/pentest/modules/framework/flutter/disable_cert_chain_bypass_x86_64.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING FRAMEWORK/FLUTTER/VERIFY_CERT_CHAIN_BYPASS_X86_64.JS',{c: Color.Red}); // Based on nviso's article https://blogger.nviso.eu/2020/05/20/intercepting-flutter-traffic-on-android-x64/ function hook(){ var m = Process.findModuleByName("libflutter.so"); var pattern = "55 41 57 41 56 41 55 41 54 53 48 81 ec f8 00 00 00 c6 02 50 48 8b 9f a8 00 00 00 48 85 db 0f 84 10 01 00 00 48 83 3b 00 0f 84 06 01 00 00"; Memory.scan(m.base, m.size, pattern, { onMatch: function(address, size){ colorLog('[+] ssl_crypto_x509_session_verify_cert_chain found at: ' + address.toString(),{c: Color.Green}); colorLog('[+] Setting up hook.... ',{c: Color.Blue}); Interceptor.attach(address,{ onEnter: function(args){ colorLog('[+] Entering ssl_crypto_x509_session_verify_cert_chain ',{c: Color.Green}); }, onLeave: function(retval){ colorLog('\t[+] Initial Return Value: '+retval,{c: Color.Blue}); colorLog('\t[+] Returning True ',{c: Color.Red}); retval.replace(0x1); } }); }, onError: function(reason){ console.log('[!] There was an error scanning memory'); }, onComplete: function() { colorLog('[+] All Done... ',{c: Color.Blue}); } }); } try { colorLog("[+] Finding libflutter.so",{c: Color.Green}); Module.ensureInitialized("libflutter.so"); hook(); } catch(err) { console.log("libflutter.so module not loaded. Trying to manually load it.") Module.load("libflutter.so"); } ================================================ FILE: libs/androguard/pentest/modules/helpers/antidebug/binaries.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING HELPER/ANTIDEBUG/BINARIES.JS', {c: Color.Red}); var RootBinaries = ["su", "busybox", "supersu", "Superuser.apk", "KingoUser.apk", "KingoRoot.apk", "SuperSu.apk", "magisk", "otacerts.zip", "Kingroot.apk"]; var NativeFile = Java.use('java.io.File'); NativeFile.exists.implementation = function() { var name = NativeFile.getName.call(this); agPacket({name: name}).send(); var shouldFakeReturn = (RootBinaries.indexOf(name) > -1); if (shouldFakeReturn) { agSysPacket({information: "bypass", cmd: name}).send(); return false; } else { return this.exists.call(this); } }; NativeFile.$init.overload("java.lang.String").implementation = function(path){ agPacket({path: path}).send(); return NativeFile.$init.overload("java.lang.String").call(this, path); } NativeFile.$init.overload("java.io.File", "java.lang.String").implementation = function(fileObject, path){ agPacket({fileObject: fileObject.toString(), path: path}).send(); return NativeFile.$init.overload("java.io.File", "java.lang.String").call(this, fileObject, path); } NativeFile.$init.overload("java.lang.String", "java.lang.String").implementation = function(parent, path){ agPacket({parent: parent, path: path}).send(); return NativeFile.$init.overload("java.lang.String", "java.lang.String").call(this, parent, path); } NativeFile.$init.overload("java.net.URI").implementation = function(neturi){ agPacket({neturi: neturi.toString()}).send(); return NativeFile.$init.overload("java.net.URI").call(this, neturi); } Interceptor.attach(Module.findExportByName("libc.so", "fopen"), { onEnter: function(args) { var path = Memory.readCString(args[0]); if (path) { var spath = path; path = path.split("/"); var executable = path[path.length - 1]; agPacket({executable: executable, path: spath}).send(); var shouldFakeReturn = (RootBinaries.indexOf(executable) > -1); if (shouldFakeReturn) { Memory.writeUtf8String(args[0], "/notexists"); agSysPacket({information: "bypass", cmd: executable}).send(); } } }, onLeave: function(retval) { } }); ================================================ FILE: libs/androguard/pentest/modules/helpers/antidebug/debug.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING HELPER/ANTIDEBUG/DEBUG.JS',{c: Color.Red}); var antidebug = Java.use('android.os.Debug'); antidebug.isDebuggerConnected.implementation = function(){ agSysPacket({information: "overwriting is debugger connected"}).send(); return false; } ================================================ FILE: libs/androguard/pentest/modules/helpers/antidebug/environment.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING HELPER/ANTIDEBUG/ENVIRONMENT.JS',{c: Color.Red}); var a_activity = Java.use('android.app.Activity'); a_activity.isTaskRoot.implementation=function(){ agSysPacket({information: "overwriting isTaskRoot"}).send(); return true; } var hook = Java.use('android.provider.Settings$Secure'); var overloadCount1 = hook['getInt'].overloads.length; for (var i = 0; i < overloadCount1; i++) { hook['getInt'].overloads[i].implementation = function() { var retval = this['getInt'].apply(this, arguments); var param = arguments[1]; if(param === "development_settings_enabled" || param == "adb_enabled") { agSysPacket({information: "AntiDebug technique detected", param: param}).send(); return 0; } return retval; } } const STRINGS_TO_REPLACE = "frida"; const replaceLine = (text) => { if (text.indexOf("ro.build.tags=test-keys") > -1) { agSysPacket({information: "replaceLine bypass", match: "Bypass build.prop file read", text: text}).send(); return text.replace("ro.build.tags=test-keys", "ro.build.tags=release-keys"); } text.trim().toLowerCase().replace(STRINGS_TO_REPLACE, (match) => { agSysPacket({information: "replaceLine bypass", match: match, text: text}).send(); return text.replaceAll(match, getRandomNumberString(5, 20)); }); return text; } var RootProperties = { "ro.build.selinux": "0", "ro.debuggable": "0", "service.adb.root": "0", "ro.secure": "1" }; var RootPropertiesKeys = []; for (var k in RootProperties) RootPropertiesKeys.push(k); var String = Java.use('java.lang.String'); var SystemProperties = Java.use('android.os.SystemProperties'); var BufferedReader = Java.use('java.io.BufferedReader'); var StringBuffer = Java.use('java.lang.StringBuffer'); var loaded_classes = Java.enumerateLoadedClassesSync(); console.log("Loaded " + loaded_classes.length + " classes!"); var useKeyInfo = false; var KeyInfo = null; if (loaded_classes.indexOf('android.security.keystore.KeyInfo') != -1) { try { useKeyInfo = true; var KeyInfo = Java.use('android.security.keystore.KeyInfo'); } catch (err) { console.log("KeyInfo Hook failed: " + err); } } else { console.log("KeyInfo hook not loaded"); } if (useKeyInfo) { KeyInfo.isInsideSecureHardware.implementation = function() { agSysPacket({information: "bypass", details: "isInsideSecureHardware"}).send(); return true; } } String.contains.implementation = function(name) { if (name == "test-keys") { agSysPacket({information: "bypass", details: "Bypass test-keys check"}).send(); return false; } return this.contains.call(this, name); }; var get = SystemProperties.get.overload('java.lang.String'); get.implementation = function(name) { if (RootPropertiesKeys.indexOf(name) != -1) { agSysPacket({information: "bypass", name: name}).send(); return RootProperties[name]; } return this.get.call(this, name); }; BufferedReader.readLine.overloads[0].implementation = function() { var text = this.readLine.call(this); if (text !== null) { text = replaceLine(text); } return text; }; BufferedReader.readLine.overloads[1].implementation = function(boolean_) { var text = this.readLine(boolean_); if (text !== null) { text = replaceLine(text); } return text; }; /* Interceptor.attach(Module.findExportByName(null, '__system_property_get'), { onEnter: function (args) { this._name = args[0].readCString(); this._value = args[1]; colorLog("__system_property_get " + this._name, {c: Color.Red}); }, onLeave: function (retval) { console.log(JSON.stringify({ result_length: retval, name: this._name, val: this._value.readCString() })); } }); */ ================================================ FILE: libs/androguard/pentest/modules/helpers/antidebug/package.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING HELPER/ANTIDEBUG/PACKAGE.JS',{c: Color.Red}); var PackageManager = Java.use("android.app.ApplicationPackageManager"); var RootPackages = [ "com.noshufou.android.su", "com.noshufou.android.su.elite", "eu.chainfire.supersu", "com.koushikdutta.superuser", "com.thirdparty.superuser", "com.yellowes.su", "com.koushikdutta.rommanager", "com.koushikdutta.rommanager.license", "com.dimonvideo.luckypatcher", "com.chelpus.lackypatch", "com.ramdroid.appquarantine", "com.ramdroid.appquarantinepro", "com.devadvance.rootcloak", "com.devadvance.rootcloakplus", "de.robv.android.xposed.installer", "com.saurik.substrate", "com.zachspong.temprootremovejb", "com.amphoras.hidemyroot", "com.amphoras.hidemyrootadfree", "com.formyhm.hiderootPremium", "com.formyhm.hideroot", "me.phh.superuser", "eu.chainfire.supersu.pro", "com.kingouser.com", "com.android.vending.billing.InAppBillingService.COIN", "com.android.vending.billing.InAppBillingService.LUCK", "com.chelpus.luckypatcher", "com.blackmartalpha", "org.blackmart.market", "com.allinone.free", "com.repodroid.app", "org.creeplays.hack", "com.baseappfull.fwd", "com.zmapp", "com.dv.marketmod.installer", "org.mobilism.android", "com.android.wp.net.log", "com.android.camera.update", "cc.madkite.freedom", "com.solohsu.android.edxp.manager", "org.meowcat.edxposed.manager", "com.xmodgame", "com.cih.game_cih", "com.kingroot.kinguser", "com.charles.lpoqasert", "catch_.me_.if_.you_.can_", "com.topjohnwu.magisk", "com.kingo.root", "com.smedialink.oneclickroot", "com.zhiqupk.root.global", "com.alephzain.framaroot" ]; PackageManager.getPackageInfo.overloads[0].implementation = function(pname, flags) { agPacket({pname: pname, flags: flags}).send(); var shouldFakePackage = (RootPackages.indexOf(pname) > -1); if (shouldFakePackage) { agSysPacket({information: "bypass", package: pname}).send(); pname = "set.package.name.to.a.fake.one.so.we.can.bypass.it"; } return this.getPackageInfo.call(this, pname, flags); }; PackageManager.getPackageInfo.overloads[1].implementation = function(sname, flags) { agPacket({sname: sname, flags: flags}).send(); var shouldFakePackage = (RootPackages.indexOf(sname) > -1); if (shouldFakePackage) { agSysPacket({information: "bypass", package: sname}).send(); sname = "set.package.name.to.a.fake.one.so.we.can.bypass.it"; } return this.getPackageInfo.call(this, sname, flags); }; ================================================ FILE: libs/androguard/pentest/modules/helpers/antidebug/process.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING HELPER/ANTIDEBUG/PROCESS.JS',{c: Color.Red}); var fakeCmd = "justafakecommandthatcannotexistsusingthisshouldthowanexceptionwheneversuiscalled"; var loaded_classes = Java.enumerateLoadedClassesSync(); console.log("Loaded " + loaded_classes.length + " classes!"); var useProcessManager = false; console.log("loaded: " + loaded_classes.indexOf('java.lang.ProcessManager')); if (loaded_classes.indexOf('java.lang.ProcessManager') != -1) { try { useProcessManager = true; var ProcessManager = Java.use('java.lang.ProcessManager'); } catch (err) { console.log("ProcessManager Hook failed: " + err); } } else { console.log("ProcessManager hook not loaded"); } if (useProcessManager) { var ProcManExec = ProcessManager.exec.overload('[Ljava.lang.String;', '[Ljava.lang.String;', 'java.io.File', 'boolean'); var ProcManExecVariant = ProcessManager.exec.overload('[Ljava.lang.String;', '[Ljava.lang.String;', 'java.lang.String', 'java.io.FileDescriptor', 'java.io.FileDescriptor', 'java.io.FileDescriptor', 'boolean'); ProcManExec.implementation = function(cmd, env, workdir, redirectstderr) { agPacket({cmd: cmd}).send(); var fake_cmd = cmd; for (var i = 0; i < cmd.length; i = i + 1) { var tmp_cmd = cmd[i]; if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id") { var fake_cmd = ["grep"]; agSysPacket({information: "proc exec bypass", cmd: cmd}).send(); } if (tmp_cmd == "su") { var fake_cmd = [fakeCmd]; agSysPacket({information: "proc exec bypass" , cmd: cmd}).send(); } } return ProcManExec.call(this, fake_cmd, env, workdir, redirectstderr); }; ProcManExecVariant.implementation = function(cmd, env, directory, stdin, stdout, stderr, redirect) { agPacket({cmd: cmd}).send(); var fake_cmd = cmd; for (var i = 0; i < cmd.length; i = i + 1) { var tmp_cmd = cmd[i]; if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id") { var fake_cmd = ["grep"]; agSysPacket({information: "proc exec variant bypass", cmd: cmd}).send(); } if (tmp_cmd == "su") { var fake_cmd = [fakeCmd]; agSysPacket({information: "proc exec variant bypass", cmd: cmd}).send(); } } return ProcManExecVariant.call(this, fake_cmd, env, directory, stdin, stdout, stderr, redirect); }; } Interceptor.attach(Module.findExportByName("libc.so", "system"), { onEnter: function(args) { var cmd = Memory.readCString(args[0]); agPacket({cmd: cmd}).send(); if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id") { agSysPacket({information: "system bypass", cmd: cmd}).send(); Memory.writeUtf8String(args[0], "grep"); } if (cmd == "su") { agSysPacket({information: "system bypass", cmd: cmd}).send(); Memory.writeUtf8String(args[0], fakeCmd); } }, onLeave: function(retval) { } }); var ProcessBuilder = Java.use('java.lang.ProcessBuilder'); var executeCommand = ProcessBuilder.command.overload('java.util.List'); ProcessBuilder.start.implementation = function() { var cmd = this.command.call(this); var shouldModifyCommand = false; agPacket({cmd: cmd}).send(); for (var i = 0; i < cmd.size(); i = i + 1) { var tmp_cmd = cmd.get(i).toString(); if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd.indexOf("mount") != -1 || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd.indexOf("id") != -1) { shouldModifyCommand = true; } } if (shouldModifyCommand) { agSysPacket({information: "process builder bypass", cmd: cmd}).send(); this.command.call(this, ["grep"]); return this.start.call(this); } if (cmd.indexOf("su") != -1) { agSysPacket({information: "process builder bypass", cmd: cmd}).send(); this.command.call(this, [fakeCmd]); return this.start.call(this); } return this.start.call(this); }; var Runtime = Java.use('java.lang.Runtime'); var exec = Runtime.exec.overload('[Ljava.lang.String;'); var exec1 = Runtime.exec.overload('java.lang.String'); var exec2 = Runtime.exec.overload('java.lang.String', '[Ljava.lang.String;'); var exec3 = Runtime.exec.overload('[Ljava.lang.String;', '[Ljava.lang.String;'); var exec4 = Runtime.exec.overload('[Ljava.lang.String;', '[Ljava.lang.String;', 'java.io.File'); var exec5 = Runtime.exec.overload('java.lang.String', '[Ljava.lang.String;', 'java.io.File'); exec5.implementation = function(cmd, env, dir) { agPacket({cmd: cmd, env: env, dir: dir}).send(); if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id" || cmd == "sh") { agSysPacket({information: "exec5 bypass", cmd: cmd}).send(); return exec1.call(this, "grep"); } if (cmd == "su") { agSysPacket({information: "exec5 bypass", cmd: cmd}).send(); return exec1.call(this, fakeCmd); } return exec5.call(this, cmd, env, dir); }; exec4.implementation = function(cmdarr, env, file) { agPacket({cmdarr: cmdarr, env: env, file: file}).send(); for (var i = 0; i < cmdarr.length; i = i + 1) { var tmp_cmd = cmdarr[i]; if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id" || tmp_cmd == "sh") { agSysPacket({information: "exec4 bypass", cmd: cmd}).send(); return exec1.call(this, "grep"); } if (tmp_cmd == "su") { agSysPacket({information: "exec4 bypass", cmd: cmd}).send(); return exec1.call(this, fakeCmd); } } return exec4.call(this, cmdarr, env, file); }; exec3.implementation = function(cmdarr, envp) { agPacket({cmdarr: cmdarr, envp: envp}).send(); for (var i = 0; i < cmdarr.length; i = i + 1) { var tmp_cmd = cmdarr[i]; if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id" || tmp_cmd == "sh") { agSysPacket({information: "exec3 bypass", cmd: cmd}).send(); return exec1.call(this, "grep"); } if (tmp_cmd == "su") { agSysPacket({information: "exec3 bypass", cmd: cmd}).send(); return exec1.call(this, fakeCmd); } } return exec3.call(this, cmdarr, envp); }; exec2.implementation = function(cmd, env) { agPacket({cmd: cmd, env: env}).send(); if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id" || cmd == "sh") { agSysPacket({information: "exec2 bypass", cmd: cmd}).send(); return exec1.call(this, "grep"); } if (cmd == "su") { agSysPacket({information: "exec2 bypass", cmd: cmd}).send(); return exec1.call(this, fakeCmd); } return exec2.call(this, cmd, env); }; exec1.implementation = function(cmd) { agPacket({cmd: cmd}).send(); if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id" || cmd == "sh") { agSysPacket({information: "exec1 bypass", cmd: cmd}).send(); return exec1.call(this, "grep"); } if (cmd == "su") { agSysPacket({information: "exec1 bypass", cmd: cmd}).send(); return exec1.call(this, fakeCmd); } return exec1.call(this, cmd); }; exec.implementation = function(cmd) { agPacket({cmd: cmd}).send(); for (var i = 0; i < cmd.length; i = i + 1) { var tmp_cmd = cmd[i]; if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id" || tmp_cmd == "sh") { agSysPacket({information: "exec bypass", cmd: cmd}).send(); return exec1.call(this, "grep"); } if (tmp_cmd == "su") { agSysPacket({information: "exec bypass", cmd: cmd}).send(); return exec.call(this, ["which", fakeCmd]); } } return exec.call(this, cmd); }; /* TO IMPLEMENT: Exec Family int execl(const char *path, const char *arg0, ..., const char *argn, (char *)0); int execle(const char *path, const char *arg0, ..., const char *argn, (char *)0, char *const envp[]); int execlp(const char *file, const char *arg0, ..., const char *argn, (char *)0); int execlpe(const char *file, const char *arg0, ..., const char *argn, (char *)0, char *const envp[]); int execv(const char *path, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); int execvp(const char *file, char *const argv[]); int execvpe(const char *file, char *const argv[], char *const envp[]); */ ================================================ FILE: libs/androguard/pentest/modules/helpers/dump/dexdump.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets /* * Author: hluwa * HomePage: https://github.com/hluwa * CreatedTime: 2020/1/7 20:44 * */ colorLog('[+] LOADING HELPERS/DUMP/DEXDUMP.JS',{c: Color.Red}); var enable_deep_search = true; function verify_by_maps(dexptr, mapsptr) { var maps_offset = dexptr.add(0x34).readUInt(); var maps_size = mapsptr.readUInt(); for (var i = 0; i < maps_size; i++) { var item_type = mapsptr.add(4 + i * 0xC).readU16(); if (item_type === 4096) { var map_offset = mapsptr.add(4 + i * 0xC + 8).readUInt(); if (maps_offset === map_offset) { return true; } } } return false; } function verify(dexptr, range, enable_verify_maps) { if (range != null) { var range_end = range.base.add(range.size); // verify header_size if (dexptr.add(0x70) > range_end) { return false; } // verify file_size var dex_size = dexptr.add(0x20).readUInt(); if (dexptr.add(dex_size) > range_end) { return false; } if (enable_verify_maps) { var maps_offset = dexptr.add(0x34).readUInt(); if (maps_offset === 0) { return false } var maps_address = dexptr.add(maps_offset); if (maps_address > range_end) { return false } var maps_size = maps_address.readUInt(); if (maps_size < 2 || maps_size > 50) { return false } var maps_end = maps_address.add(maps_size * 0xC + 4); if (maps_end < range.base || maps_end > range_end) { return false } return verify_by_maps(dexptr, maps_address) } else { return dexptr.add(0x3C).readUInt() === 0x70; } } } rpc.exports = { memorydump: function memorydump(address, size) { return new NativePointer(address).readByteArray(size); }, switchmode: function switchmode(bool){ enable_deep_search = bool; }, scandex: function scandex() { var result = []; Process.enumerateRanges('r--').forEach(function (range) { try { Memory.scanSync(range.base, range.size, "64 65 78 0a 30 ?? ?? 00").forEach(function (match) { if (range.file && range.file.path && (// range.file.path.startsWith("/data/app/") || range.file.path.startsWith("/data/dalvik-cache/") || range.file.path.startsWith("/system/"))) { return; } if (verify(match.address, range, false)) { var dex_size = match.address.add(0x20).readUInt(); result.push({ "addr": match.address, "size": dex_size }); } }); if (enable_deep_search) { Memory.scanSync(range.base, range.size, "70 00 00 00").forEach(function (match) { var dex_base = match.address.sub(0x3C); if (dex_base < range.base) { return } if (dex_base.readCString(4) != "dex\n" && verify(dex_base, range, true)) { var dex_size = dex_base.add(0x20).readUInt(); result.push({ "addr": dex_base, "size": dex_size }); } }) } else { if (range.base.readCString(4) != "dex\n" && verify(range.base, range, true)) { var dex_size = range.base.add(0x20).readUInt(); result.push({ "addr": range.base, "size": dex_size }); } } } catch (e) { } }); return result; } }; ================================================ FILE: libs/androguard/pentest/modules/helpers/pinning/ssl.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING HELPERS/PINNING/SSL.JS',{c: Color.Red}); // Bypass TrustManager pinning function bypass_trustmanager_pinning() { var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager'); var SSLContext = Java.use('javax.net.ssl.SSLContext'); // TrustManager (Android < 7) var TrustManager = Java.registerClass({ // Implement a custom TrustManager name: 'dev.asd.test.TrustManager', implements: [X509TrustManager], methods: { checkClientTrusted: function (chain, authType) {}, checkServerTrusted: function (chain, authType) {}, getAcceptedIssuers: function () {return []; } } }); // Prepare the TrustManager array to pass to SSLContext.init() var TrustManagers = [TrustManager.$new()]; // Get a handle on the init() on the SSLContext class var SSLContext_init = SSLContext.init.overload( '[Ljavax.net.ssl.KeyManager;', '[Ljavax.net.ssl.TrustManager;', 'java.security.SecureRandom'); try { // Override the init method, specifying the custom TrustManager SSLContext_init.implementation = function(keyManager, trustManager, secureRandom) { agSysPacket({information: "trustmanager pinning", keyManager: keyManager, trustManager: trustManager, secureRandom: secureRandom}).send(); SSLContext_init.call(this, keyManager, TrustManagers, secureRandom); }; agSysPacket({information: "trustmanager hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: TrustManager (Android < 7) pinner not found"}).send(); } } // OkHTTPv3 (4 bypass) function bypass_okhttp3_pinning() { try { var okhttp3_Activity = Java.use('okhttp3.CertificatePinner'); } catch (err) { agSysPacket({information: "error: OkHTTPv3 pinner not found"}).send(); } try { okhttp3_Activity["check$okhttp"].implementation = function (str) { agSysPacket({information: "Bypassing OkHTTPv3: {1} " + str}).send(); return; }; agSysPacket({information: "OkHTTPv3: {1} hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: OkHTTPv3: {1} not found"}).send(); } try { okhttp3_Activity.check.overload('java.lang.String', 'java.util.List').implementation = function (str) { agSysPacket({information: "Bypassing OkHTTPv3 {2}: " + str}).send(); return; }; agSysPacket({information: "OkHTTPv3: {2} hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: OkHTTPv3: {2} not found"}).send(); } try { // This method of CertificatePinner.check could be found in some old Android app okhttp3_Activity.check.overload('java.lang.String', 'java.security.cert.Certificate').implementation = function (str) { agSysPacket({information: "Bypassing OkHTTPv3 {3}: " + str}).send(); return; }; agSysPacket({information: "OkHTTPv3: {3} hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: OkHTTPv3: {3} not found"}).send(); } try { okhttp3_Activity.check$okhttp.overload('java.lang.String', 'kotlin.jvm.functions.Function0').implementation = function(a, b) { agSysPacket({information: "Bypassing OkHTTPv3 {4}: " + a}).send(); return; }; agSysPacket({information: "OkHTTPv3: {4} hooked installed"}).send(); } catch(err) { agSysPacket({information: "error: OkHTTPv3: {4} not found"}).send(); } } function bypass_trustkit_pinning() { try { var trustkit_Activity = Java.use('com.datatheorem.android.trustkit.pinning.OkHostnameVerifier'); trustkit_Activity.verify.overload('java.lang.String', 'javax.net.ssl.SSLSession').implementation = function (str) { agSysPacket({information: "Bypassing Trustkit {1}: " + str}).send(); return true; }; agSysPacket({information: "Trustkit {1} hooked installed"}).send(); trustkit_Activity.verify.overload('java.lang.String', 'java.security.cert.X509Certificate').implementation = function (str) { agSysPacket({information: "Bypassing Trustkit {2}: " + str}).send(); return true; }; agSysPacket({information: "Trustkit {2} hooked installed"}).send(); var trustkit_PinningTrustManager = Java.use('com.datatheorem.android.trustkit.pinning.PinningTrustManager'); trustkit_PinningTrustManager.checkServerTrusted.overload('[Ljava.security.cert.X509Certificate;', 'java.lang.String').implementation = function(chain, authType) { agSysPacket({information: "Bypassing Trustkit {3}: " + chain}).send(); }; agSysPacket({information: "Trustkit {3} hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: Trustkit pinner not found"}).send(); } } function bypass_trustmanagerimpl_pinning(){ try { // Bypass TrustManagerImpl (Android > 7) {1} var array_list = Java.use("java.util.ArrayList"); var TrustManagerImpl_Activity_1 = Java.use('com.android.org.conscrypt.TrustManagerImpl'); TrustManagerImpl_Activity_1.checkTrustedRecursive.implementation = function(certs, ocspData, tlsSctData, host, clientAuth, untrustedChain, trustAnchorChain, used) { agSysPacket({information: "Bypassing TrustManagerImpl (Android > 7) checkTrustedRecursive check: "+ host}).send(); return array_list.$new(); }; agSysPacket({information: "TrustManagerImpl checkTrustedRecursive hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: TrustManagerImpl (Android > 7) checkTrustedRecursive check not found"}).send(); } // TrustManagerImpl (Android > 7) try { var TrustManagerImpl = Java.use('com.android.org.conscrypt.TrustManagerImpl'); TrustManagerImpl.verifyChain.implementation = function (untrustedChain, trustAnchorChain, host, clientAuth, ocspData, tlsSctData) { agSysPacket({information: "Bypassing TrustManagerImpl verifyChain (Android > 7): ' + host): "+ host}).send(); return untrustedChain; }; agSysPacket({information: "TrustManagerImpl verifyChain hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: TrustManagerImpl (Android > 7) verifyChain pinner not found"}).send(); } } function bypass_appcelerator_pinning() { try { var appcelerator_PinningTrustManager = Java.use('appcelerator.https.PinningTrustManager'); appcelerator_PinningTrustManager.checkServerTrusted.implementation = function () { agSysPacket({information: "Bypassing Appcelerator PinningTrustManager"}).send(); return; }; agSysPacket({information: "Appcelerator hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: Appcelerator PinningTrustManager pinner not found"}).send(); } } function bypass_conscript_pinning() { try { var OpenSSLSocketImpl = Java.use('com.android.org.conscrypt.OpenSSLSocketImpl'); OpenSSLSocketImpl.verifyCertificateChain.implementation = function (certRefs, JavaObject, authMethod) { agSysPacket({information: "Bypassing OpenSSLSocketImpl Conscrypt"}).send(); }; agSysPacket({information: "OpenSSLSocketImpl hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: OpenSSLSocketImpl Conscrypt pinner not found"}).send(); } // OpenSSLEngineSocketImpl Conscrypt try { var OpenSSLEngineSocketImpl_Activity = Java.use('com.android.org.conscrypt.OpenSSLEngineSocketImpl'); OpenSSLSocketImpl_Activity.verifyCertificateChain.overload('[Ljava.lang.Long;', 'java.lang.String').implementation = function (str1, str2) { agSysPacket({information: "Bypassing OpenSSLEngineSocketImpl Conscrypt: " + str2}).send(); }; agSysPacket({information: "OpenSSLEngineSocketImpl hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: OpenSSLEngineSocketImpl Conscrypt pinner not found"}).send(); } try { var conscrypt_CertPinManager_Activity = Java.use('com.android.org.conscrypt.CertPinManager'); conscrypt_CertPinManager_Activity.isChainValid.overload('java.lang.String', 'java.util.List').implementation = function (str) { agSysPacket({information: "Bypassing Conscrypt CertPinManager: " + str}).send(); return true; }; agSysPacket({information: "Conscrypt hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: Conscrypt CertPinManager pinner not found"}).send(); } } function bypass_apacheharmony_pinning() { try { var OpenSSLSocketImpl_Harmony = Java.use('org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl'); OpenSSLSocketImpl_Harmony.verifyCertificateChain.implementation = function (asn1DerEncodedCertificateChain, authMethod) { agSysPacket({information: "Bypassing OpenSSLSocketImpl Apache Harmony"}).send(); }; agSysPacket({information: "OpenSSLSocketImpl Apache Harmony hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: OpenSSLSocketImpl Apache Harmony pinner not found"}).send(); } } function bypass_phonegapp_pinning() { // PhoneGap sslCertificateChecker (https://github.com/EddyVerbruggen/SSLCertificateChecker-PhoneGap-Plugin) try { var phonegap_Activity = Java.use('nl.xservices.plugins.sslCertificateChecker'); phonegap_Activity.execute.overload('java.lang.String', 'org.json.JSONArray', 'org.apache.cordova.CallbackContext').implementation = function (str) { agSysPacket({information: "Bypassing PhoneGap sslCertificateChecker: " + str}).send(); return true; }; agSysPacket({information: "PhoneGap sslCertificateChecker hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: PhoneGap sslCertificateChecker pinner not found"}).send(); } } function bypass_ibm_pinning() { // IBM MobileFirst pinTrustedCertificatePublicKey (double bypass) try { var WLClient_Activity = Java.use('com.worklight.wlclient.api.WLClient'); WLClient_Activity.getInstance().pinTrustedCertificatePublicKey.overload('java.lang.String').implementation = function (cert) { agSysPacket({information: "Bypassing IBM MobileFirst pinTrustedCertificatePublicKey {1}: " + cert}).send(); return; }; agSysPacket({information: "IBM MobileFirst pinTrustedCertificatePublicKey hooked installed"}).send(); WLClient_Activity.getInstance().pinTrustedCertificatePublicKey.overload('[Ljava.lang.String;').implementation = function (cert) { agSysPacket({information: "Bypassing IBM MobileFirst pinTrustedCertificatePublicKey {2}: " + cert}).send(); return; }; agSysPacket({information: "IBM MobileFirst pinTrustedCertificatePublicKey hooked installed"}).send(); } catch (err) { agSysPacket({information: "error: IBM MobileFirst pinTrustedCertificatePublicKey pinner not found"}).send(); } } function bypass_ibmworklight_pinning() { // IBM WorkLight (ancestor of MobileFirst) HostNameVerifierWithCertificatePinning (quadruple bypass) try { var worklight_Activity = Java.use('com.worklight.wlclient.certificatepinning.HostNameVerifierWithCertificatePinning'); worklight_Activity.verify.overload('java.lang.String', 'javax.net.ssl.SSLSocket').implementation = function (str) { agSysPacket({information: "Bypassing IBM WorkLight HostNameVerifierWithCertificatePinning {1}: " + str}).send(); return; }; worklight_Activity.verify.overload('java.lang.String', 'java.security.cert.X509Certificate').implementation = function (str) { agSysPacket({information: "Bypassing IBM WorkLight HostNameVerifierWithCertificatePinning {2}: " + str}).send(); return; }; worklight_Activity.verify.overload('java.lang.String', '[Ljava.lang.String;', '[Ljava.lang.String;').implementation = function (str) { agSysPacket({information: "Bypassing IBM WorkLight HostNameVerifierWithCertificatePinning {3}: " + str}).send(); return; }; worklight_Activity.verify.overload('java.lang.String', 'javax.net.ssl.SSLSession').implementation = function (str) { agSysPacket({information: "Bypassing IBM WorkLight HostNameVerifierWithCertificatePinning {4}: " + str}).send(); return true; }; } catch (err) { agSysPacket({information: "error: IBM WorkLight HostNameVerifierWithCertificatePinning pinner not found"}).send(); } } function bypass_cwac_pinning() { // CWAC-Netsecurity (unofficial back-port pinner for Android < 4.2) CertPinManager try { var cwac_CertPinManager_Activity = Java.use('com.commonsware.cwac.netsecurity.conscrypt.CertPinManager'); cwac_CertPinManager_Activity.isChainValid.overload('java.lang.String', 'java.util.List').implementation = function (str) { agSysPacket({information: "Bypassing CWAC-Netsecurity CertPinManager: " + str}).send(); return true; }; } catch (err) { agSysPacket({information: "error: CWAC-Netsecurity CertPinManager pinner not found"}).send(); } } function bypass_netty_pinning() { // Netty FingerprintTrustManagerFactory try { var netty_FingerprintTrustManagerFactory = Java.use('io.netty.handler.ssl.util.FingerprintTrustManagerFactory'); //NOTE: sometimes this below implementation could be useful //var netty_FingerprintTrustManagerFactory = Java.use('org.jboss.netty.handler.ssl.util.FingerprintTrustManagerFactory'); netty_FingerprintTrustManagerFactory.checkTrusted.implementation = function (type, chain) { agSysPacket({information: "Bypassing Netty FingerprintTrustManagerFactory"}).send(); }; } catch (err) { agSysPacket({information: "error: Netty FingerprintTrustManagerFactory pinner not found"}).send(); } } function bypass_worklight_pinning() { // Worklight Androidgap WLCertificatePinningPlugin try { var androidgap_WLCertificatePinningPlugin_Activity = Java.use('com.worklight.androidgap.plugin.WLCertificatePinningPlugin'); androidgap_WLCertificatePinningPlugin_Activity.execute.overload('java.lang.String', 'org.json.JSONArray', 'org.apache.cordova.CallbackContext').implementation = function (str) { agSysPacket({information: "Bypassing Worklight Androidgap WLCertificatePinningPlugin: " + str}).send(); return true; }; } catch (err) { agSysPacket({information: "error: Worklight Androidgap WLCertificatePinningPlugin pinner not found"}).send(); } } function bypass_squareup_pinning() { try { var Squareup_CertificatePinner_Activity = Java.use('com.squareup.okhttp.CertificatePinner'); Squareup_CertificatePinner_Activity.check.overload('java.lang.String', 'java.security.cert.Certificate').implementation = function (str1, str2) { agSysPacket({information: "Bypassing Squareup CertificatePinner {1}: " + str1}).send(); return; }; Squareup_CertificatePinner_Activity.check.overload('java.lang.String', 'java.util.List').implementation = function (str1, str2) { agSysPacket({information: "Bypassing Squareup CertificatePinner {2}: " + str1}).send(); return; }; } catch (err) { agSysPacket({information: "error: Squareup CertificatePinner pinner not found"}).send(); } try { var Squareup_OkHostnameVerifier_Activity = Java.use('com.squareup.okhttp.internal.tls.OkHostnameVerifier'); Squareup_OkHostnameVerifier_Activity.verify.overload('java.lang.String', 'java.security.cert.X509Certificate').implementation = function (str1, str2) { agSysPacket({information: "Bypassing Squareup OkHostnameVerifier {1}: " + str1}).send(); return true; }; Squareup_OkHostnameVerifier_Activity.verify.overload('java.lang.String', 'javax.net.ssl.SSLSession').implementation = function (str1, str2) { agSysPacket({information: "Bypassing Squareup OkHostnameVerifier {2}: " + str1}).send(); return true; }; } catch (err) { agSysPacket({information: "error: Squareup OkHostnameVerifier pinner not found"}).send(); } } function bypass_webview_pinning() { try { // Bypass WebViewClient {1} (deprecated from Android 6) var AndroidWebViewClient_Activity_1 = Java.use('android.webkit.WebViewClient'); AndroidWebViewClient_Activity_1.onReceivedSslError.overload('android.webkit.WebView', 'android.webkit.SslErrorHandler', 'android.net.http.SslError').implementation = function(obj1, obj2, obj3) { agSysPacket({information: "Bypassing Android WebViewClient check {1}"}).send(); }; } catch (err) { agSysPacket({information: "error: Android WebViewClient {1} check not found"}).send(); } try { // Bypass WebViewClient {2} var AndroidWebViewClient_Activity_2 = Java.use('android.webkit.WebViewClient'); AndroidWebViewClient_Activity_2.onReceivedSslError.overload('android.webkit.WebView', 'android.webkit.WebResourceRequest', 'android.webkit.WebResourceError').implementation = function(obj1, obj2, obj3) { agSysPacket({information: "Bypassing Android WebViewClient check {2}"}).send(); }; } catch (err) { agSysPacket({information: "error: Android WebViewClient {2} check not found"}).send(); } try { // Bypass WebViewClient {3} var AndroidWebViewClient_Activity_3 = Java.use('android.webkit.WebViewClient'); AndroidWebViewClient_Activity_3.onReceivedError.overload('android.webkit.WebView', 'int', 'java.lang.String', 'java.lang.String').implementation = function(obj1, obj2, obj3, obj4) { agSysPacket({information: "Bypassing Android WebViewClient check {3}"}).send(); }; } catch (err) { agSysPacket({information: "error: Android WebViewClient {3} check not found"}).send(); } try { // Bypass WebViewClient {4} var AndroidWebViewClient_Activity_4 = Java.use('android.webkit.WebViewClient'); AndroidWebViewClient_Activity_4.onReceivedError.overload('android.webkit.WebView', 'android.webkit.WebResourceRequest', 'android.webkit.WebResourceError').implementation = function(obj1, obj2, obj3) { agSysPacket({information: "Bypassing Android WebViewClient check {4}"}).send(); }; } catch (err) { agSysPacket({information: "error: Android WebViewClient {4} check not found"}).send(); } } function bypass_cordova_pinning() { try { var CordovaWebViewClient_Activity = Java.use('org.apache.cordova.CordovaWebViewClient'); CordovaWebViewClient_Activity.onReceivedSslError.overload('android.webkit.WebView', 'android.webkit.SslErrorHandler', 'android.net.http.SslError').implementation = function (obj1, obj2, obj3) { agSysPacket({information: "Bypassing Apache Cordova WebViewClient"}).send(); obj3.proceed(); }; } catch (err) { agSysPacket({information: "error: Apache Cordova WebViewClient pinner not found"}).send(); } } function bypass_boye_pinning() { try { var boye_AbstractVerifier = Java.use('ch.boye.httpclientandroidlib.conn.ssl.AbstractVerifier'); boye_AbstractVerifier.verify.implementation = function (host, ssl) { agSysPacket({information: "Bypassing Boye AbstractVerifier: " + host}).send(); }; } catch (err) { agSysPacket({information: "error: Boye AbstractVerifier pinner not found"}).send(); } } function bypass_apache_pinning() { try { var apache_AbstractVerifier = Java.use('org.apache.http.conn.ssl.AbstractVerifier'); apache_AbstractVerifier.verify.implementation = function(a, b, c, d) { agSysPacket({information: "Bypassing Apache AbstractVerifier check: " + a}).send(); return; }; } catch (err) { agSysPacket({information: "error: Apache AbstractVerifier check not found"}).send(); } } function bypass_chromecronet_pinning() { try { var CronetEngineBuilderImpl_Activity = Java.use("org.chromium.net.impl.CronetEngineBuilderImpl"); // Setting argument to TRUE (default is TRUE) to disable Public Key pinning for local trust anchors CronetEngine_Activity.enablePublicKeyPinningBypassForLocalTrustAnchors.overload('boolean').implementation = function(a) { agSysPacket({information: "Bypassing Chromium Cronet {1}"}).send(); var cronet_obj_1 = CronetEngine_Activity.enablePublicKeyPinningBypassForLocalTrustAnchors.call(this, true); return cronet_obj_1; }; // Bypassing Chromium Cronet pinner CronetEngine_Activity.addPublicKeyPins.overload('java.lang.String', 'java.util.Set', 'boolean', 'java.util.Date').implementation = function(hostName, pinsSha256, includeSubdomains, expirationDate) { agSysPacket({information: "Bypassing Chromium Cronet {2}"}).send(); var cronet_obj_2 = CronetEngine_Activity.addPublicKeyPins.call(this, hostName, pinsSha256, includeSubdomains, expirationDate); return cronet_obj_2; }; } catch (err) { agSysPacket({information: "error: Chromium Cronet pinner not found"}).send(); } } function bypass_flutter_pinning() { try { // Bypass HttpCertificatePinning.check {1} var HttpCertificatePinning_Activity = Java.use('diefferson.http_certificate_pinning.HttpCertificatePinning'); HttpCertificatePinning_Activity.checkConnexion.overload("java.lang.String", "java.util.List", "java.util.Map", "int", "java.lang.String").implementation = function (a, b, c ,d, e) { agSysPacket({information: "Bypassing Flutter HttpCertificatePinning :" + a}).send(); return true; }; } catch (err) { agSysPacket({information: "error: Flutter HttpCertificatePinning pinner not found"}).send(); } try { // Bypass SslPinningPlugin.check {2} var SslPinningPlugin_Activity = Java.use('com.macif.plugin.sslpinningplugin.SslPinningPlugin'); SslPinningPlugin_Activity.checkConnexion.overload("java.lang.String", "java.util.List", "java.util.Map", "int", "java.lang.String").implementation = function (a, b, c ,d, e) { agSysPacket({information: "Bypassing Flutter SslPinningPlugin :" + a}).send(); return true; }; } catch (err) { agSysPacket({information: "error: Flutter SslPinningPlugin pinner not found"}).send(); } } function rudimentaryFix(typeName) { // This is a improvable rudimentary fix, if not works you can patch it manually if (typeName === undefined){ return; } else if (typeName === 'boolean') { return true; } else { return null; } } // Dynamic SSLPeerUnverifiedException Patcher // // An useful technique to bypass SSLPeerUnverifiedException failures raising // // when the Android app uses some uncommon SSL Pinning methods or an heavily // // code obfuscation. Inspired by an idea of: https://github.com/httptoolkit // /////////////////////////////////////////////////////////////////////////////// function bypass_sslpeerunverifiedexception_pinning() { try { var UnverifiedCertError = Java.use('javax.net.ssl.SSLPeerUnverifiedException'); UnverifiedCertError.$init.implementation = function (str) { console.log('Unexpected SSLPeerUnverifiedException occurred, trying to patch it dynamically..'); try { var stackTrace = Java.use('java.lang.Thread').currentThread().getStackTrace(); var exceptionStackIndex = stackTrace.findIndex(stack => stack.getClassName() === "javax.net.ssl.SSLPeerUnverifiedException" ); // Retrieve the method raising the SSLPeerUnverifiedException var callingFunctionStack = stackTrace[exceptionStackIndex + 1]; var className = callingFunctionStack.getClassName(); var methodName = callingFunctionStack.getMethodName(); var callingClass = Java.use(className); var callingMethod = callingClass[methodName]; console.log('Attempting to bypass uncommon SSL Pinning method on: '+className+'.'+methodName + '->' + callingClass + ' ' + callingMethod); // Skip it when already patched by Frida if (callingMethod.implementation) { console.log("Already patched"); return; } // Trying to patch the uncommon SSL Pinning method via implementation var returnTypeName = callingMethod.returnType.type; callingMethod.implementation = function() { console.log("Automatic patch"); rudimentaryFix(returnTypeName); }; } catch (e) { // Dynamic patching via implementation does not works, then trying via function overloading //console.log('[!] The uncommon SSL Pinning method has more than one overload); if (String(e).includes(".overload")) { var splittedList = String(e).split(".overload"); for (let i=2; i 12) intent1.getParcelableExtra.overload('java.lang.String', 'java.lang.Class').implementation = function(name,clazz){ let ret = this.getParcelableExtra(name,clazz); agPacket({intent: dumpIntent(this), name: name, ret: ret}).send(); return ret; } intent1.getBooleanExtra.implementation = function(name, value){ var ret = this.getBooleanExtra(name,value); agPacket({intent: dumpIntent(this), ret: ret, name: name, value: value}).send(); return ret; } intent1.getBundleExtra.implementation = function(bundlename){ agPacket({intent: dumpIntent(this), bundlename: bundlename}).send(); return this.getBundleExtra(bundlename); } intent1.getByteArrayExtra.implementation = function(name){ var ret = this.getByteArrayExtra(name); agPacket({intent: dumpIntent(this), ret: ret, name: name}).send(); return ret; } intent1.getByteExtra.implementation = function(name,value){ var ret = this.getByteExtra(name,value); agPacket({intent: dumpIntent(this), ret: ret, name: name, value: value}).send(); return ret; } intent1.getCharArrayExtra.implementation = function(name){ var ret = this.getCharArrayExtra(name); agPacket({intent: dumpIntent(this), ret: ret, name: name}).send(); return ret; } intent1.getCharExtra.implementation = function(name,value){ var ret = this.getCharExtra(name, value); agPacket({intent: dumpIntent(this), ret: ret, name: name, value: value}).send(); return ret; } intent1.getData.implementation = function(){ var ret = this.getData(); agPacket({intent: dumpIntent(this), ret: ret}).send(); return ret; } intent1.getDataString.implementation = function(){ var ret = this.getDataString(); agPacket({intent: dumpIntent(this), ret: ret}).send(); return ret; } intent1.getDoubleArrayExtra.implementation = function(name){ var ret = this.getDoubleArrayExtra(name); agPacket({intent: dumpIntent(this), ret: ret, name: name}).send(); return ret; } intent1.getDoubleExtra.implementation = function(name,value){ var ret = this.getDoubleExtra(name,value); agPacket({intent: dumpIntent(this), ret: ret, name: name, value: value}).send(); return ret; } intent1.getStringExtra.implementation = function(name){ var ret = this.getStringExtra(name); agPacket({intent: dumpIntent(this), ret: ret, name: name}).send(); return ret; } intent1.getPackage.implementation = function(){ var ret = this.getPackage(); agPacket({intent: dumpIntent(this), ret: ret}).send(); return ret; } ================================================ FILE: libs/androguard/pentest/modules/intents/intents_creation.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING INTENTS/INTENTS_CREATION.JS',{c: Color.Red}); var intent = Java.use('android.content.Intent'); if (intent.$init) { intent.setClassName.overload('java.lang.String', 'java.lang.String').implementation = function( packageName, className){ agPacket({intent: dumpIntent(this), packageName: packageName, className: className}).send(); return this.setClassName(packageName,className); } intent.putExtra.overload('java.lang.String', '[I').implementation = function(name, intB){ agPacket({intent: dumpIntent(this), name: name, intB: intB}).send(); return this.putExtra(name, intB); } intent.putExtra.overload('java.lang.String', '[D').implementation = function(name, doubleD){ agPacket({intent: dumpIntent(this), name: name, doubleD: doubleD}).send(); return this.putExtra(name,doubleD); } intent.putExtra.overload('java.lang.String', '[F').implementation = function(name, floatF){ agPacket({intent: dumpIntent(this), name: name, floatF: floatF}).send(); return this.putExtra(name,floatF); } intent.putExtra.overload('java.lang.String', '[B').implementation = function(name, byteB){ agPacket({intent: dumpIntent(this), name: name, byteB: byteB}).send(); return this.putExtra(name,byteB); } intent.putExtra.overload('java.lang.String', '[C').implementation = function(name, charC){ agPacket({intent: dumpIntent(this), name: name, charC: charC}).send(); return this.putExtra(name,charC); } intent.putExtra.overload('java.lang.String', '[Z').implementation = function(name, z){ agPacket({intent: dumpIntent(this), name: name, z: z}).send(); return this.putExtra(name,z); } intent.putExtra.overload('java.lang.String', 'boolean').implementation = function(name, boolvalue){ agPacket({intent: dumpIntent(this), name: name, boolvalue: boolvalue}).send(); return this.putExtra(name, boolvalue); } intent.putExtra.overload('java.lang.String', '[S').implementation = function(name, stringS){ agPacket({intent: dumpIntent(this), name: name, stringS: stringS}).send(); return this.putExtra(name,stringS); } intent.putExtra.overload('java.lang.String', '[Landroid.os.Parcelable;').implementation = function(name, parcel){ agPacket({intent: dumpIntent(this), name: name, parcel: parcel}).send(); return this.putExtra(name,parcel); } intent.putExtra.overload('java.lang.String', 'byte').implementation = function(name, bt){ agPacket({intent: dumpIntent(this), name: name, bt: bt}).send(); return this.putExtra(name,bt); } intent.putExtra.overload('java.lang.String', '[Ljava.lang.CharSequence;').implementation = function(name, chars){ agPacket({intent: dumpIntent(this), name: name, chars: chars}).send(); return this.putExtra(name,chars); } intent.putExtra.overload('java.lang.String', '[Ljava.lang.String;').implementation = function(name, data){ agPacket({intent: dumpIntent(this), name: name, data: data}).send(); return this.putExtra(name,data); } intent.putExtra.overload('java.lang.String', 'android.os.Bundle').implementation = function(name, bundle){ agPacket({intent: dumpIntent(this), name: name, bundle: bundle}).send(); return this.putExtra(name,bundle); } intent.putExtra.overload('java.lang.String', 'int').implementation = function(name, intA){ agPacket({intent: dumpIntent(this), name: name, intA: intA}).send(); return this.putExtra(name,intA); } intent.putExtra.overload('java.lang.String', 'long').implementation = function(name, longA){ agPacket({intent: dumpIntent(this), name: name, longA: longA}).send(); return this.putExtra(name,longA); } intent.putExtra.overload('java.lang.String', 'float').implementation = function(name, floatA){ agPacket({intent: dumpIntent(this), name: name, floatA: floatA}).send(); return this.putExtra(name,floatA); } intent.putExtra.overload('java.lang.String', 'short').implementation = function(name, shortA){ agPacket({intent: dumpIntent(this), name: name, shortA: shortA}).send(); return this.putExtra(name,shortA); } intent.putExtra.overload('java.lang.String', 'char').implementation = function(name, charA){ agPacket({intent: dumpIntent(this), name: name, charA: charA}).send(); return this.putExtra(name,charA); } intent.putExtra.overload('java.lang.String', 'double').implementation = function(name, doubleA){ agPacket({intent: dumpIntent(this), name: name, doubleA: doubleA}).send(); return this.putExtra(name,doubleA); } intent.putExtra.overload('java.lang.String', 'java.lang.String').implementation = function(name, stringA){ agPacket({intent: dumpIntent(this), name: name, stringA: stringA}).send(); return this.putExtra(name,stringA); } intent.putExtra.overload('java.lang.String', 'java.lang.CharSequence').implementation = function(name, CharSequence) { charsJoin = CharSequence.join(""); agPacket({intent: dumpIntent(this), name: name, charsJoin: charsJoin}).send(); return this.putExtra(name, CharSequence); } intent.putExtra.overload('java.lang.String', 'java.io.Serializable').implementation = function(name, serializable){ agPacket({intent: dumpIntent(this), name: name, serializable: serializable}).send(); return this.putExtra(name,serializable); } intent.putExtra.overload('java.lang.String', 'android.os.Parcelable').implementation = function(name, parcelable) { agPacket({intent: dumpIntent(this), name: name, parcelable: parcelable}).send(); return this.putExtra(name,parcelable); } intent.putExtra.overload('java.lang.String', 'android.os.IBinder').implementation = function(name, binder){ agPacket({intent: dumpIntent(this), name: name, binder: binder}).send(); return this.putExtra(name,binder); } } ================================================ FILE: libs/androguard/pentest/modules/intents/pending_intents.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING INTENTS/PENDING_INTENTS.JS',{c: Color.Red}); var pendingIntent = Java.use('android.app.PendingIntent'); pendingIntent.getActivity.overloads[0].implementation = function(context, requestCode, intent, flags){ agPacket({intent: dumpIntent(intent), requestCode: requestCode, flags: flags}).send(); return this.getActivity(context, requestCode, intent, flags); } pendingIntent.getActivity.overloads[1].implementation = function(context, requestCode, intent, flags, bundle){ agPacket({intent: dumpIntent(intent), requestCode: requestCode, flags: flags, bundle: bundle}).send(); return this.getActivity(context, requestCode, intent, flags, bundle); } pendingIntent.getBroadcast.implementation = function(context, requestCode, intent, flags){ agPacket({intent: dumpIntent(intent), requestCode: requestCode, flags: flags}).send(); return this.getBroadcast(context, requestCode, intent, flags); } pendingIntent.getService.implementation = function(context, requestCode, intent, flags){ agPacket({intent: dumpIntent(intent), requestCode: requestCode, flags: flags}).send(); return this.getService(context, requestCode, intent, flags); } pendingIntent.getActivities.overloads[0].implementation = function(context, requestCode, intent, flags) { for (let value of intent) agPacket({intent: dumpIntent(value), requestCode: requestCode, flags: flags}).send(); return this.getService(context, requestCode, intent, flags); } pendingIntent.getActivities.overloads[1].implementation = function(context, requestCode, intent, flags,bundle){ for (let value of intent) agPacket({intent: dumpIntent(value), requestCode: requestCode, flags: flags}).send(); return this.getService(context, requestCode, intent, flags,bundle); } ================================================ FILE: libs/androguard/pentest/modules/ipc/ipc.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING IPC/IPC.JS',{c: Color.Red}); var activity = Java.use('android.app.Activity'); var ContextWrapper = Java.use('android.content.ContextWrapper'); let anActivity = Java.use('android.app.Activity'); anActivity.onCreate.overload('android.os.Bundle').implementation = function(bundle){ agPacket({component_name: this.getComponentName().getClassName(), activity: this.getCallingActivity()}).send(); return this.onCreate(bundle); } anActivity.onCreate.overload('android.os.Bundle','android.os.PersistableBundle').implementation = function(bundle,persistableBundle){ agPacket({component_name: this.getComponentName().getClassName(), activity: this.getCallingActivity()}).send(); return this.onCreate(bundle,persistableBundle); } anActivity.setResult.overload('int','android.content.Intent').implementation = function(i, intent){ agPacket({component_name: this.getComponentName().getClassName(), i: i, intent: dumpIntent(intent)}).send(); return this.setResult(i, intent); } anActivity.setResult.overload('int').implementation = function(i){ agPacket({component_name: this.getComponentName().getClassName(), i: i}).send(); return this.setResult(i,intent); } activity.startActivity.overload('android.content.Intent').implementation = function(intent){ agPacket({intent: dumpIntent(intent)}).send(); return this.startActivity(intent); } activity.startActivity.overload('android.content.Intent','android.os.Bundle').implementation = function(intent, bundle){ agPacket({intent: dumpIntent(intent)}).send(); return this.startActivity(intent,bundle); } activity.startActivityForResult.overload('android.content.Intent','int').implementation = function(intent,requestCode){ agPacket({intent: dumpIntent(intent), requestCode: requestCode}).send(); return this.startActivityForResult(intent,requestCode); } // Ref: https://developer.android.com/reference/android/content/ContextWrapper.html#sendBroadcast(android.content.Intent) ContextWrapper.sendBroadcast.overload("android.content.Intent").implementation = function(intent) { agPacket({intent: dumpIntent(intent), requestCode: requestCode}).send(); return this.sendBroadcast.overload("android.content.Intent").apply(this, arguments); }; // Ref: https://developer.android.com/reference/android/content/ContextWrapper.html#sendBroadcast(android.content.Intent, java.lang.String) ContextWrapper.sendBroadcast.overload("android.content.Intent", "java.lang.String").implementation = function(intent, receiverPermission) { agPacket({intent: dumpIntent(intent)}).send(); return this.sendBroadcast.overload("android.content.Intent", "java.lang.String").apply(this, arguments); }; ContextWrapper.sendStickyBroadcast.overload("android.content.Intent").implementation = function(intent) { agPacket({intent: dumpIntent(intent)}).send(); return this.sendStickyBroadcast.overload("android.content.Intent").apply(this, arguments); }; //Ref: https://developer.android.com/reference/android/content/ContextWrapper.html#startService(android.content.Intent) ContextWrapper.startService.implementation = function(service) { agPacket({service: dumpIntent(service)}).send(); return this.startService.apply(this, arguments); }; //Ref: https://developer.android.com/reference/android/content/ContextWrapper.html#stopService(android.content.Intent) ContextWrapper.stopService.implementation = function(name) { agPacket({service: dumpIntent(service)}).send(); return this.stopService.apply(this, arguments); }; //Ref: https://developer.android.com/reference/android/content/ContextWrapper.html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter) ContextWrapper.registerReceiver.overload("android.content.BroadcastReceiver", "android.content.IntentFilter").implementation = function(receiver, filter) { agPacket({receiver: dumpReceiver(receiver), filter: dumpFilter(filter)}).send(); return this.registerReceiver.apply(this, arguments); }; // Ref: https://developer.android.com/reference/android/content/Context#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter,%20int) ContextWrapper.registerReceiver.overload("android.content.BroadcastReceiver", "android.content.IntentFilter", "int").implementation = function(receiver, filter, flags) { agPacket({receiver: dumpReceiver(receiver), filter: dumpFilter(filter), flags: flags}).send(); return this.registerReceiver.apply(this, arguments); }; //Ref: https://developer.android.com/reference/android/content/ContextWrapper.html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler) ContextWrapper.registerReceiver.overload("android.content.BroadcastReceiver", "android.content.IntentFilter", "java.lang.String", "android.os.Handler").implementation = function(receiver, filter, broadcastPermission, scheduler) { agPacket({receiver: dumpReceiver(receiver), filter: dumpFilter(filter), broadcastPermission: broadcastPermission}).send(); return this.registerReceiver.apply(this, arguments); }; //Ref: https://developer.android.com/reference/android/content/ContextWrapper.html#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter,%20java.lang.String,%20android.os.Handler,%20int) ContextWrapper.registerReceiver.overload("android.content.BroadcastReceiver", "android.content.IntentFilter", "java.lang.String", "android.os.Handler", "int").implementation = function(receiver, filter, broadcastPermission, scheduler, flags) { agPacket({receiver: dumpReceiver(receiver), filter: dumpFilter(filter), broadcastPermission: broadcastPermission, flags: flags}).send(); return this.registerReceiver.apply(this, arguments); }; ================================================ FILE: libs/androguard/pentest/modules/preferences/preferences.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog("[+] LOADING PREFERENCES/PREFERENCES.JS", { c: Color.Red }); var ContextWrapper = Java.use("android.content.ContextWrapper"); ContextWrapper.getSharedPreferences.overload( "java.lang.String", "int", ).implementation = function (var0, var1) { var sharedPreferences = this.getSharedPreferences(var0, var1); agPacket({ name: var0, mode: var1, ret: sharedPreferences }).send(); return sharedPreferences; }; ================================================ FILE: libs/androguard/pentest/modules/sockets/sockets.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING SOCKETS/SOCKETS.JS',{c: Color.Red}); var socket = Java.use('java.net.Socket'); socket.$init.overloads[2].implementation = function(socketImpl){ agPacket({hostname: socketImpl.address.getHostName(), port: port}).send(); return this.$init(host, port); } socket.$init.overloads[3].implementation = function(inetAddress, port){ agPacket({hostname: inetAddress.getHostName(), port: port}).send(); return this.$init(inetAddress,port); } socket.$init.overloads[4].implementation = function(host, port){ agPacket({hostname: host, port: port}).send(); return this.$init(host,port); } socket.$init.overloads[5].implementation = function(host, port, stream){ agPacket({hostname: host, port: port}).send(); return this.$init(host, port, stream); } socket.$init.overloads[6].implementation = function(inetAddress, port, localAddress, localPort){ agPacket({hostname: inetAddress.getHostName(), port: port}).send(); return this.$init(inetAddress, port, localAddress, localPort); } socket.$init.overloads[7].implementation = function(inetAddress, port, socketAddress, stream){ agPacket({hostname: inetAddress.getHostName(), port: port}).send(); return this.$init(inetAddress, port, socketAddress, stream); } socket.$init.overloads[8].implementation = function(inetAddress, port, localAddress, localPort){ agPacket({hostname: inetAddress.getHostName(), port: port}).send(); return this.$init(inetAddress, port, localAddress, localPort); } socket.bind.implementation = function(localAddress){ agPacket({hostname: localAddress.toString()}).send(); this.bind.call(this, localAddress); } // Socket.connect(endPoint) socket.connect.overload("java.net.SocketAddress").implementation = function(endPoint){ agPacket({endpoint: endPoint.toString()}).send(); this.connect.overload("java.net.SocketAddress").call(this, endPoint); } // Socket.connect(endPoint, timeout) socket.connect.overload("java.net.SocketAddress", "int").implementation = function(endPoint, tmout){ agPacket({endpoint: endPoint.toString()}).send(); this.connect.overload("java.net.SocketAddress", "int").call(this, endPoint, tmout); } // Socket.getInetAddress() socket.getInetAddress.implementation = function(){ ret = sock.getInetAddress.call(this); agPacket({ret: ret.toString()}).send(); return ret; } // Socket.getInputStream() socket.getInputStream.implementation = function(){ agPacket({}).send(); return this.getInputStream.call(this); } // Socket.getOutputStream() socket.getOutputStream.implementation = function(){ agPacket({}).send(); return this.getOutputStream.call(this); } var WebSocketClient = tryGetClass('org.java_websocket.client.WebSocketClient'); if (WebSocketClient) { WebSocketClient.$init.overloads[0].implementation = function(uri){ agPacket({uri: uri}).send(); return this.$init(uri); } WebSocketClient.$init.overloads[1].implementation = function(uri,draft){ agPacket({uri: uri}).send(); return this.$init(uri,draft); } WebSocketClient.$init.overloads[2].implementation = function(uri,headers){ agPacket({uri: uri}).send(); return this.$init(uri,headers); } WebSocketClient.$init.overloads[3].implementation = function(uri,draft,headers){ agPacket({uri: uri}).send(); return this.$init(uri,draft,headers); } WebSocketClient.$init.overloads[4].implementation = function(uri,draft,headers,connecttimeout){ agPacket({uri: uri}).send(); return this.$init(uri,draft,headers,connecttimeout); } WebSocketClient.send.overloads[0].implementation = function(byteArray) { agPacket({data: byteArrayToString(byteArray)}).send(); this.send(byteArray); } WebSocketClient.send.overloads[0].implementation = function(byteBuffers){ agPacket({data: byteBuffers}).send(); this.send(byteBuffers); } WebSocketClient.send.overloads[0].implementation = function(str){ agPacket({uri: his.getURI(), data: str}).send(); this.send(str); } } ================================================ FILE: libs/androguard/pentest/modules/webviews/webviews.js ================================================ // Ripped from https://github.com/Ch0pin/medusa/ and modified to fit Androguard packets colorLog('[+] LOADING WEBVIEWS/WEBVIEWS.JS',{c: Color.Red}); var webView = Java.use('android.webkit.WebView'); var webSettings = Java.use('android.webkit.WebSettings'); webSettings.setAllowContentAccess.implementation = function(allow){ agPacket({allow: allow}).send(); return this.setAllowContentAccess(allow); } webSettings.setAllowFileAccess.implementation = function(allow){ agPacket({allow: allow}).send(); return this.setAllowFileAccess(allow); } webSettings.setAllowFileAccessFromFileURLs.implementation = function(allow){ agPacket({allow: allow}).send(); return this.setAllowFileAccessFromFileURLs(allow); } webSettings.setAllowUniversalAccessFromFileURLs.implementation = function(allow){ agPacket({allow: allow}).send(); return this.setAllowUniversalAccessFromFileURLs(allow); } webSettings.setJavaScriptEnabled.implementation = function(allow){ agPacket({allow: allow}).send(); return this.setJavaScriptEnabled(allow); } webView.setVisibility.implementation = function(a){ agPacket({a: a}).send(); return this.setVisibility(a); } webView.addJavascriptInterface.implementation = function(object, name){ agPacket({className: object.$className, name:name}).send(); this.addJavascriptInterface(object,name); } webView.evaluateJavascript.implementation = function(script, resultCallback){ agPacket({script: script}).send(); this.evaluateJavascript(script, resultCallback); } webView.getOriginalUrl.implementation = function() { var ret = this.getOriginalUrl(); agPacket({ret: ret}).send(); return ret; } webView.getUrl.implementation = function() { var ret = this.getUrl(); agPacket({webview: dumpWebview(this), ret: ret}).send(); return this.getUrl(); } webView.loadData.implementation = function(data, mimeType, encoding){ agPacket({data: data, mimeType, mimeType, encoding: encoding}).send(); this.loadData(data,mimeType,encoding); } webView.loadDataWithBaseURL.implementation = function(baseUrl, data, mimeType, encoding, historyUrl){ agPacket({baseUrl: baseUrl, data: data, mimeType: mimeType, encoding: encoding, historyUrl: historyUrl}).send(); this.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl); } webView.loadUrl.overload('java.lang.String', 'java.util.Map').implementation = function(url, additionalHttpHeaders) { agPacket({webview: dumpWebview(this), url: url}).send(); this.setWebContentsDebuggingEnabled(true); this.loadUrl(url,additionalHttpHeaders); } webView.loadUrl.overload('java.lang.String').implementation = function(url){ agPacket({webview: dumpWebview(this), url: url}).send(); this.setWebContentsDebuggingEnabled(true); this.loadUrl(url); } webView.postUrl.implementation = function (url, postData){ agPacket({url: url, postData: postData}).send(); this.postUrl(url,postData); } webView.removeJavascriptInterface.implementation = function(name){ agPacket({name: name}).send(); this.removeJavascriptInterface(name); } webView.setWebViewClient.implementation = function(client){ agPacket({className: client.$className}).send(); this.setWebViewClient(client); } ================================================ FILE: libs/androguard/session.py ================================================ import collections import hashlib from typing import Iterator, Union import dataset from loguru import logger from androguard.core import androconf, apk, dex from androguard.core.analysis.analysis import Analysis, StringAnalysis from androguard.decompiler.decompiler import DecompilerDAD class Session: """ A Session is able to store in a database, basic information about APK, DEX or ODEX files. Additionally, it offers the possibility to store actions done when using the 'pentest' module. NOTE: an attempt to move from pickling to dataset was started here: but is NOT finished! > Should we go back to pickling or proceed further with the dataset ? """ def __init__( self, export_ipython: bool = False, db_url: str = 'sqlite:///androguard.db', ) -> None: """ Create a new Session object :param export_ipython: set to True in order to create attributes for the use in iPython """ self._setup_objects() self.export_ipython = export_ipython self.db = dataset.connect(db_url) logger.info("Opening database {}".format(self.db)) self.table_information = self.db["information"] self.table_session = self.db["session"] self.table_pentest = self.db["pentest"] self.table_system = self.db["system"] self.session_id = len(self.table_session) self.table_session.insert(dict(id=self.session_id)) logger.info("Creating new session [{}]".format(self.session_id)) def save(self, filename: Union[str, None] = None) -> None: """ Save the current session """ logger.info("Saving the database") self.db.commit() def _setup_objects(self): self.analyzed_files = collections.defaultdict(list) self.analyzed_digest = dict() self.analyzed_apk = dict() self.added_files = [] # Stores Analysis Objects # needs to be ordered to return the outermost element when searching for # classes self.analyzed_vms = collections.OrderedDict() # Dict of digest and DEX/DalvikOdexFormat # Actually not needed, as we have Analysis objects which store the DEX # files as well, but we do not remove it here for legacy reasons self.analyzed_dex = dict() def reset(self) -> None: """ Reset the current session, delete all added files. """ self._setup_objects() def isOpen(self) -> bool: """ Test if any file was analyzed in this session :return: `True` if any file was analyzed, `False` otherwise """ return len(self.analyzed_digest) > 0 def show(self) -> None: """ Print information to stdout about the current session. Gets all APKs, all DEX files and all Analysis objects. """ print("APKs in Session: {}".format(len(self.analyzed_apk))) for d, a in self.analyzed_apk.items(): print("\t{}: {}".format(d, a)) print("DEXs in Session: {}".format(len(self.analyzed_dex))) for d, dex in self.analyzed_dex.items(): print("\t{}: {}".format(d, dex)) print("Analysis in Session: {}".format(len(self.analyzed_vms))) for d, a in self.analyzed_vms.items(): print("\t{}: {}".format(d, a)) def insert_event(self, call, callee, params, ret): self.table_pentest.insert( dict( session_id=str(self.session_id), call=call, callee=callee, params=params, ret=ret, ) ) def insert_system_event(self, call, callee, information, params): self.table_system.insert( dict( session_id=str(self.session_id), call=call, callee=callee, information=information, params=params, ) ) def addAPK(self, filename: str, data: bytes) -> tuple[str, apk.APK]: """ Add an APK file to the Session and run analysis on it. :param filename: (file)name of APK file :param data: binary data of the APK file :return: a tuple of SHA256 Checksum and APK Object """ digest = hashlib.sha256(data).hexdigest() logger.info("add APK {}:{}".format(filename, digest)) self.table_information.insert( dict( session_id=str(self.session_id), filename=filename, digest=digest, type="APK", ) ) newapk = apk.APK(data, True) self.analyzed_apk[digest] = [newapk] self.analyzed_files[filename].append(digest) self.analyzed_digest[digest] = filename self.added_files.append(filename) dx = Analysis() self.analyzed_vms[digest] = dx for dex in newapk.get_all_dex(): # we throw away the output... FIXME? self.addDEX(filename, dex, dx, postpone_xref=True) # Postponed dx.create_xref() logger.info("added APK {}:{}".format(filename, digest)) return digest, newapk def addDEX( self, filename: str, data: bytes, dx: Union[Analysis, None] = None, postpone_xref: bool = False, ) -> tuple[str, dex.DEX, Analysis]: """ Add a DEX file to the Session and run analysis. :param filename: the (file)name of the DEX file :param data: binary data of the dex file :param dx: an existing `Analysis` Object (optional) :param postpone_xref: True if no xref shall be created, and will be called manually :return: A tuple of SHA256 Hash, DEX Object and `Analysis` object """ digest = hashlib.sha256(data).hexdigest() logger.info("add DEX:{}".format(digest)) self.table_information.insert( dict( session_id=str(self.session_id), filename=filename, digest=digest, type="DEX", ) ) logger.debug("Parsing format ...") d = dex.DEX(data) logger.info("added DEX:{}".format(digest)) self.analyzed_files[filename].append(digest) self.analyzed_digest[digest] = filename self.analyzed_dex[digest] = d if dx is None: dx = Analysis() dx.add(d) if not postpone_xref: dx.create_xref() logger.debug("Associated decompiler to the DEX objects") for d in dx.vms: # TODO: allow different decompiler here! d.set_decompiler(DecompilerDAD(d, dx)) d.set_analysis(dx) self.analyzed_vms[digest] = dx if self.export_ipython: logger.debug("Exporting in ipython") d.create_python_export() return digest, d, dx def addODEX( self, filename: str, data: bytes, dx: Union[Analysis, None] = None ) -> tuple[str, dex.ODEX, Analysis]: """ Add an ODEX file to the session and run the analysis :param filename: the ODEX filename :param data: the ODEX bytes :param dx: the `Analysis` object to add the ODEX to :returns: a tuple containing the SHA256 digest, the new `dex.ODEX` object, and the `Analysis` it is contained within. """ digest = hashlib.sha256(data).hexdigest() logger.info("add ODEX:%s" % digest) self.table_information.insert( dict( session_id=str(self.session_id), filename=filename, digest=digest, type="ODEX", ) ) d = dex.ODEX(data) logger.debug("added ODEX:%s" % digest) self.analyzed_files[filename].append(digest) self.analyzed_digest[digest] = filename self.analyzed_dex[digest] = d if self.export_ipython: d.create_python_export() if dx is None: dx = Analysis() dx.add(d) dx.create_xref() for d in dx.vms: # TODO: allow different decompiler here! d.set_decompiler(DecompilerDAD(d, dx)) d.set_vmanalysis(dx) self.analyzed_vms[digest] = dx return digest, d, dx def add( self, filename: str, raw_data: Union[bytes, None] = None, dx: Union[Analysis, None] = None, ) -> Union[str, None]: """ Generic method to add a file to the session. This is the main method to use when adding files to a Session! If an APK file is supplied, all DEX files are analyzed too. For DEX and ODEX files, only this file is analyzed (what else should be analyzed). Returns the SHA256 of the analyzed file. :param filename: filename to load :param raw_data: bytes of the file, or None to load the file from filename :param dx: An already exiting `androguard.core.analysis.analysis.Analysis` object :return: the sha256 of the file or None on failure """ if not raw_data: logger.debug("Loading file from '{}'".format(filename)) with open(filename, "rb") as fp: raw_data = fp.read() ret = androconf.is_android_raw(raw_data) logger.debug("Found filetype: '{}'".format(ret)) if not ret: return None if ret == "APK": digest, _ = self.addAPK(filename, raw_data) elif ret == "DEX": digest, _, _ = self.addDEX(filename, raw_data, dx) elif ret == "DEY": digest, _, _ = self.addODEX(filename, raw_data, dx) else: return None return digest def get_classes( self, ) -> Iterator[tuple[int, str, str, list[dex.ClassDefItem]]]: """ Returns all Java Classes from the DEX objects as an array of DEX files. :returns: an iterator where each element is a tuple containing the index of the `Analysis` object, the filename containing the class (ODEX, DEX), the SHA256 digest of the `Analysis` object, and a list of `CalssDefItem` """ for idx, digest in enumerate(self.analyzed_vms): dx = self.analyzed_vms[digest] for vm in dx.vms: filename = self.analyzed_digest[digest] yield idx, filename, digest, vm.get_classes() def get_analysis(self, current_class: dex.ClassDefItem) -> Analysis: """ Returns the [Analysis][androguard.core.analysis.analysis.Analysis] object which contains the `current_class`. :param current_class: The class to search for :returns: the `androguard.core.analysis.analysis.Analysis` object """ for digest in self.analyzed_vms: dx = self.analyzed_vms[digest] if dx.is_class_present(current_class.get_name()): return dx return None def get_format(self, current_class: dex.ClassDefItem) -> dex.DEX: """ Returns the [DEX][androguard.core.dex.DEX] of a given [ClassDefItem][androguard.core.dex.ClassDefItem]. :param current_class: A ClassDefItem """ return current_class.CM.vm def get_filename_by_class( self, current_class: dex.ClassDefItem ) -> Union[str, None]: """ Returns the filename of the DEX file where the class is in. Returns the first filename this class was present. For example, if you analyzed an APK, this should return the filename of the APK and not of the DEX file. :param current_class: `ClassDefItem` :returns: `None` if class was not found or the filename """ for digest, dx in self.analyzed_vms.items(): if dx.is_class_present(current_class.get_name()): return self.analyzed_digest[digest] return None def get_digest_by_class( self, current_class: dex.ClassDefItem ) -> Union[str, None]: """ Return the SHA256 hash of the object containing the [ClassDefItem][androguard.core.dex.ClassDefItem] Returns the first digest this class was present. For example, if you analyzed an APK, this should return the digest of the APK and not of the DEX file. """ for digest, dx in self.analyzed_vms.items(): if dx.is_class_present(current_class.get_name()): return digest return None def get_strings( self, ) -> Iterator[tuple[str, str, dict[str, StringAnalysis]]]: """ Yields all [StringAnalysis][androguard.core.analysis.analysis.StringAnalysis] for all unique [Analysis][androguard.core.analysis.analysis.Analysis] objects :returns: an iterator of `StringAnalysis` objects """ seen = [] for digest, dx in self.analyzed_vms.items(): if dx in seen: continue seen.append(dx) yield digest, self.analyzed_digest[ digest ], dx.get_strings_analysis() def get_nb_strings(self) -> int: """ Return the total number of strings in all [Analysis][androguard.core.analysis.analysis.Analysis] objects :returns: the number of strings """ nb = 0 seen = [] for digest, dx in self.analyzed_vms.items(): if dx in seen: continue seen.append(dx) nb += len(dx.get_strings_analysis()) return nb def get_all_apks(self) -> Iterator[tuple[str, apk.APK]]: """ Yields a list of tuples of SHA256 hash of the APK and [APK][androguard.core.apk.APK] objects of all analyzed APKs in the Session. :returns: an iterator where each element is a tuple of sha256 of the APK, and the `APK` object """ for digest, a in self.analyzed_apk.items(): yield digest, a def get_objects_apk( self, filename: Union[str, None] = None, digest: Union[str, None] = None, ) -> Iterator[tuple[apk.APK, list[dex.DEX], Analysis]]: """ Returns [APK][androguard.core.apk.APK], list of [DEX][androguard.core.dex.DEX], and [Analysis][androguard.core.analysis.analysis.Analysis] of a specified APK. You must specify either `filename` or `digest`. It is possible to use both, but in this case only `digest` is used. Example: >>> s = Session() >>> digest = s.add("some.apk") >>> a, d, dx = s.get_objects_apk(digest=digest) Example: >>> s = Session() >>> filename = "some.apk" >>> digest = s.add(filename) >>> a, d, dx = s.get_objects_apk(filename=filename) :param filename: the filename of the APK file, only used of digest is `None` :param digest: the sha256 hash, as returned by `add` for the APK :returns: a tuple of (APK, [DEX], Analysis) """ if not filename and not digest: raise ValueError("Must give at least filename or digest!") if digest is None: digests = self.analyzed_files.get(filename) # Negate to reduce tree if not digests: return None, None, None digest = digests[0] a = self.analyzed_apk[digest][0] dx = self.analyzed_vms[digest] return a, dx.vms, dx def get_objects_dex(self) -> Iterator[tuple[str, dex.DEX, Analysis]]: """ Yields all [DEX][androguard.core.dex.DEX] objects including their [Analysis][androguard.core.analysis.analysis.Analysis] objects :returns: tuple of (sha256, DEX, Analysis) """ # TODO: there is no variant like get_objects_apk for digest, d in self.analyzed_dex.items(): yield digest, d, self.analyzed_vms[digest] ================================================ FILE: libs/androguard/ui/__init__.py ================================================ import os import queue from loguru import logger from prompt_toolkit import Application from prompt_toolkit.application import get_app from prompt_toolkit.filters import Condition from prompt_toolkit.formatted_text import StyleAndTextTuples from prompt_toolkit.key_binding import KeyBindings, merge_key_bindings from prompt_toolkit.layout import ( ConditionalContainer, Float, FloatContainer, HSplit, Layout, UIContent, UIControl, VSplit, Window, ) from prompt_toolkit.styles import Style from androguard.pentest import Message from androguard.ui.data_types import DisplayTransaction from androguard.ui.filter import Filter from androguard.ui.selection import SelectionViewList from androguard.ui.widget.details import DetailsFrame from androguard.ui.widget.filters import FiltersPanel from androguard.ui.widget.help import HelpPanel from androguard.ui.widget.toolbar import StatusToolbar from androguard.ui.widget.transactions import TransactionFrame class DummyControl(UIControl): """ A dummy control object that doesn't paint any content. Useful for filling a :class:`~prompt_toolkit.layout.Window`. (The `fragment` and `char` attributes of the `Window` class can be used to define the filling.) """ def create_content(self, width: int, height: int) -> UIContent: def get_line(i: int) -> StyleAndTextTuples: return [] return UIContent( get_line=get_line, line_count=100**100 ) # Something very big. def is_focusable(self) -> bool: return True class DynamicUI: def __init__(self, input_queue): logger.info("Starting the Terminal UI") self.filter: Filter | None = None self.input_queue = input_queue self.all_transactions = [] self.transactions = SelectionViewList([], max_view_size=1) self.transaction_table = TransactionFrame(self.transactions) self.details_pane = DetailsFrame(self.transactions, 1) self.filter_panel = FiltersPanel() self.help_panel = HelpPanel() self.resize_components(os.get_terminal_size()) def run(self): self.focusable = [self.transaction_table, self.details_pane] self.focus_index = 0 self.focusable[self.focus_index].activated = True kb1 = KeyBindings() @kb1.add('tab') def _(event): self.focus_index = (self.focus_index + 1) % len(self.focusable) for i, f in enumerate(self.focusable): f.activated = i == self.focus_index @kb1.add('s-tab') def _(event): self.focus_index = ( len(self.focusable) - 1 if self.focus_index == 0 else self.focus_index - 1 ) for i, f in enumerate(self.focusable): f.activated = i == self.focus_index dummy_control = DummyControl() main_layout = HSplit( key_bindings=kb1, children=[ self.transaction_table, VSplit( [ self.details_pane, # self.structure_pane, ] ), StatusToolbar(self.transactions, self.filter_panel), Window(content=dummy_control), ], ) @Condition def modal_panel_visible(): return show_help() or show_filters() @Condition def show_filters(): return self.filter_panel.visible @Condition def show_help(): return self.help_panel.visible layout = Layout( container=FloatContainer( content=main_layout, floats=[ Float( top=10, content=ConditionalContainer( content=self.filter_panel, filter=show_filters ), ), Float( top=10, content=ConditionalContainer( content=self.help_panel, filter=show_help ), ), ], ) ) style = Style( [ ('field.selected', 'ansiblack bg:ansiwhite'), ('field.default', 'fg:ansiwhite'), ('frame.label', 'fg:ansiwhite'), ('frame.border', 'fg:ansiwhite'), ('frame.border.selected', 'fg:ansibrightgreen'), ('transaction.heading', 'ansiblack bg:ansigray'), ('transaction.selected', 'ansiblack bg:ansiwhite'), ('transaction.default', 'fg:ansiwhite'), ('transaction.unsupported', 'fg:ansibrightblack'), ('transaction.error', 'fg:ansired'), ('transaction.no_aidl', 'fg:ansiwhite'), ('transaction.oneway', 'fg:ansimagenta'), ('transaction.request', 'fg:ansicyan'), ('transaction.response', 'fg:ansiyellow'), ('hexdump.default', 'fg:ansiwhite'), ('hexdump.selected', 'fg:ansiblack bg:ansiwhite'), ('toolbar', 'bg:ansigreen'), ('toolbar.text', 'fg:ansiblack'), ('dialog', 'fg:ansiblack bg:ansiwhite'), ('dialog frame.border', 'fg:ansiblack bg:ansiwhite'), ('dialog frame.label', 'fg:ansiblack bg:ansiwhite'), ('dialogger.textarea', 'fg:ansiwhite bg:ansiblack'), ] ) kb = KeyBindings() @kb.add('q') def _(event): logger.info("Q pressed. App exiting.") event.app.exit(exception=KeyboardInterrupt, style='class:aborting') @kb.add('h', filter=~modal_panel_visible | show_help) @kb.add("enter", filter=show_help) def _(event): self.help_panel.visible = not self.help_panel.visible @kb.add('f', filter=~modal_panel_visible) @kb.add("enter", filter=show_filters) def _(event): self.filter_panel.visible = not self.filter_panel.visible if self.filter_panel.visible: get_app().layout.focus(self.filter_panel.interface_textarea) else: self.filter = self.filter_panel.filter() self.transactions.assign( [t for t in self.all_transactions if self.filter.passes(t)] ) get_app().layout.focus(dummy_control) @kb.add("c-c") def _(event): active_frame = self.focusable[self.focus_index] active_frame.copy_to_clipboard() app = Application( layout, key_bindings=merge_key_bindings( [ kb, self.transaction_table.key_bindings(), # self.structure_pane.key_bindings(), # self.hexdump_pane.key_bindings() ] ), full_screen=True, style=style, ) app.before_render += self.check_resize app.run() def check_resize(self, _): new_dimensions = os.get_terminal_size() if self.dimensions != new_dimensions: self.resize_components(new_dimensions) def resize_components(self, dimensions): self.dimensions = dimensions _, height = dimensions # Allow for the borders: # - top and bottom of transaction frame # - top and bottom of lower frames # - status bar border_allowance = 5 available_height = height - border_allowance # Split into two halfs horizontally. If there are an odd number of lines give the extra to transactions. transactions_height = available_height - (available_height // 2) lower_panels_height = available_height // 2 logger.debug(f"New terminal dimension: {dimensions}") logger.debug( f"{border_allowance=}, {transactions_height=}, {lower_panels_height=}, total={border_allowance+transactions_height+lower_panels_height}" ) self.transaction_table.resize(transactions_height) # self.structure_pane.max_height = lower_panels_height # self.hexdump_pane.max_lines = lower_panels_height def get_available_blocks(self): blocks: list[Message] = [] # Retrieve every unhandled block currently available in the queue try: for _ in range(10): blocks.append(self.input_queue.get_nowait()) except queue.Empty: pass return blocks def process_data(self): blocks = self.get_available_blocks() # For every block... for block in blocks: block = DisplayTransaction(block) if not self.filter or self.filter.passes(block): self.transactions.append(block) self.all_transactions.append(block) return bool(blocks) ================================================ FILE: libs/androguard/ui/data_types.py ================================================ import datetime from androguard.pentest import Message, MessageEvent, MessageSystem class DisplayTransaction: def __init__(self, block: Message) -> None: self.block: Message = block self.timestamp = (datetime.datetime.now().strftime('%H:%M:%S'),) @property def index(self) -> int: return self.block.index @property def unsupported_call(self) -> bool: return '' # self.block.unsupported_call @property def to_method(self) -> str: return self.block.to_method @property def from_method(self) -> str: return self.block.from_method @property def params(self) -> str: return self.block.params @property def ret_value(self) -> str: return self.block.ret_value @property def fields(self): # -> Field | None: return None # self.block.root_field @property def direction_indicator(self) -> str: return '\u21D0' if self.block.direction == Direction.IN: return '\u21D0' if self.block.oneway else '\u21D2' elif self.block.direction == Direction.OUT: return '\u21CF' else: return '' def style(self) -> str: if type(self.block) is MessageEvent: style = "class:transaction.oneway" elif type(self.block) is MessageSystem: style = "class:transaction.response" else: style = "class:transaction.default" return style if self.unsupported_call: style = "class:transaction.unsupported" elif self.block.errors: style = "class:transaction.error" elif self.block.unsupported_call: style = "class:transaction.no_aidl" elif self.block.direction == Direction.IN: style = ( "class:transaction.oneway" if self.block.oneway else "class:transaction.request" ) elif self.block.direction == Direction.OUT: style = "class:transaction.response" else: style = "class:transaction.default" return style def type(self) -> str: """Gets the type of the Block as a simple short string for use in pattern matching""" return "oneway" if self.unsupported_call: type_name = "unsupported type" elif self.block.errors: type_name = "error" elif self.block.direction == Direction.IN: # TODO: Should this be "oneway" or "async call"? type_name = "oneway" if self.block.oneway else "call" elif self.block.direction == Direction.OUT: type_name = "return" else: type_name = "unknown" # Should be impossible return type_name ================================================ FILE: libs/androguard/ui/filter.py ================================================ from collections import UserList from typing import Optional, TypeVar class Filter: """ CLASS Filter Brief - Class that represents a single filter Description - It holds and interface, method and list of types to check against It also holds the function which checks if a block passes the filter """ def __init__( self, interface: Optional[str] = None, method: Optional[str] = None, types: Optional[list[str]] = None, include: bool = True, ): self.interface = interface self.method = method self.types = ( types or [] ) # List of associated types of the filter (call, return, etc) self.inclusive = include def passes(self): """ FUNCTION passes Brief - Returns whether a block should be displayed Description - Returns TRUE if the block should be shown Returns FALSE if the block should no be shown The code checks if the filter passes the checks, and then tailors the output to the filter_mode The type is either Inclusive ("Incl") or Exclusive ("Excl") """ # matches = ( # (not self.types or block.type() in self.types) and # (not self.interface or self.interface in block.interface) and # (not self.method or self.method in block.method) # ) # return not matches ^ self.inclusive return False def toggle_inclusivity(self): self.inclusive = not self.inclusive def __str__(self): interface = self.interface or "*" method = self.method or "*" types = "|".join(self.types) if self.types else "*" return f"interface={interface}, method={method}, types={types}" _T = TypeVar('_T', bound=Filter) class FilterSet(UserList[_T]): def passes(self, interface=None, method=None, call_type=None): """Return True if all filters in the set pass, False otherwise.""" return all([f.passes(interface, method, call_type) for f in self.data]) ================================================ FILE: libs/androguard/ui/selection.py ================================================ from collections import UserList from dataclasses import dataclass from typing import Iterable, TypeVar from prompt_toolkit.utils import Event from androguard.ui.util import clamp @dataclass class View: start: int end: int def size(self): return self.end - self.start _T = TypeVar('_T') class SelectionViewList(UserList[_T]): def __init__(self, iterable=None, max_view_size=80, view_padding=5): super().__init__(iterable) self.max_view_size = max_view_size self.view_padding = view_padding self.on_update_event = Event(self) self.on_selection_change = Event(self) self._reset_view() def _reset_view(self): # -1 means the list is empty so there is no selection. self.selection = 0 if len(self) else -1 self.view = View(0, min(self.max_view_size, len(self))) self.on_update_event() self.on_selection_change() def selection_valid(self): return self.selection != -1 def move_selection(self, step: int): if self.selection_valid(): if step != 0: self.selection = clamp(0, len(self) - 1, self.selection + step) self._update_view(step) self.on_selection_change() def selected(self): if not self.selection_valid(): raise IndexError("Selection index not set.") return self.data[self.selection] def view_slice(self): return self.data[self.view.start : self.view.end] def resize_view(self, view_size): if self.selection_valid(): before_selection = view_size // 2 self.view.start = max(0, self.selection - before_selection) self.view.end = self.view.start self.max_view_size = view_size self._expand_view() else: self.max_view_size = view_size self._reset_view() def _update_view(self, step: int): if step > 0 and self.view.end - self.selection < self.view_padding: # We're moving down the list and are near the bottom (i.e. within padding of end of current view). self.view.end = min(self.view.end + step, len(self)) # If we're can't fit all the data in the view set the start of the view if self.view.end > self.max_view_size: self.view.start = self.view.end - self.max_view_size elif step < 0 and self.selection - self.view.start < self.view_padding: # We're moving up the list and are near the top (i.e. within padding of start of current view) # We're adding a negative here so although it looks a bit odd we are moving the view backwards self.view.start = max(self.view.start + step, 0) self.view.end = min( len(self), self.view.start + self.max_view_size ) self.on_update_event() def __delitem__(self, i: int): super().__delitem__(i) self._delete_from_view(i) def _expand_view(self): self.view.end = self.view.start + min( self.max_view_size, len(self) - self.view.start ) if not self.selection_valid(): self.selection = 0 self.on_selection_change() self.on_update_event() def _delete_from_view(self, i: int): if len(self) == 0: self._reset_view() else: # if i < self.selection: # self.selection -= 1 self.move_selection(-1) self.on_update_event() # TODO: once the selection is within padding of the start of the window it shoud move up # if i <= self.view.end: # self.view.end = min(self.view.end, len(self)) # if i < self.selection: # self.selection -= 1 # elif i == self.selection: # self.selection = min(self.selection, len(self)) # if i <= self.view.start: # self.view.start = max(0, self.view.start - 1) # self.view.end -= 1 def append(self, item: _T): super().append(item) self._expand_view() def insert(self, i, item: _T): super().insert(i, item) if len(self) == 1: # The list must have been empty so reset the view self._reset_view() else: if i >= self.view.start: self._expand_view() if i <= self.selection: self.selection += 1 self.on_selection_change() def pop(self, i=-1): item = super().pop(i) self._delete_from_view(i) return item def remove(self, item: _T): # We're reimplementing remove in terms of index and delete because we need the indext to update the view i = self.index(item) super().__delitem__(i) self._delete_from_view(i) def clear(self): super().clear() self._reset_view() def extend(self, other: Iterable[_T]): super().extend(other) self._expand_view() def assign(self, items: Iterable[_T]): self.clear() self.data += items self._reset_view() ================================================ FILE: libs/androguard/ui/table.py ================================================ #!/usr/bin/env python3 from typing import Type, Union from prompt_toolkit import Application from prompt_toolkit.cache import SimpleCache from prompt_toolkit.key_binding.key_bindings import KeyBindings # from prompt_toolkit.widgets.base import Border from prompt_toolkit.layout.containers import ( HorizontalAlign, HSplit, VerticalAlign, VSplit, Window, ) from prompt_toolkit.layout.dimension import Dimension as D from prompt_toolkit.layout.dimension import ( max_layout_dimensions, sum_layout_dimensions, to_dimension, ) from prompt_toolkit.layout.layout import Layout from prompt_toolkit.utils import take_using_weights from prompt_toolkit.widgets import Box, Button, Label, TextArea from androguard.ui.selection import SelectionViewList class EmptyBorder: HORIZONTAL = '' VERTICAL = '' TOP_LEFT = '' TOP_RIGHT = '' BOTTOM_LEFT = '' BOTTOM_RIGHT = '' LEFT_T = '' RIGHT_T = '' TOP_T = '' BOTTOM_T = '' INTERSECT = '' class SpaceBorder: "Box drawing characters. (Spaces)" HORIZONTAL = ' ' VERTICAL = ' ' TOP_LEFT = ' ' TOP_RIGHT = ' ' BOTTOM_LEFT = ' ' BOTTOM_RIGHT = ' ' LEFT_T = ' ' RIGHT_T = ' ' TOP_T = ' ' BOTTOM_T = ' ' INTERSECT = ' ' class AsciiBorder: "Box drawing characters. (ASCII)" HORIZONTAL = '-' VERTICAL = '|' TOP_LEFT = '+' TOP_RIGHT = '+' BOTTOM_LEFT = '+' BOTTOM_RIGHT = '+' LEFT_T = '+' RIGHT_T = '+' TOP_T = '+' BOTTOM_T = '+' INTERSECT = '+' class ThinBorder: "Box drawing characters. (Thin)" HORIZONTAL = '\u2500' VERTICAL = '\u2502' TOP_LEFT = '\u250c' TOP_RIGHT = '\u2510' BOTTOM_LEFT = '\u2514' BOTTOM_RIGHT = '\u2518' LEFT_T = '\u251c' RIGHT_T = '\u2524' TOP_T = '\u252c' BOTTOM_T = '\u2534' INTERSECT = '\u253c' class RoundedBorder(ThinBorder): "Box drawing characters. (Rounded)" TOP_LEFT = '\u256d' TOP_RIGHT = '\u256e' BOTTOM_LEFT = '\u2570' BOTTOM_RIGHT = '\u256f' class ThickBorder: "Box drawing characters. (Thick)" HORIZONTAL = '\u2501' VERTICAL = '\u2503' TOP_LEFT = '\u250f' TOP_RIGHT = '\u2513' BOTTOM_LEFT = '\u2517' BOTTOM_RIGHT = '\u251b' LEFT_T = '\u2523' RIGHT_T = '\u252b' TOP_T = '\u2533' BOTTOM_T = '\u253b' INTERSECT = '\u254b' class DoubleBorder: "Box drawing characters. (Thin)" HORIZONTAL = '\u2550' VERTICAL = '\u2551' TOP_LEFT = '\u2554' TOP_RIGHT = '\u2557' BOTTOM_LEFT = '\u255a' BOTTOM_RIGHT = '\u255d' LEFT_T = '\u2560' RIGHT_T = '\u2563' TOP_T = '\u2566' BOTTOM_T = '\u2569' INTERSECT = '\u256c' AnyBorderStyle = Union[ Type[EmptyBorder], Type[SpaceBorder], Type[AsciiBorder], Type[ThinBorder], Type[RoundedBorder], Type[ThickBorder], Type[DoubleBorder], ] class Merge: def __init__(self, cell, merge=1): self.cell = cell self.merge = merge def __iter__(self): yield self.cell yield self.merge class Table(HSplit): def __init__( self, table, borders: AnyBorderStyle = ThinBorder, column_width=None, column_widths=[], window_too_small=None, align=VerticalAlign.JUSTIFY, padding=0, padding_char=None, padding_style='', width=None, height=None, z_index=None, modal=False, key_bindings=None, style='', selected_style='', ): self.borders = borders self.column_width = column_width self.column_widths = column_widths self.selected_style = selected_style # ensure the table is iterable (has rows) if not isinstance(table, list): table = [table] children = [ _Row(row=row, table=self, borders=borders, height=1) for row in table ] super().__init__( children=children, window_too_small=window_too_small, align=align, padding=padding, padding_char=padding_char, padding_style=padding_style, width=width, height=height, z_index=z_index, modal=modal, key_bindings=key_bindings, style=style, ) self.row_cache = SimpleCache(maxsize=30) # def do_update(self, rows): # self.children.clear() # self.children.extend(_Row(row=row, table=self, borders=self.borders, height=1, style="#000000 bg:#ffffff") for row in rows) def add_row(self, row, style, cache_id): r = self.row_cache.get( cache_id, lambda: _Row( row=row, table=self, borders=self.borders, height=1, style=style, ), ) self.children.append(r) @property def columns(self): return max(row.raw_columns for row in self.children) @property def _all_children(self): """ List of child objects, including padding & borders. """ def get(): result = [] # Padding top. if self.align in (VerticalAlign.CENTER, VerticalAlign.BOTTOM): result.append(Window(width=D(preferred=0))) # Border top is first inserted in children loop. # The children with padding. prev = None for child in self.children: # result.append(_Border( # prev=prev, # next=child, # table=self, # borders=self.borders)) result.append(child) prev = child # Border bottom. # result.append(_Border(prev=prev, next=None, table=self, borders=self.borders)) # Padding bottom. if self.align in (VerticalAlign.CENTER, VerticalAlign.TOP): result.append(Window(width=D(preferred=0))) return result return self._children_cache.get(tuple(self.children), get) def preferred_dimensions(self, width): dimensions = [[]] * self.columns for row in self.children: assert isinstance(row, _Row) j = 0 for cell in row.children: assert isinstance(cell, _Cell) if cell.merge != 1: dimensions[j].append(cell.preferred_width(width)) j += cell.merge for i, c in enumerate(dimensions): yield D.exact(1) try: w = self.column_widths[i] except IndexError: w = self.column_width if w is None: # fitted yield max_layout_dimensions(c) else: # fixed or weighted yield to_dimension(w) yield D.exact(1) class _VerticalBorder(Window): def __init__(self, borders): super().__init__(width=1, char=borders.VERTICAL) class _HorizontalBorder(Window): def __init__(self, borders): super().__init__(height=1, char=borders.HORIZONTAL) class _UnitBorder(Window): def __init__(self, char): super().__init__(width=1, height=1, char=char) class _BaseRow(VSplit): @property def columns(self): return self.table.columns def _divide_widths(self, width): """ Return the widths for all columns. Or None when there is not enough space. """ children = self._all_children if not children: return [] # Calculate widths. dimensions = list(self.table.preferred_dimensions(width)) preferred_dimensions = [d.preferred for d in dimensions] # Sum dimensions sum_dimensions = sum_layout_dimensions(dimensions) # If there is not enough space for both. # Don't do anything. if sum_dimensions.min > width: return # Find optimal sizes. (Start with minimal size, increase until we cover # the whole width.) sizes = [d.min for d in dimensions] child_generator = take_using_weights( items=list(range(len(dimensions))), weights=[d.weight for d in dimensions], ) i = next(child_generator) # Increase until we meet at least the 'preferred' size. preferred_stop = min(width, sum_dimensions.preferred) while sum(sizes) < preferred_stop: if sizes[i] < preferred_dimensions[i]: sizes[i] += 1 i = next(child_generator) # Increase until we use all the available space. max_dimensions = [d.max for d in dimensions] max_stop = min(width, sum_dimensions.max) while sum(sizes) < max_stop: if sizes[i] < max_dimensions[i]: sizes[i] += 1 i = next(child_generator) # perform merges if necessary if len(children) != len(sizes): tmp = [] i = 0 for c in children: if isinstance(c, _Cell): inc = (c.merge * 2) - 1 tmp.append(sum(sizes[i : i + inc])) else: inc = 1 tmp.append(sizes[i]) i += inc sizes = tmp return sizes class _Row(_BaseRow): def __init__( self, row, table, borders, window_too_small=None, align=HorizontalAlign.JUSTIFY, padding=D.exact(0), padding_char=None, padding_style='', width=None, height=None, z_index=None, modal=False, key_bindings=None, style='', ): self.table = table self.borders = borders # ensure the row is iterable (has cells) if not isinstance(row, list): row = [row] children = [] for c in row: m = 1 if isinstance(c, Merge): c, m = c elif isinstance(c, dict): c, m = Merge(**c) children.append(_Cell(cell=c, table=table, row=self, merge=m)) super().__init__( children=children, window_too_small=window_too_small, align=align, padding=padding, padding_char=padding_char, padding_style=padding_style, width=width, height=height, z_index=z_index, modal=modal, key_bindings=key_bindings, style=style, ) @property def raw_columns(self): return sum(cell.merge for cell in self.children) @property def _all_children(self): """ List of child objects, including padding & borders. """ def get(): result = [] # Padding left. if self.align in (HorizontalAlign.CENTER, HorizontalAlign.RIGHT): result.append(Window(width=D(preferred=0))) # Border left is first inserted in children loop. # The children with padding. c = 0 for child in self.children: result.append(_VerticalBorder(borders=self.borders)) result.append(child) c += child.merge # Fill in any missing columns for _ in range(self.columns - c): result.append(_VerticalBorder(borders=self.borders)) result.append(_Cell(cell=None, table=self.table, row=self)) # Border right. result.append(_VerticalBorder(borders=self.borders)) # Padding right. if self.align in (HorizontalAlign.CENTER, HorizontalAlign.LEFT): result.append(Window(width=D(preferred=0))) return result return self._children_cache.get(tuple(self.children), get) class _Border(_BaseRow): def __init__( self, prev, next, table, borders, window_too_small=None, align=HorizontalAlign.JUSTIFY, padding=D.exact(0), padding_char=None, padding_style='', width=None, height=None, z_index=None, modal=False, key_bindings=None, style='', ): assert prev or next self.prev = prev self.next = next self.table = table self.borders = borders children = [_HorizontalBorder(borders=borders)] * self.columns super().__init__( children=children, window_too_small=window_too_small, align=align, padding=padding, padding_char=padding_char, padding_style=padding_style, width=width, height=height or 1, z_index=z_index, modal=modal, key_bindings=key_bindings, style=style, ) def has_borders(self, row): yield None # first (outer) border if not row: # this row is undefined, none of the borders need to be marked yield from [False] * (self.columns - 1) else: c = 0 for child in row.children: yield from [False] * (child.merge - 1) yield True c += child.merge yield from [True] * (self.columns - c) yield None # last (outer) border @property def _all_children(self): """ List of child objects, including padding & borders. """ def get(): result = [] # Padding left. if self.align in (HorizontalAlign.CENTER, HorizontalAlign.RIGHT): result.append(Window(width=D(preferred=0))) def char(i, pc=False, nc=False): if i == 0: if self.prev and self.next: return self.borders.LEFT_T elif self.prev: return self.borders.BOTTOM_LEFT else: return self.borders.TOP_LEFT if i == self.columns: if self.prev and self.next: return self.borders.RIGHT_T elif self.prev: return self.borders.BOTTOM_RIGHT else: return self.borders.TOP_RIGHT if pc and nc: return self.borders.INTERSECT elif pc: return self.borders.BOTTOM_T elif nc: return self.borders.TOP_T else: return self.borders.HORIZONTAL # Border left is first inserted in children loop. # The children with padding. pcs = self.has_borders(self.prev) ncs = self.has_borders(self.next) for i, (child, pc, nc) in enumerate(zip(self.children, pcs, ncs)): result.append(_UnitBorder(char=char(i, pc, nc))) result.append(child) # Border right. result.append(_UnitBorder(char=char(self.columns))) # Padding right. if self.align in (HorizontalAlign.CENTER, HorizontalAlign.LEFT): result.append(Window(width=D(preferred=0))) return result return self._children_cache.get(tuple(self.children), get) class _Cell(HSplit): def __init__( self, cell, table, row, merge=1, padding=0, char=None, padding_left=None, padding_right=None, padding_top=None, padding_bottom=None, window_too_small=None, width=None, height=None, z_index=None, modal=False, key_bindings=None, style='', ): self.table = table self.row = row self.merge = merge if padding is None: padding = D(preferred=0) def get(value): if value is None: value = padding return to_dimension(value) self.padding_left = get(padding_left) self.padding_right = get(padding_right) self.padding_top = get(padding_top) self.padding_bottom = get(padding_bottom) children = [] children.append(Window(width=self.padding_left, char=char)) if cell: children.append(cell) children.append(Window(width=self.padding_right, char=char)) children = [ Window(height=self.padding_top, char=char), VSplit(children), Window(height=self.padding_bottom, char=char), ] super().__init__( children=children, window_too_small=window_too_small, width=width, height=height, z_index=z_index, modal=modal, key_bindings=key_bindings, style=style, ) def demo(): txt1 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut purus nibh, sollicitudin at lorem eget, tristique fringilla purus. Donec sit amet lectus porta, aliquam ligula sed, sagittis eros. Proin in augue leo. Donec vitae erat pellentesque, hendrerit tellus malesuada, mollis urna. Nam varius, lorem id porttitor euismod, erat sapien tempus odio, ac porttitor eros lacus et magna. Nam in arcu pellentesque, bibendum est vel, viverra nulla. Ut ut accumsan risus. Donec at volutpat tortor. Nulla ac elementum lacus. Pellentesque nec nibh tempus, posuere massa nec, consequat lorem. Curabitur ac sollicitudin neque. Donec vel ante magna. Nunc nec sapien vitae sem bibendum volutpat. Donec posuere nulla felis, id mattis risus dictum ut. Fusce libero mi, varius aliquet commodo at, tempus ut eros." txt2 = "Praesent eu ultrices massa. Cras et dui bibendum, venenatis urna nec, porttitor sem. Nullam commodo tempor pellentesque. Praesent leo odio, fermentum a ultrices a, ultrices eu nibh. Etiam commodo orci urna, vitae egestas enim ultricies vel. Cras diam eros, rutrum in congue ac, pretium sed quam. Cras commodo ut ipsum ut sollicitudin." txt3 = "Proin in varius purus. Aliquam nec nulla eget lorem fermentum facilisis. Quisque eget ante quam. Quisque vel pharetra magna. Sed volutpat, ligula sed aliquam pharetra, felis tellus bibendum mi, at imperdiet risus augue eget eros. Suspendisse ut venenatis magna, at euismod magna. Phasellus bibendum maximus sem eget porttitor. Donec et eleifend mi, in ornare nisi." txt4 = "Morbi viverra, justo eget pretium sollicitudin, magna ex sodales ligula, et convallis erat mauris eu urna. Curabitur tristique quis metus at sodales. Nullam tincidunt convallis lorem in faucibus. Donec nec turpis ante. Ut tincidunt neque eu ornare sagittis. Suspendisse potenti. Etiam tellus est, porttitor eget luctus sed, euismod et erat. Vivamus commodo, massa eget mattis eleifend, turpis sem porttitor dolor, eu finibus ex erat id tellus. Etiam viverra iaculis tellus, ut tempus tellus. Maecenas arcu lectus, euismod accumsan erat eu, blandit vehicula dui. Nulla id ante egestas, imperdiet nibh et, fringilla orci. Donec ut pretium est. Vivamus feugiat facilisis iaculis. Pellentesque imperdiet ex felis, ac elementum dolor tincidunt eget. Cras molestie tellus id massa suscipit, hendrerit vulputate metus tincidunt. Aliquam erat enim, rhoncus in metus eu, consequat cursus ipsum." txt5 = "Integer at dictum justo. Vestibulum gravida nec diam a iaculis. Nullam non sollicitudin turpis, in mollis augue. In ut interdum magna. Ut tellus eros, blandit a ex a, suscipit varius tortor. Nulla pulvinar nibh vitae tristique tincidunt. Proin eu fringilla nibh. Mauris metus erat, laoreet sed eros ac, maximus finibus turpis. Sed tortor massa, congue nec lacus nec, fringilla fermentum purus. Vivamus eget pretium mi, vel ultricies orci. Phasellus semper viverra lorem. Phasellus velit nisl, scelerisque sit amet vulputate luctus, ullamcorper in velit. Fusce pellentesque elit ut leo tincidunt euismod. Integer nisl ante, dignissim id leo ut, interdum auctor ipsum. Fusce nunc ligula, imperdiet et nisl id, mollis imperdiet erat." txt6 = "Ut egestas vel nisi et sodales. Etiam arcu massa, viverra in pellentesque quis, molestie a lacus. Nulla suscipit mi luctus blandit dignissim. Proin ac turpis sit amet enim luctus venenatis quis et orci. Donec sed tortor ex. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In et turpis sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus et purus et ex interdum commodo at non velit. Nullam eget diam et felis accumsan gravida non vitae nulla. Morbi tellus mauris, tristique non vulputate eu, efficitur at tellus. Morbi in erat et purus euismod luctus vel vel erat. Fusce auctor augue felis, quis ornare justo mattis vel." txt7 = "Etiam quis eros eu urna consequat finibus. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer suscipit, est ac blandit cursus, sem diam egestas massa, sit amet dignissim velit nibh in tortor. Fusce scelerisque feugiat ligula vitae pharetra. Fusce mattis placerat volutpat. Aliquam fermentum ligula mauris, sit amet tempor dui elementum nec. Nunc augue felis, egestas ut lacus vitae, placerat condimentum turpis. Nulla volutpat quis felis id tristique. Vivamus non odio et magna dapibus suscipit vitae et dui. Aenean magna lectus, congue eu commodo luctus, dapibus vel sem. Quisque nec diam consequat, luctus nisi vitae, rutrum mi. Nullam consectetur non risus eleifend dignissim. Vivamus sit amet sagittis libero. Integer nec ipsum fringilla, pulvinar ex vitae, aliquet est. Etiam sit amet est finibus, facilisis erat aliquet, egestas lectus." txt8 = "Donec placerat lacus egestas, aliquam enim vitae, congue ipsum. Praesent vitae eros cursus, pulvinar lectus et, ornare ipsum. Fusce luctus odio vitae hendrerit mollis. Morbi eu turpis vel elit tristique ullamcorper at sodales turpis. Curabitur in ante tincidunt, pellentesque lacus non, dignissim arcu. Mauris ut egestas mi, id elementum ipsum. Morbi justo nisi, laoreet nec lobortis nec, vulputate et justo. Quisque vel pretium quam. Cras consequat quam erat, eu finibus nisi pretium eu. Maecenas ac commodo lacus, non lobortis nunc." txt9 = "Vivamus et leo eget turpis scelerisque blandit at vel tellus. Vestibulum ac arcu turpis. Cras iaculis suscipit justo, at cursus ex condimentum non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris eget tincidunt nisi, at imperdiet orci. Praesent bibendum bibendum nunc sit amet euismod. Nullam eu metus malesuada, faucibus purus eget, imperdiet justo. Donec in dui nunc. Sed vel sodales neque. Duis congue venenatis semper. Donec commodo in magna id tincidunt. Maecenas sollicitudin dignissim lorem id interdum." txt10 = "Aliquam eleifend mi arcu, sit amet convallis tellus condimentum sit amet. Duis lobortis nisl lectus, et convallis augue bibendum sit amet. Maecenas vestibulum porta lorem eu pharetra. Aliquam erat volutpat. Pellentesque volutpat nunc sit amet sem vestibulum commodo. In consequat diam id eros tincidunt dignissim. Maecenas aliquam, elit vitae consectetur facilisis, enim lectus facilisis dui, sed sodales leo dui et augue. Phasellus convallis lacinia pellentesque. Mauris et vulputate ligula. Quisque et velit diam. Pellentesque maximus, augue sit amet semper malesuada, urna velit ultrices lorem, et commodo tortor nibh non justo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas." sht1 = "Hello World" sht2 = "Buzz" sht3 = "The quick brown fox jumps over the lazy dog." kb = KeyBindings() @kb.add('c-c') def _(event): "Abort when Control-C has been pressed." event.app.exit(exception=KeyboardInterrupt, style='class:aborting') table = [ [TextArea(sht1), Label(txt2), TextArea(txt1)], [Merge(TextArea(sht2), 2), TextArea(txt4)], [Button(sht3), Merge(TextArea(txt6), 3)], [Button(sht1), TextArea(txt8)], [TextArea(sht2), TextArea(txt10)], ] # table = TextArea(txt2) layout = Layout( Box( Table( table=table, column_width=D.exact(15), column_widths=[None], borders=DoubleBorder, ), padding=1, ), ) return Application(layout, key_bindings=kb) if __name__ == '__main__': demo().run() ================================================ FILE: libs/androguard/ui/util.py ================================================ def clamp(range_min: int, range_max: int, value: int) -> int: """Return value if its is within range_min and range_max else return the nearest bound""" return max(min(range_max, value), range_min) ================================================ FILE: libs/androguard/ui/widget/__init__.py ================================================ ================================================ FILE: libs/androguard/ui/widget/details.py ================================================ import json from typing import Optional from prompt_toolkit.filters import Condition from prompt_toolkit.formatted_text import FormattedText from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.layout import ( AnyContainer, Dimension, FormattedTextControl, HSplit, Window, ) from prompt_toolkit.layout.dimension import AnyDimension from androguard.ui.data_types import DisplayTransaction from androguard.ui.selection import SelectionViewList from androguard.ui.widget.frame import SelectableFrame class DetailsFrame: def __init__( self, transactions: SelectionViewList, max_lines: int ) -> None: self.transactions = transactions self.max_lines = max_lines self.transactions.on_selection_change += self.update_content self.offset = 0 self.container = SelectableFrame( title="Details", body=self.get_content, width=Dimension(min=56, preferred=100, max=100), height=Dimension(preferred=max_lines), ) @property def activated(self) -> bool: return self.container.activated @activated.setter def activated(self, value: bool): self.container.activated = value def update_content(self, _, offset=0): self.offset = offset self.container.body = self.get_content() def get_content(self) -> AnyContainer: return HSplit( children=[ Window( ignore_content_height=True, content=FormattedTextControl( text=self.get_current_details() ), ), ] ) def get_current_details(self): if self.transactions.selection_valid(): return ( json.dumps(self.transactions.selected().params, indent=2) + '\n' + json.dumps(self.transactions.selected().ret_value, indent=2) ) return '' def __pt_container__(self) -> AnyContainer: return self.container ================================================ FILE: libs/androguard/ui/widget/filters.py ================================================ from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.key_binding.bindings.focus import ( focus_next, focus_previous, ) from prompt_toolkit.layout import AnyContainer, HSplit, VerticalAlign, VSplit from prompt_toolkit.widgets import Box, CheckboxList, Frame, Label, TextArea from androguard.ui.filter import Filter class TypeCheckboxlist(CheckboxList): def __init__(self) -> None: values = [ ("call", "call"), ("return", "return"), ("oneway", "oneway"), ("error", "error"), ("unknown", "unknown"), ] super().__init__(values) self.show_scrollbar = False class FiltersPanel: def __init__(self) -> None: self.visible = False self.interface_textarea = TextArea( multiline=False, style="class:dialogger.textarea" ) self.method_textarea = TextArea( multiline=False, style="class:dialogger.textarea" ) self.type_filter_checkboxes = TypeCheckboxlist() float_frame = Box( padding_top=1, padding_left=2, padding_right=2, body=HSplit( padding=1, width=50, align=VerticalAlign.TOP, children=[ VSplit( children=[ Label("Interface", width=10), self.interface_textarea, ] ), VSplit( children=[ Label("Method", width=10), self.method_textarea, ] ), VSplit( children=[ Label("Type", width=10, dont_extend_height=False), self.type_filter_checkboxes, ] ), ], ), ) kb = KeyBindings() kb.add("tab")(focus_next) kb.add("s-tab")(focus_previous) self.container = Frame( title="Filters", body=float_frame, style="class:dialogger.background", modal=True, key_bindings=kb, ) def filter(self) -> Filter: return Filter( self.interface_textarea.text, self.method_textarea.text, self.type_filter_checkboxes.current_values, ) def __pt_container__(self) -> AnyContainer: return self.container ================================================ FILE: libs/androguard/ui/widget/frame.py ================================================ from functools import partial from typing import Optional from prompt_toolkit.filters import Condition from prompt_toolkit.formatted_text import AnyFormattedText, Template from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.layout import ( AnyContainer, AnyDimension, ConditionalContainer, Container, DynamicContainer, HSplit, VSplit, Window, ) from prompt_toolkit.widgets.base import Border, Label class SelectableFrame: """ Draw a border around any container, optionally with a title text. Changing the title and body of the frame is possible at runtime by assigning to the `body` and `title` attributes of this class. :param body: Another container object. :param title: Text to be displayed in the top of the frame (can be formatted text). :param style: Style string to be applied to this widget. """ def __init__( self, body: AnyContainer, title: AnyFormattedText = "", style: str = "", width: AnyDimension = None, height: AnyDimension = None, key_bindings: Optional[KeyBindings] = None, modal: bool = False, activated: bool = False, ) -> None: self.title = title self.body = body self.activated = activated def get_style() -> str: if self.activated: return "class:frame.border.selected" else: return "class:frame.border" fill = partial(Window, style=get_style) style = "class:frame " + style top_row_with_title = VSplit( [ fill(width=1, height=1, char=Border.TOP_LEFT), fill(char=Border.HORIZONTAL), fill(width=1, height=1, char="|"), # Notice: we use `Template` here, because `self.title` can be an # `HTML` object for instance. Label( lambda: Template(" {} ").format(self.title), style="class:frame.label", dont_extend_width=True, ), fill(width=1, height=1, char="|"), fill(char=Border.HORIZONTAL), fill(width=1, height=1, char=Border.TOP_RIGHT), ], height=1, ) top_row_without_title = VSplit( [ fill(width=1, height=1, char=Border.TOP_LEFT), fill(char=Border.HORIZONTAL), fill(width=1, height=1, char=Border.TOP_RIGHT), ], height=1, ) @Condition def has_title() -> bool: return bool(self.title) self.container = HSplit( [ ConditionalContainer( content=top_row_with_title, filter=has_title ), ConditionalContainer( content=top_row_without_title, filter=~has_title ), VSplit( [ fill(width=1, char=Border.VERTICAL), DynamicContainer(self.body), fill(width=1, char=Border.VERTICAL), # Padding is required to make sure that if the content is # too small, the right frame border is still aligned. ], padding=0, ), VSplit( [ fill(width=1, height=1, char=Border.BOTTOM_LEFT), fill(char=Border.HORIZONTAL), fill(width=1, height=1, char=Border.BOTTOM_RIGHT), ], # specifying height here will increase the rendering speed. height=1, ), ], width=width, height=height, style=style, key_bindings=key_bindings, modal=modal, ) def __pt_container__(self) -> Container: return self.container ================================================ FILE: libs/androguard/ui/widget/help.py ================================================ from prompt_toolkit.layout import AnyContainer, HSplit from prompt_toolkit.widgets import Box, Frame, Label class HelpPanel: def __init__(self) -> None: self.visible = False float_frame = Box( padding_top=1, padding_left=2, padding_right=2, body=HSplit( children=[ Label("up Move up"), Label("down Move down"), Label("shift + up Page up"), Label("shift + down Page down"), Label("home Go to top"), Label("end Go to bottom"), Label("tab Next pane"), Label("shift + tab Previous pane"), Label("ctrl + c Copy pane to clipboard"), Label("f Open filter options"), Label("h Help"), Label("q Quit"), ] ), ) self.container = Frame( title="Help", body=float_frame, style="class:dialogger.background", modal=True, ) def __pt_container__(self) -> AnyContainer: return self.container ================================================ FILE: libs/androguard/ui/widget/toolbar.py ================================================ from typing import Sequence from prompt_toolkit.formatted_text import AnyFormattedText, FormattedText from prompt_toolkit.layout.containers import AnyContainer, DynamicContainer from prompt_toolkit.widgets import FormattedTextToolbar from androguard.ui.widget.filters import FiltersPanel class StatusToolbar: def __init__(self, transactions: Sequence, filters: FiltersPanel) -> None: self.transactions = transactions self.filters = filters self.container = DynamicContainer(self.toolbar_container) def toolbar_container(self) -> AnyContainer: return FormattedTextToolbar( text=self.toolbar_text(), style="class:toolbar", ) def toolbar_text(self) -> AnyFormattedText: return FormattedText( [ ( "class:toolbar.text", f"Transactions: {len(self.transactions)}, Filter: {self.filters.filter()}", ) ] ) def __pt_container__(self) -> AnyContainer: return self.container ================================================ FILE: libs/androguard/ui/widget/transactions.py ================================================ import csv import io from prompt_toolkit.filters import Condition from prompt_toolkit.key_binding import KeyBindings from prompt_toolkit.layout import AnyContainer from prompt_toolkit.layout.dimension import AnyDimension, Dimension from androguard.ui import table from androguard.ui.selection import SelectionViewList from androguard.ui.widget.frame import SelectableFrame # import pyperclip class TransactionFrame: def __init__( self, transactions: SelectionViewList, height: AnyDimension = None ) -> None: self.transactions = transactions self.transactions.on_update_event += self.update_table self.headings = [ table.Label(""), table.Label("#"), table.Label("From"), table.Label("Method"), ] self.table = table.Table( table=[self.headings], # height=height, column_width=Dimension.exact(10), column_widths=[ Dimension.exact(1), Dimension(min=2, preferred=4, max=4), Dimension(min=20, preferred=40), Dimension(min=20, preferred=30), ], borders=table.EmptyBorder, ) self.pad_table() self.container = SelectableFrame( title="Transactions", body=self.get_content, ) def resize(self, height): # Subtract one for the header row height -= 1 self.transactions.resize_view(height) def get_content(self): return self.table def update_table(self, _): self.table.children.clear() self.table.add_row( self.headings, "class:transactions.heading", id(self.headings) ) for i in range( self.transactions.view.start, self.transactions.view.end ): row, style = self._to_row(self.transactions[i]) self.table.add_row( row, ( f"{style} reverse" if i == self.transactions.selection else style ), (id(self.transactions[i]), i == self.transactions.selection), ) self.pad_table() def pad_table(self): padding = ( self.transactions.max_view_size - self.transactions.view.size() ) empty_row = [ table.Label(""), table.Label(""), table.Label(""), table.Label(""), table.Label(""), ] for _ in range(padding): self.table.add_row( empty_row, "class:transaction.default", id(empty_row) ) def key_bindings(self) -> KeyBindings: kb = KeyBindings() @kb.add('up', filter=Condition(lambda: self.activated)) def _(event): self.transactions.move_selection(-1) @kb.add('down', filter=Condition(lambda: self.activated)) def _(event): self.transactions.move_selection(1) @kb.add('s-up', filter=Condition(lambda: self.activated)) def _(event): self.transactions.move_selection(-self.transactions.max_view_size) @kb.add('s-down', filter=Condition(lambda: self.activated)) def _(event): self.transactions.move_selection(self.transactions.max_view_size) @kb.add('home', filter=Condition(lambda: self.activated)) def _(event): self.transactions.move_selection(-self.transactions.selection) @kb.add('end', filter=Condition(lambda: self.activated)) def _(event): self.transactions.move_selection( len(self.transactions) - self.transactions.selection ) return kb @property def activated(self): return self.container.activated # Define a "name" setter @activated.setter def activated(self, value): self.container.activated = value # def copy_to_clipboard(self): # if self.transactions.selection_valid(): # output = io.StringIO() # writer = csv.writer(output, quoting=csv.QUOTE_NONE) # for t in self.transactions.data: # writer.writerow([ # t.interface, # str(t.method_number), # t.method, # hex(len(t.raw_data)) # ]) # pyperclip.copy(output.getvalue()) def _to_row(self, transaction): # TODO: Cache the rows so we don't need to recreate them. return [ table.Label(transaction.direction_indicator), table.Label(str(transaction.index)), table.Label(transaction.from_method), table.Label(transaction.to_method), ], transaction.style() def __pt_container__(self) -> AnyContainer: return self.container ================================================ FILE: libs/androguard/util.py ================================================ import binascii import hashlib import sys from typing import BinaryIO, Union from asn1crypto import keys, x509 #  External dependencies # import asn1crypto from asn1crypto.x509 import Name from loguru import logger class MyFilter: def __init__(self, level: str) -> None: self.level = level def __call__(self, record): levelno = logger.level(self.level).no return record["level"].no >= levelno def set_log(level:str) -> None: """ Sets the log for loguru based on the level being passed. The possible string values are: * `TRACE` * `DEBUG` * `INFO` * `SUCCESS` * `WARNING` * `ERROR` * `CRITICAL` :param level: the log level string """ logger.remove(0) my_filter = MyFilter(level) logger.add(sys.stderr, filter=my_filter, level=0) # Stuff that might be useful def read_at(buff: BinaryIO, offset: int, size: int = -1) -> bytes: idx = buff.tell() buff.seek(offset) d = buff.read(size) buff.seek(idx) return d def readFile(filename: str, binary: bool = True) -> bytes: """ Open and read a file :param filename: filename to open and read :param binary: `True` if the file should be read as binary :return: bytes if binary is `True`, str otherwise """ with open(filename, 'rb' if binary else 'r') as f: return f.read() def get_certificate_name_string( name: Union[dict, Name], short: bool = False, delimiter: str = ', ' ) -> str: """ Format the Name type of a X509 Certificate in a human readable form. :param name: Name object to return the DN from :param short: Use short form (default: False) :param delimiter: Delimiter string or character between two parts (default: ', ') :returns: the name string """ if isinstance(name, Name): # asn1crypto.x509.Name): name = name.native # For the shortform, we have a lookup table # See RFC4514 for more details _ = { 'business_category': ("businessCategory", "businessCategory"), 'serial_number': ("serialNumber", "serialNumber"), 'country_name': ("C", "countryName"), 'postal_code': ("postalCode", "postalCode"), 'state_or_province_name': ("ST", "stateOrProvinceName"), 'locality_name': ("L", "localityName"), 'street_address': ("street", "streetAddress"), 'organization_name': ("O", "organizationName"), 'organizational_unit_name': ("OU", "organizationalUnitName"), 'title': ("title", "title"), 'common_name': ("CN", "commonName"), 'initials': ("initials", "initials"), 'generation_qualifier': ("generationQualifier", "generationQualifier"), 'surname': ("SN", "surname"), 'given_name': ("GN", "givenName"), 'name': ("name", "name"), 'pseudonym': ("pseudonym", "pseudonym"), 'dn_qualifier': ("dnQualifier", "dnQualifier"), 'telephone_number': ("telephoneNumber", "telephoneNumber"), 'email_address': ("E", "emailAddress"), 'domain_component': ("DC", "domainComponent"), 'name_distinguisher': ("nameDistinguisher", "nameDistinguisher"), 'organization_identifier': ( "organizationIdentifier", "organizationIdentifier", ), } return delimiter.join( [ "{}={}".format( _.get(attr, (attr, attr))[0 if short else 1], name[attr] ) for attr in name ] ) def parse_public(data): from asn1crypto import keys, pem, x509 """ Loads a public key from a DER or PEM-formatted input. Supports RSA, DSA, EC public keys, and X.509 certificates. :param data: A byte string of the public key or certificate :raises ValueError: If the input data is not a known format :return: A keys.PublicKeyInfo object containing the parsed public key """ # Check if the data is in PEM format (starts with "-----") if pem.detect(data): type_name, _, der_bytes = pem.unarmor(data) if type_name in ['PRIVATE KEY', 'RSA PRIVATE KEY']: raise ValueError( "The data specified appears to be a private key, not a public key." ) else: # If not PEM, assume it's DER-encoded der_bytes = data # Try to parse the data as PublicKeyInfo (standard public key structure) try: public_key_info = keys.PublicKeyInfo.load(der_bytes) public_key_info.native # Fully parse the object (asn1crypto is lazy) return public_key_info except ValueError: pass # Not a PublicKeyInfo structure # Try to parse the data as an X.509 certificate try: certificate = x509.Certificate.load(der_bytes) public_key_info = certificate['tbs_certificate'][ 'subject_public_key_info' ] public_key_info.native # Fully parse the object return public_key_info except ValueError: pass # Not a certificate # Try to parse the data as RSAPublicKey try: rsa_public_key = keys.RSAPublicKey.load(der_bytes) rsa_public_key.native # Fully parse the object # Wrap the RSAPublicKey in PublicKeyInfo return keys.PublicKeyInfo.wrap(rsa_public_key, 'rsa') except ValueError: pass # Not an RSAPublicKey structure raise ValueError( "The data specified does not appear to be a known public key or certificate format." ) def calculate_fingerprint(key_object): """ Calculates a SHA-256 fingerprint of the public key based on its components. :param key_object: A keys.PublicKeyInfo object containing the parsed public key :return: The fingerprint of the public key as a byte string """ to_hash = None # RSA Public Key if key_object.algorithm == 'rsa': key = key_object['public_key'].parsed # Prepare string with modulus and public exponent to_hash = '%d:%d' % ( key['modulus'].native, key['public_exponent'].native, ) # DSA Public Key elif key_object.algorithm == 'dsa': key = key_object['public_key'].parsed params = key_object['algorithm']['parameters'] # Prepare string with p, q, g, and public key to_hash = '%d:%d:%d:%d' % ( params['p'].native, params['q'].native, params['g'].native, key.native, ) # EC Public Key elif key_object.algorithm == 'ec': public_key = key_object['public_key'].native # Prepare byte string with curve name and public key to_hash = '%s:' % key_object.curve[1] to_hash = to_hash.encode('utf-8') + public_key # Ensure to_hash is encoded as bytes if it's a string if isinstance(to_hash, str): to_hash = to_hash.encode('utf-8') # Return the SHA-256 hash of the formatted key data return hashlib.sha256(to_hash).digest() ================================================ FILE: libs/apkInspector/__init__.py ================================================ __version__ = "1.3.6" ================================================ FILE: libs/apkInspector/axml.py ================================================ import io import logging import struct import random from .extract import extract_file_based_on_header_info from .headers import ZipEntry from .helpers import escape_xml_entities logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(filename)s:%(lineno)d -> %(funcName)s : %(message)s' ) class ResChunkHeader: """ Chunk header used throughout the axml. This header is essential as it contains information about the header size but also the total size of the chunk the header belongs to. """ def __init__(self, header_type, header_size, total_size, data): self.type = header_type self.header_size = header_size self.total_size = total_size self.data = data @classmethod def parse(cls, file): """ Read the header type (2 bytes), header size (2 bytes), and entry size (4 bytes). :param file: the xml file e.g. with open('/path/AndroidManifest.xml', 'rb') as file :type file: bytesIO :return: Returns an instance of itself :rtype: ResChunkHeader """ header_data = file.read(8) if len(header_data) < 8: # End of file return None header_type, header_size, total_size = struct.unpack(' end_stringpool_offset: return "" # TODO:a check for non null-terminated strings should be here as well content = file.read(real_length * 2).decode('utf-16le') else: # Handle UTF-8 encoded strings u16len = struct.unpack('B', file.read(1))[0] file.read(1) u8len = u16len content = file.read(u8len).decode('utf-8', errors='replace') # TODO: fixup is needed here as well, like for the utf16 case return content @classmethod def read_strings(cls, file, string_offsets, strings_start, is_utf8): """ Gets the actual strings based on the offsets retrieved from read_string_offsets(). :param file: the xml file right after the string pool offsets have been read :type file: bytesIO :param string_offsets: see -> read_string_offsets() :type string_offsets: list :param strings_start: the offset at which the string data starts :type strings_start: int :param is_utf8: boolean to check if a utf8 string is expected :type is_utf8: bool :return: Returns a list of the string data :rtype: list """ strings = [] for offset in string_offsets: # Calculate the absolute offset within the string data +8 for the file header absolute_offset = strings_start + offset + 8 # TODO: update this to get the file header size # Move the file pointer to the start of the string file.seek(absolute_offset) # Read the length of the string (in bytes) content = cls.decode_stringpool_mixed_string(file, is_utf8, strings_start + string_offsets[-1]) strings.append(content) return strings @classmethod def read_string(cls, file, string_offset, strings_start, is_utf8, end_stringpool_offset): """ Read a string from the string pool when the offset of it is known already. :param file: the string pool data parsed as bytes :type file: io.bytesIO :param string_offset: the offset at which the string is located in the string pool :type string_offset: int :param strings_start: the offset at which the string data starts :type strings_start: int :param is_utf8: boolean to check if a utf8 string is expected :type is_utf8: bool :param end_stringpool_offset: the offset at which the string pool ends :type end_stringpool_offset: int :return: Returns the string or None :rtype: str or None """ absolute_offset = strings_start + string_offset - 28 if file.getbuffer().nbytes < absolute_offset: return None file.seek(absolute_offset) string = cls.decode_stringpool_mixed_string(file, is_utf8, end_stringpool_offset) return string @classmethod def get_string_from_pool(cls, position, string_pool_data, end_stringpool_offset, strings_start, is_utf8): """ Retrieve a single string from the String Pool, given its position. It first gets the correct offset of the string and then reads the string. :param position: The position of the string to be retrieved :type position: int :param string_pool_data: the string pool data parsed as bytes :type string_pool_data: io.BytesIO :param end_stringpool_offset: the offset at which the string pool ends :type end_stringpool_offset: int :param strings_start: the offset at which the string data starts :type strings_start: int :param is_utf8: boolean to check if a utf8 string is expected :type is_utf8: bool :return: Returns the string or None :rtype: str or None """ try: string_offset = cls.read_string_offset(string_pool_data, position) if string_offset is None: return None return cls.read_string(string_pool_data, string_offset, strings_start, is_utf8, end_stringpool_offset) except Exception as e: logging.exception(f"Exception while retrieving string from pool: {e}") return None @classmethod def parse_lite(cls, file): """ A 'lite' parser that gets the header and then reads the rest of the chunk as a blob of bytes. :param file: the AndroidManifest.xml file :type file: bytesIO :return: returns the header and the chunk data :rtype: tuple(ResStringPoolHeader, bytes) """ ResStringPool_header = ResStringPoolHeader.parse(file) string_pool_data = read_remaining(file, ResStringPool_header.header) while True: # read any null bytes remaining cur_pos = file.tell() if file.read(2) == b'\x80\x01': file.seek(cur_pos) break file.seek(cur_pos) file.read(1) return ResStringPool_header, string_pool_data @classmethod def parse(cls, file): """ Parse the string pool to acquire the strings used within the axml. :param file: the xml file right after the file header is read :type file: bytesIO :return: Returns an instance of itself :rtype: StringPoolType """ string_pool_header = ResStringPoolHeader.parse(file) string_pool_start = file.tell() size_of_strings_offsets = string_pool_header.strings_start - 28 # it should be divisible by 4, as 4 bytes are per offset, so we can get accurately the # of strings num_of_strings = size_of_strings_offsets // 4 if not (size_of_strings_offsets / 4).is_integer(): logging.warning(f"The number of strings in the string pool is not a integer number.") string_offsets = cls.read_string_offsets(file, num_of_strings, string_pool_header.strings_start + 8) is_utf8 = bool(string_pool_header.flags & (1 << 8)) string_list = cls.read_strings(file, string_offsets, string_pool_header.strings_start, is_utf8) while True: # read any null bytes remaining cur_pos = file.tell() if file.read(2) == b'\x80\x01': file.seek(cur_pos) break file.seek(cur_pos) file.read(1) if file.getbuffer().nbytes < file.tell() + 8: raise ValueError("Resource Map header was not detected.") string_pool_end = file.tell() file.seek(string_pool_start) string_pool_data = file.read(string_pool_end - string_pool_start) return cls( string_pool_header, string_offsets, string_list, string_pool_data ) class XmlResourceMapType: """ Resource map class, with the header and the resource IDs. """ def __init__(self, header, resids, resids_data): self.header = header self.resids = resids self.data = resids_data @classmethod def parse_lite(cls, file): """ A 'lite' parser that gets the header and then reads the rest of the chunk as a blob of bytes. :param file: the AndroidManifest.xml file :type file: bytesIO :return: returns the header and the chunk data :rtype: tuple(ResChunkHeader, bytes) """ resource_map_header = ResChunkHeader.parse(file) resource_map_data = read_remaining(file, resource_map_header) return resource_map_header, resource_map_data @classmethod def parse(cls, file): """ Parse the resource map and get the resource IDs. :param file: the xml file right after the string pool is read :type file: bytesIO :return: Returns an instance of itself :rtype: XmlResourceMapType """ header = ResChunkHeader.parse(file) num_resids = (header.total_size - header.header_size) // 4 resids_data = file.read(num_resids * 4) chunks = [resids_data[i:i + 4] for i in range(0, len(resids_data), 4)] resids = [struct.unpack(' 8: header_data = file.read(header.header_size - 8) return cls(header, header_data) class XmlStartNamespace: """ The actual start of the xml, after this the elements of the xml will be found. """ def __init__(self, header: ResXMLHeader, ext, ext_data): self.header = header self.ext = ext # [prefix_index, uri_index] self.data = ext_data @classmethod def parse(cls, file, header_t: ResXMLHeader): """ Parse the starting element of a Namespace :param file: the axml already pointing at the right offset :type file: bytesIO :param header_t: the already read header of the chunk :type header_t: ResXMLHeader :return: an instance of itself :rtype: XmlStartNamespace """ num_exts = (header_t.header.total_size - header_t.header.header_size) // 4 ext_data = file.read(num_exts * 4) chunks = [ext_data[i:i + 4] for i in range(0, len(ext_data), 4)] ext = [struct.unpack('\n" if attributes else f"<{string_list[element.attrext[1]]}>\n" else: tag_line = f"<{string_list[element.attrext[1]]} {attributes}>\n" if attributes else f"<{string_list[element.attrext[1]]}>\n" android_manifest_xml.append(tag_line) elif isinstance(element, XmlcDataElement): if android_manifest_xml[-1][-1] == '\n': android_manifest_xml[-1] = android_manifest_xml[-1].replace('\n', string_list[element.data_index]) elif isinstance(element, XmlEndElement): name = string_list[element.attrext[1]] closing_tag = f"" if name == "manifest" else f"\n" android_manifest_xml.append(closing_tag) return ''.join(android_manifest_xml) def get_manifest(raw_manifest): """ Helper method to directly return the AndroidManifest file as created by create_manifest() :param raw_manifest: expects the encoded AndroidManifest.xml file as a file-like object :type raw_manifest: bytesIO :return: returns the decoded AndroidManifest file :rtype: str """ manifest_object = ManifestStruct.parse(raw_manifest) return manifest_object.get_manifest() def parse_apk_for_manifest(inc_apk, raw: bool = False, lite: bool = False, num_of_elements: int = 3): """ Helper method to retrieve the AndroidManifest directly from an APK, either by providing the APK itself or the path. :param inc_apk: The path of the APK file or the APK itself :type inc_apk: str :param raw: Boolean parameter to define whether the manifest is provided as string or bytes :type raw: bool :param lite: Boolean parameter to define whether the lite parsing would occur or not :type lite: bool :param num_of_elements: Number of elements to parse from the APK :type num_of_elements: int :return: Returns the AndroidManifest.xml as string :rtype: str """ if raw: apk_file = inc_apk else: with open(inc_apk, 'rb') as apk: apk_file = io.BytesIO(apk.read()) entry_manifest = ZipEntry.parse_single(apk_file, "AndroidManifest.xml") manifest_local = entry_manifest.local_headers["AndroidManifest.xml"].to_dict() manifest_bytes = extract_file_based_on_header_info(apk_file, manifest_local, entry_manifest.central_directory.entries[ "AndroidManifest.xml"].to_dict())[0] if lite: manifest = get_manifest_lite(io.BytesIO(manifest_bytes), num_of_elements=num_of_elements) else: manifest = get_manifest(io.BytesIO(manifest_bytes)) return manifest def get_manifest_lite(manifest: io.BytesIO, num_of_elements: int): """ A method to provide 'lite' parsing of the AndroidManifest in order to retrieve a few details as fast as possible. Based on the integer 'num_of_elements' being passed as a parameter, it will attempt to fetch this many chunks right after the 'resource map' chunk and will get the attributes values of these elements if they are of instance XmlStartElement :param manifest: The manifest to be processed :type manifest: io.BytesIO :param num_of_elements: :type num_of_elements: int :return: Returns a dictionary of the attributes discovered :rtype: dict """ (ResChunkHeader_init, [string_pool_ResChunkHeader, string_pool_data], [resource_map_header, resource_map_data], elements) = ManifestStruct.parse_lite(manifest, num_of_elements=num_of_elements) end_stringpool_offset = string_pool_ResChunkHeader.header.total_size + 8 strings_start = string_pool_ResChunkHeader.strings_start is_utf8 = bool(string_pool_ResChunkHeader.flags & (1 << 8)) attributes_dict = {} for element in elements: if isinstance(element, XmlStartElement): for attr in element.attributes: if isinstance(attr, XmlAttributeElement): attr_name = StringPoolType.get_string_from_pool(attr.name_index, io.BytesIO(string_pool_data), end_stringpool_offset, strings_start, is_utf8) attribute_value = get_attribute_value(attr_name, attr, end_stringpool_offset, strings_start, is_utf8, io.BytesIO(string_pool_data)) attributes_dict[attr_name] = attribute_value return attributes_dict def get_attribute_value(attr_name, attribute, end_stringpool_offset, strings_start, is_utf8, string_pool_data): """ Gets the value for a single attribute :param attr_name: The attribute name as it has been retrieved by the string pool :type attr_name: str :param attribute: the parsed attribute itself :type attribute: XmlAttributeElement :param end_stringpool_offset: The end of string pool offset :type end_stringpool_offset: int :param strings_start: the strings start offset for the string pool :type strings_start: int :param is_utf8: boolean to check if a utf8 string is expected :type is_utf8: bool :param string_pool_data: The string pool data as io.BytesIO :type string_pool_data: io.BytesIO :return: returns the attribute value :rtype: str """ try: if attribute.typed_value_datatype == 1: # reference type return f"@{attribute.typed_value_data}" elif attribute.typed_value_datatype == 3: # string type str_pool_loc = StringPoolType.get_string_from_pool(attribute.typed_value_data, string_pool_data, end_stringpool_offset, strings_start, is_utf8) return escape_xml_entities(str_pool_loc) if str_pool_loc else str(attribute.typed_value_data) elif attribute.typed_value_datatype == 4: # float type str_pool_loc = StringPoolType.get_string_from_pool(attribute.typed_value_data, string_pool_data, end_stringpool_offset, strings_start, is_utf8) if not str_pool_loc: str_pool_loc = StringPoolType.get_string_from_pool(attribute.raw_value_index, string_pool_data, end_stringpool_offset, strings_start, is_utf8) return str_pool_loc if str_pool_loc else str(attribute.typed_value_data) elif attribute.typed_value_datatype == 17: # int-hex type return f"0x{attribute.typed_value_data:08X}" elif attribute.typed_value_datatype == 18: # boolean type return "true" if attribute.typed_value_data else "false" else: return str(attribute.typed_value_data) except Exception as e: logging.exception(f"Exception processing attribute {attr_name}: {e}") return str(attribute.typed_value_data) ================================================ FILE: libs/apkInspector/extract.py ================================================ import logging import zlib import os def extract_file_based_on_header_info(apk_file, local_header_info, central_directory_info): """ Extracts a single file from the apk_file based on the information provided from the offset and the header_info. It takes into account that the compression method provided might not be STORED or DEFLATED! The returned 'indicator', shows what compression method was used. Besides the standard STORED/DEFLATE it may return 'DEFLATED_TAMPERED', which means that the compression method found was not DEFLATED(8) but it should have been, and 'STORED_TAMPERED' which means that the compression method found was not STORED(0) but should have been. :param apk_file: The APK file e.g. with open('test.apk', 'rb') as apk_file :type apk_file: bytesIO :param local_header_info: The local header dictionary info for that specific filename :type local_header_info: dict :param central_directory_info: The central directory entry for that specific filename :type central_directory_info: dict :return: Returns the actual extracted data for that file along with an indication of whether a static analysis evasion technique was used or not. :rtype: set(bytes, str) """ filename_length = local_header_info["file_name_length"] if local_header_info["compressed_size"] == 0 or local_header_info["uncompressed_size"] == 0: compressed_size = central_directory_info["compressed_size"] uncompressed_size = central_directory_info["uncompressed_size"] else: compressed_size = local_header_info["compressed_size"] uncompressed_size = local_header_info["uncompressed_size"] extra_field_length = local_header_info["extra_field_length"] compression_method = local_header_info["compression_method"] # Skip the offset + local header to reach the compressed data local_header_size = 30 # Size of the local header in bytes offset = central_directory_info["relative_offset_of_local_file_header"] apk_file.seek(offset + local_header_size + filename_length + extra_field_length) if compression_method == 0: # Stored (no compression) uncompressed_data = apk_file.read(uncompressed_size) extracted_data = uncompressed_data indicator = 'STORED' elif compression_method == 8: compressed_data = apk_file.read(compressed_size) # -15 for windows size due to raw stream with no header or trailer extracted_data = zlib.decompress(compressed_data, -15) indicator = 'DEFLATED' elif compressed_size == uncompressed_size: compressed_data = apk_file.read(uncompressed_size) extracted_data = compressed_data indicator = 'STORED_TAMPERED' else: cur_loc = apk_file.tell() try: compressed_data = apk_file.read(compressed_size) c_obj = zlib.decompressobj(-15) extracted_data = c_obj.decompress(compressed_data) if not c_obj.eof or c_obj.unused_data or c_obj.unconsumed_tail: raise ValueError("Invalid or non-pure deflate") indicator = 'DEFLATED_TAMPERED' except Exception as e: logging.debug(e) apk_file.seek(cur_loc) compressed_data = apk_file.read(uncompressed_size) extracted_data = compressed_data indicator = 'STORED_TAMPERED' return extracted_data, indicator def extract_all_files_from_central_directory(apk_file, central_directory_entries, local_header_entries, output_dir): """ Extracts all files from an APK based on the entries detected in the central_directory_entries. :param apk_file: The APK file e.g. with open('test.apk', 'rb') as apk_file :type apk_file: bytesIO :param central_directory_entries: The dictionary with all the entries for the central directory :type central_directory_entries: dict :param local_header_entries: The dictionary with all the local header entries :type local_header_entries: dict :param output_dir: The output directory where to save the files. :type output_dir: str :return: Returns 0 if no errors, 1 if an exception and 2 if the output directory already exists :rtype: int """ try: # Check if the output directory already exists if os.path.exists(output_dir): print("Extraction aborted. Output directory already exists.") return 2 # Create the output directory or overwrite if it already exists os.makedirs(output_dir, exist_ok=True) # Iterate over central directory entries for filename, cd_header_info in central_directory_entries.items(): if not filename: # to account for the cases where an empty filename entry is added continue # Extract the file using the local header information extracted_data = \ extract_file_based_on_header_info(apk_file, local_header_entries[filename], cd_header_info)[0] # Construct the output file path output_path = os.path.join(output_dir, filename) # Create directories if necessary os.makedirs(os.path.dirname(output_path), exist_ok=True) # Write the extracted data to the output file with open(output_path, 'wb') as output_file: output_file.write(extracted_data) return 0 except Exception as e: print(f"Error extracting files: {e}") return 1 ================================================ FILE: libs/apkInspector/headers.py ================================================ import io import logging import os import struct from typing import Dict from .extract import extract_file_based_on_header_info, extract_all_files_from_central_directory from .helpers import pretty_print_header, save_to_json, save_data_to_file class EndOfCentralDirectoryRecord: """ A class to provide details about the end of central directory record. """ def __init__(self, signature, number_of_this_disk, disk_where_central_directory_starts, number_of_central_directory_records_on_this_disk, total_number_of_central_directory_records, size_of_central_directory, offset_of_start_of_central_directory, comment_length, comment): self.signature = signature self.number_of_this_disk = number_of_this_disk self.disk_where_central_directory_starts = disk_where_central_directory_starts self.number_of_central_directory_records_on_this_disk = number_of_central_directory_records_on_this_disk self.total_number_of_central_directory_records = total_number_of_central_directory_records self.size_of_central_directory = size_of_central_directory self.offset_of_start_of_central_directory = offset_of_start_of_central_directory self.comment_length = comment_length self.comment = comment @classmethod def parse(cls, apk_file): """ Method to locate the "end of central directory record signature" as the first step of the correct process of reading a ZIP archive. Should be noted that certain APKs do not follow the zip specification and declare multiple "end of central directory records". For this reason the search for the corresponding signature of the eocd starts from the end of the apk. :param apk_file: The already read/loaded data of the APK file e.g. with open('test.apk', 'rb') as apk_file :type apk_file: bytesIO :return: Returns the end of central directory record with all the information available if the corresponding signature is found. If not, then it returns None. :rtype: EndOfCentralDirectoryRecord or None """ chunk_size = 1024 offset = 0 signature_offset = -1 file_size = apk_file.seek(0, 2) while offset < file_size: position = max(0, file_size - offset - chunk_size) apk_file.seek(position) chunk = apk_file.read(chunk_size) if not chunk: break signature_offset = chunk.rfind(b'\x50\x4b\x05\x06') # EOCD signature if signature_offset != -1: eo_central_directory_offset = position + signature_offset break # Found EOCD signature # Adjust offset to overlap by 4 bytes offset += chunk_size - 4 if signature_offset == -1: raise ValueError("End of central directory record (EOCD) signature not found") apk_file.seek(eo_central_directory_offset) signature = apk_file.read(4) number_of_this_disk = struct.unpack(' Dict[str, CentralDirectoryEntry]: """ List of information about the entries in the central directory. :return: returns a dictionary where the keys are the filenames and the values are each an instance of the CentralDirectoryEntry :rtype: dict """ return self.central_directory.entries def namelist(self): """ List of the filenames included in the central directory. :return: returns the list of the filenames :rtype: list """ return [vl for vl in self.central_directory.to_dict()] def extract_all(self, extract_path, apk_name): """ Extracts all the contents of the APK. :param extract_path: where to extract it :type extract_path: str :param apk_name: the name of the apk :type apk_name: str """ output_path = os.path.join(extract_path, apk_name) if not extract_all_files_from_central_directory(self.zip, self.to_dict()["central_directory"], self.to_dict()["local_headers"], output_path): logging.info(f"Extraction successful for: {apk_name}") def print_headers_of_filename(cd_h_of_file, local_header_of_file): """ Prints out the details for both the central directory header and the local file header. Useful for the CLI. :param cd_h_of_file: central directory header of a filename as it may be retrieved from headers_of_filename :type cd_h_of_file: dict :param local_header_of_file: local header dictionary of a filename as it may be retrieved from headers_of_filename :type local_header_of_file: dict """ if not cd_h_of_file or not local_header_of_file: logging.info("Are you sure the filename exists?") return pretty_print_header("CENTRAL DIRECTORY") for k in cd_h_of_file: if k == 'Relative offset of local file header' or k == 'Offset in the central directory header': print(f"{k:40} : {hex(int(cd_h_of_file[k]))} | {cd_h_of_file[k]}") else: print(f"{k:40} : {cd_h_of_file[k]}") pretty_print_header("LOCAL HEADER") for k in local_header_of_file: print(f"{k:40} : {local_header_of_file[k]}") def show_and_save_info_of_headers(entries, apk_name, header_type: str, export: bool, show: bool): """ Print information for each entry for the central directory header and allow to possibly export to JSON. :param entries: The dictionary with all the entries for the central directory :type entries: dict :param apk_name: String with the name of the APK, so it can be used for the export. :type apk_name: str :param header_type: What type of header that is, either central_directory or local, to be used for the export :type header_type: str :param export: Boolean for exporting or not to JSON :type export: bool :param show: Boolean for printing or not the entries :type show: bool """ if show: for entry in entries: pretty_print_header(entry) print(entries[entry]) if export: save_to_json(f"{apk_name}_{header_type}_header.json", entries) ================================================ FILE: libs/apkInspector/helpers.py ================================================ import json def pretty_print_header(header_text, width=50, char='-'): """ Formatting output used for the CLI :param header_text: The text to be displayed :type header_text: str :param width: total width of the display :type width: int :param char: which char to be used as a filler :type char: str """ padding = max(0, width - len(header_text)) // 2 formatted_header = f"\n{char * padding} {header_text} {char * padding}" print(formatted_header) def save_data_to_file(filename, data): """ Write data to file :param data: the actual data :type data: bytes :param filename: file to be saved in :type filename: str """ try: with open(filename, 'wb') as output_file: output_file.write(data) print(f"Data saved to {filename}") except Exception as e: print(f"Error while saving data to {filename}: {e}") def save_to_json(filename, dictionary): """ Simple method to save a dictionary as JSON into the filename. :param filename: the name of the file to be saved as :type filename: str :param dictionary: the dictionary to be saved as JSON :type dictionary: dict """ with open(filename, "w") as h_file: json.dump(dictionary, h_file, indent=4) def escape_xml_entities(data): """ Escaping characters that cant be included within an XML file. :param data: The string to escape :type data: str :return: The escaped output :rtype: str """ replacements = { '<': '<', '>': '>', '&': '&', '"': '"', "'": ''' } return ''.join(replacements.get(c, c) for c in data) ================================================ FILE: libs/apkInspector/indicators.py ================================================ import io import logging import struct from .extract import extract_file_based_on_header_info from .headers import ZipEntry from .axml import ResChunkHeader, StringPoolType, XmlResourceMapType, XmlStartElement, ManifestStruct, ResXMLHeader, \ read_remaining def count_eocd(apk_file): """ Counter for the number of time the end of central directory record was found. :param apk_file: The APK file e.g. with open('test.apk', 'rb') as apk_file :type apk_file: bytesIO :return: The count of how many times the end of central directory record was found :rtype: int """ apk_file.seek(0) content = apk_file.read() return content.count(b'\x50\x4b\x05\x06') def zip_tampering_indicators(apk_file, strict: bool): """ Method to check the for indicators of tampering in the ZIP structure of the APK. These tamperings in the ZIP structure, serve as a method of evasion against static analysis tools. :param apk_file: The APK file e.g. with open('test.apk', 'rb') as apk_file :type apk_file: bytesIO :param strict: Whether to be checking strictly or not. Utilizing the application set that was used also for the tests here https://github.com/erev0s/apkInspector/tree/main/tests/top_apps, we tested what kind of indicators would be returned. It turns out that in some cases the local header and the central directory entry for the same file do not have the same values for some keys. So the strict checking was added, to be able to exclude these rare but possible occasions. :type strict: bool :return: Returns a dictionary with the detected indicators. :rtype: dict """ zip_tampering_indicators_dict = {} if strict: # This is added as strict as a few legitimate APKs do have it for some reason count = count_eocd(apk_file) if count > 1: zip_tampering_indicators_dict['eocd_count'] = count zipentry_dict = ZipEntry.parse(apk_file).to_dict() empty_keys = any(k == "" or k is None for k in zipentry_dict["central_directory"].keys()) if empty_keys: zip_tampering_indicators_dict['empty_keys'] = empty_keys unique_keys = list(zipentry_dict["central_directory"].keys() ^ zipentry_dict["local_headers"].keys()) common_keys = list(set(zipentry_dict["central_directory"].keys()) & set(zipentry_dict["local_headers"].keys())) if unique_keys: zip_tampering_indicators_dict['unique_entries'] = unique_keys for key in common_keys: cd_entry = zipentry_dict["central_directory"][key] lh_entry = zipentry_dict["local_headers"][key] temp = {} if cd_entry['compression_method'] not in [0, 8]: temp['central compression method'] = cd_entry['compression_method'] if lh_entry['compression_method'] not in [0, 8]: temp['local compression method'] = lh_entry['compression_method'] if cd_entry['compression_method'] not in [0, 8] or lh_entry['compression_method'] not in [0, 8]: indicator = \ extract_file_based_on_header_info(apk_file, lh_entry, cd_entry)[ 1] temp['actual compression method'] = indicator df_keys = local_and_central_header_discrepancies(cd_entry, lh_entry, strict) if df_keys: temp['differing headers'] = df_keys if not temp: continue zip_tampering_indicators_dict[key] = temp return zip_tampering_indicators_dict def local_and_central_header_discrepancies(dict1, dict2, strict: bool): """ Checking discrepancies between local header values and central directory values :param dict1: the central directory dictionary :type dict1: dict :param dict2: the local headers dictionary :type dict2: dict :param strict: Boolean for strict checking the headers or not :type strict: bool :return: Returns a list with the common keys between the dictionaries that have different values. :rtype: list """ common_keys = set(dict1.keys()) & set(dict2.keys()) differences = {key: (dict1[key], dict2[key]) for key in common_keys if dict1[key] != dict2[key]} # Display the keys with differing values keys = [] for key, values in dict(sorted(differences.items())).items(): # strict checking or not: excluding these as they differ often if not strict and key in ['extra_field', 'extra_field_length', 'crc32_of_uncompressed_data', 'compressed_size', 'uncompressed_size']: continue keys.append(key) return keys def process_elements_indicators(file): """ It starts processing the remaining chunks **after** the resource map chunk. It also returns whether dummy data have been found between the elements, so it can be reported that the apk employed this evasion technique. The difference between the process_elements method found in the axml module is that in this case it does not take into account the total size of the element as stated in the header, but tries to parse the contents regardless. This means that it will detect any dummy data injected after the actual data. :param file: the axml that will be processed :type file: BytesIO :return: Returns all the elements found as their corresponding classes and whether dummy data were found in between. :rtype: set(list, set(bool, bool)) """ elements = [] dummy_data_between_elements = False wrong_end_namespace_size = False unknown_chunk_type = False min_size = 8 while True: cur_pos = file.tell() if file.getbuffer().nbytes < cur_pos + min_size: # we reached the end of the file break _type, _header_size, _size = struct.unpack('{key}" if parent_key else key print(f"{full_key}: {value}") def get_apk_files(path): # If the path is a single file, return it as a list if it's an APK if os.path.isfile(path): return [path] # If the path is a directory, return a list of all APK files in it elif os.path.isdir(path): return [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.apk') and os.path.isfile(os.path.join(path, f))] # If the path is invalid or not an APK file, return an empty list return [] def main(): parser = argparse.ArgumentParser(description='apkInspector is a tool designed to provide detailed insights into ' 'the zip structure of APK files, offering the ' 'capability to extract content and decode the AndroidManifest.xml ' 'file.') parser.add_argument('-apk', help='A single APK to inspect or a directory where multiple APKs may reside.') parser.add_argument('-f', '--filename', help='Filename to provide info for') parser.add_argument('-ll', '--list-local', action='store_true', help='List all files by name from local headers') parser.add_argument('-lc', '--list-central', action='store_true', help='List all files by name from central ' 'directory header') parser.add_argument('-la', '--list-all', action='store_true', help='List all files from both central directory and local headers') parser.add_argument('-e', '--export', action='store_true', help='Export to JSON. What you list from the other flags, will be exported') parser.add_argument('-x', '--extract', action='store_true', help='Attempt to extract the file specified by the -f ' 'flag') parser.add_argument('-xa', '--extract-all', action='store_true', help='Attempt to extract all files detected in ' 'the central directory header') parser.add_argument('-m', '--manifest', action='store_true', help='Extract and decode the AndroidManifest.xml') parser.add_argument('-sm', '--specify-manifest', help='Pass an encoded AndroidManifest.xml file to be decoded') parser.add_argument('-a', '--analyze', action='store_true', help='Check an APK for static analysis evasion techniques') parser.add_argument('-v', '--version', action='store_true', help='Retrieves version information') args = parser.parse_args() if args.version: mm = """ # _ _____ _ # | | |_ _| | | # __ _ _ __ | | __ | | _ __ ___ _ __ ___ ___ | |_ ___ _ __ # / _` || '_ \ | |/ / | | | '_ \ / __|| '_ \ / _ \ / __|| __| / _ \ | '__| # | (_| || |_) || < _| |_ | | | |\__ \| |_) || __/| (__ | |_ | (_) || | # \__,_|| .__/ |_|\_\ \___/ |_| |_||___/| .__/ \___| \___| \__| \___/ |_| # | | | | # |_| |_| """ print(mm) print(f"apkInspector Library Version: {version}") print(f"Copyright 2025 erev0s \n") return print(f"apkInspector Version: {version}") print(f"Copyright 2025 erev0s \n") if args.apk is None and args.specify_manifest is None: parser.error('APK file or AndroidManifest.xml file is required') if not (args.specify_manifest is None) != (args.apk is None): parser.error( 'Please specify an apk file with flag "-apk" or an AndroidManifest.xml file with flag "-sm", but not both.') if args.apk: apk_files = get_apk_files(args.apk) if not apk_files: print(f"No APK files found at: {args.apk}") return for apk in apk_files: pretty_print_header(f"Results for {apk}:") apk_name = os.path.splitext(apk)[0] with open(apk, 'rb') as apk_file: zipentry = ZipEntry.parse(apk_file) if args.filename and args.extract: cd_h_of_file = zipentry.get_central_directory_entry_dict(args.filename) if cd_h_of_file is None: print(f"It appears that file: {args.filename} is not among the entries of the central directory!") return local_header_of_file = zipentry.get_local_header_dict(args.filename) print_headers_of_filename(cd_h_of_file, local_header_of_file) extracted_data = extract_file_based_on_header_info(apk_file, local_header_of_file, cd_h_of_file)[0] save_data_to_file(f"EXTRACTED_{args.filename}", extracted_data) elif args.filename: cd_h_of_file = zipentry.get_central_directory_entry_dict(args.filename) if cd_h_of_file is None: print(f"It appears that file: {args.filename} is not among the entries of the central directory!") return local_header_of_file = zipentry.get_local_header_dict(args.filename) print_headers_of_filename(cd_h_of_file, local_header_of_file) elif args.extract_all: print(f"Number of entries: {len(zipentry.central_directory.entries)}") if not extract_all_files_from_central_directory(apk_file, zipentry.to_dict()["central_directory"], zipentry.to_dict()["local_headers"], apk_name): print(f"Extraction successful for: {apk_name}") elif args.list_local: show_and_save_info_of_headers(zipentry.to_dict()["local_headers"], apk_name, "local", args.export, True) print(f"Local headers list complete. Export: {args.export}") elif args.list_central: show_and_save_info_of_headers(zipentry.to_dict()["central_directory"], apk_name, "central", args.export, True) print(f"Central header list complete. Export: {args.export}") elif args.list_all: show_and_save_info_of_headers(zipentry.to_dict()["central_directory"], apk_name, "local", args.export, True) show_and_save_info_of_headers(zipentry.to_dict()["local_headers"], apk_name, "local", args.export, True) print(f"Central and local headers list complete. Export: {args.export}") elif args.manifest: cd_h_of_file = zipentry.get_central_directory_entry_dict("AndroidManifest.xml") local_header_of_file = zipentry.get_local_header_dict("AndroidManifest.xml") extracted_data = io.BytesIO( extract_file_based_on_header_info(apk_file, local_header_of_file, cd_h_of_file)[0]) manifest = get_manifest(extracted_data) with open("decoded_AndroidManifest.xml", "w", encoding="utf-8") as xml_file: xml_file.write(manifest) print("AndroidManifest was saved as: decoded_AndroidManifest.xml") elif args.analyze: tamperings = apk_tampering_check(zipentry.zip, False) if tamperings['zip tampering']: print( f"\nThe zip structure was tampered with using the following patterns:\n") print_nested_dict(tamperings['zip tampering']) else: print(f"No files were detected were a tampering in the zip structure was present.") if tamperings['manifest tampering']: print(f"\n\nThe AndroidManifest.xml file was tampered using the following patterns:\n") print_nested_dict(tamperings['manifest tampering']) else: print(f"The AndroidManifest.xml file does not seem to be tampered structurally.") else: parser.print_help() elif args.specify_manifest: with open(args.specify_manifest, 'rb') as enc_manifest: manifest = get_manifest(io.BytesIO(enc_manifest.read())) with open("decoded_AndroidManifest.xml", "w", encoding="utf-8") as xml_file: xml_file.write(manifest) print("AndroidManifest was saved as: decoded_AndroidManifest.xml") if __name__ == '__main__': main() ================================================ FILE: libs/apkinspector-1.3.6.dist-info/METADATA ================================================ Metadata-Version: 2.4 Name: apkInspector Version: 1.3.6 Summary: apkInspector is a tool designed to provide detailed insights into the zip structure of APK files, offering the capability to extract content and decode the AndroidManifest.xml file. License: Apache-2.0 License-File: LICENSE Author: erev0s Author-email: projects@erev0s.com Requires-Python: >=3.5,<4.0 Classifier: License :: OSI Approved :: Apache Software License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Project-URL: Repository, https://github.com/erev0s/apkInspector Description-Content-Type: text/markdown ![apkInspector](https://i.imgur.com/hTzyIDG.png) ![PyPI - Version](https://img.shields.io/pypi/v/apkInspector) [![CI](https://github.com/erev0s/apkInspector/actions/workflows/ci.yml/badge.svg)](https://github.com/erev0s/apkInspector/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/erev0s/apkInspector/graph/badge.svg?token=A3YXHGXUXF)](https://codecov.io/gh/erev0s/apkInspector) # apkInspector apkInspector is a tool designed to provide detailed insights into the zip structure of APK files, offering the capability to extract content and decode the AndroidManifest.xml file. What sets APKInspector apart is its adherence to the zip specification during APK parsing, eliminating the need for reliance on external libraries. This independence, allows APKInspector to be highly adaptable, effectively emulating Android's installation process for APKs that cannot be parsed using standard libraries. The main goal is to enable users to conduct static analysis on APKs that employ evasion techniques, especially when conventional methods prove ineffective. Please check [this blog post](https://erev0s.com/blog/unmasking-evasive-threats-with-apkinspector/) for more details. ## How to install [apkInspector is available through PyPI](https://pypi.org/project/apkInspector/) ~~~~ pip install apkInspector ~~~~ or you can clone this repository and build and install locally: ~~~~ git clone https://github.com/erev0s/apkInspector.git cd apkInspector poetry build pip install dist/apkInspector-Version_here.tar.gz ~~~~ ## Documentation Documentation created based on the docstrings, is available through Sphinx: https://erev0s.github.io/apkInspector/ ## CLI apkInspector offers a command line tool with the same name, with the following options; ~~~~ $ apkInspector -h usage: apkInspector [-h] [-apk APK] [-f FILENAME] [-ll] [-lc] [-la] [-e] [-x] [-xa] [-m] [-sm SPECIFY_MANIFEST] [-a] [-v] apkInspector is a tool designed to provide detailed insights into the zip structure of APK files, offering the capability to extract content and decode the AndroidManifest.xml file. options: -h, --help show this help message and exit -apk APK A single APK to inspect or a directory where multiple APKs may reside. -f FILENAME, --filename FILENAME Filename to provide info for -ll, --list-local List all files by name from local headers -lc, --list-central List all files by name from central directory header -la, --list-all List all files from both central directory and local headers -e, --export Export to JSON. What you list from the other flags, will be exported -x, --extract Attempt to extract the file specified by the -f flag -xa, --extract-all Attempt to extract all files detected in the central directory header -m, --manifest Extract and decode the AndroidManifest.xml -sm SPECIFY_MANIFEST, --specify-manifest SPECIFY_MANIFEST Pass an encoded AndroidManifest.xml file to be decoded -a, --analyze Check an APK for static analysis evasion techniques -v, --version Retrieves version information ~~~~ ## Library The library component of apkInspector is designed with extensibility in mind, allowing other tools to seamlessly integrate its functionality. This flexibility empowers developers to leverage the capabilities of apkInspector within their own applications and workflows. To facilitate clear comprehension and ease of use, comprehensive docstrings accompany all primary methods, providing valuable insights into their functionality, expected arguments, and return values. These detailed explanations serve as invaluable guides, ensuring that developers can quickly grasp the inner workings of apkInspector's core features and smoothly incorporate them into their projects. ### Features offered - Find end of central directory record - Parse central directory of APK and get details about each entry - Get details local header for each entry - Extract single or all files within an APK - Decode AndroidManifest.xml file - Identify Tampering Indicators: - End of Central Directory record defined multiple times - Unknown compression methods - Compressed entry with empty filename - Unexpected starting signature of AndroidManifest.xml - Tampered StringCount value - Strings surpassing maximum length - Invalid data between elements - Unexpected attribute start - Unexpected attribute size - Unexpected attribute names or values - Zero size header for namespace end nodes The command-line interface (CLI) serves as a practical illustration of how the methods provided by the library have been employed. ## Reliability Please take [a look at the results](https://github.com/erev0s/apkInspector/tree/main/tests/top_apps) from testing apkInspector against a set of top Play Store applications ## Planned to-do - Improve documentation (add examples) - Improve code coverage ## Contributions We welcome contributions from the open-source community to help improve and enhance apkInspector. Whether you're a developer, tester, or documentation enthusiast, your contributions are valuable. ## :rocket: apkInspector is being used by :rocket: : - [androguard](https://github.com/androguard/androguard/) - [medusa](https://github.com/Ch0pin/medusa) ## Presentation of the tool and the research behind it - Defcon 32 | [PDF](docs/presentation/apkinspector-Defon32-presentation.pdf) ## Disclaimer It should be kept in mind that apkInspector is an evolving project, a work in progress. As such, users should anticipate occasional bugs and anticipate updates and upgrades as the tool continues to mature and enhance its functionality. Your feedback and contributions to apkInspector are highly appreciated as we work together to improve and refine its capabilities. ================================================ FILE: libs/apkinspector-1.3.6.dist-info/RECORD ================================================ apkInspector/__init__.py,sha256=5ZbAQtod5QalTI1C2N07edlxplzG_Q2XvGOSyOok4uA,22 apkInspector/axml.py,sha256=H3lCARrjCG1qXSZKaDAE1SlA5qusFo0_opyJMe1MYnQ,42979 apkInspector/extract.py,sha256=l67RV3-4N-UAj5KrJ2kNQcOqhSgg4giKz3xoIWznUjw,5525 apkInspector/headers.py,sha256=ifCdPus6E-D5WNDT4dC8TnT_Ox8Td8QpJrgunKHDdmQ,27490 apkInspector/helpers.py,sha256=jOwnhbF045nLGqAAHM0J6BFOQiKZqrbn4Wl87IRcXmY,1717 apkInspector/indicators.py,sha256=oyx3bRs8W_r8G0IyGjv1sh1LWJJZWxZysaqFUumSBL8,9776 apkInspectorCLI/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 apkInspectorCLI/main.py,sha256=bDVu6l2gUYgbC48zJ-mc0p_ffDlMnkuIqT_Y3hSxPO0,9647 apkinspector-1.3.6.dist-info/METADATA,sha256=bx9ts_-ZtNOMvRCL4RIIkGcwVFsbW-YNvHO-YZBI2B0,6972 apkinspector-1.3.6.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88 apkinspector-1.3.6.dist-info/entry_points.txt,sha256=372URr2Adghe3EWniKARBJtFboxJfbfIrR9jKjtXmVY,58 apkinspector-1.3.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357 apkinspector-1.3.6.dist-info/RECORD,, ================================================ FILE: libs/apkinspector-1.3.6.dist-info/WHEEL ================================================ Wheel-Version: 1.0 Generator: poetry-core 2.2.1 Root-Is-Purelib: true Tag: py3-none-any ================================================ FILE: libs/apkinspector-1.3.6.dist-info/entry_points.txt ================================================ [console_scripts] apkInspector=apkInspectorCLI.main:main ================================================ FILE: libs/apkinspector-1.3.6.dist-info/licenses/LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: libs/asn1crypto/__init__.py ================================================ # coding: utf-8 from __future__ import unicode_literals, division, absolute_import, print_function from .version import __version__, __version_info__ __all__ = [ '__version__', '__version_info__', 'load_order', ] def load_order(): """ Returns a list of the module and sub-module names for asn1crypto in dependency load order, for the sake of live reloading code :return: A list of unicode strings of module names, as they would appear in sys.modules, ordered by which module should be reloaded first """ return [ 'asn1crypto._errors', 'asn1crypto._int', 'asn1crypto._ordereddict', 'asn1crypto._teletex_codec', 'asn1crypto._types', 'asn1crypto._inet', 'asn1crypto._iri', 'asn1crypto.version', 'asn1crypto.pem', 'asn1crypto.util', 'asn1crypto.parser', 'asn1crypto.core', 'asn1crypto.algos', 'asn1crypto.keys', 'asn1crypto.x509', 'asn1crypto.crl', 'asn1crypto.csr', 'asn1crypto.ocsp', 'asn1crypto.cms', 'asn1crypto.pdf', 'asn1crypto.pkcs12', 'asn1crypto.tsp', 'asn1crypto', ] ================================================ FILE: libs/asn1crypto/_errors.py ================================================ # coding: utf-8 """ Exports the following items: - unwrap() - APIException() """ from __future__ import unicode_literals, division, absolute_import, print_function import re import textwrap class APIException(Exception): """ An exception indicating an API has been removed from asn1crypto """ pass def unwrap(string, *params): """ Takes a multi-line string and does the following: - dedents - converts newlines with text before and after into a single line - strips leading and trailing whitespace :param string: The string to format :param *params: Params to interpolate into the string :return: The formatted string """ output = textwrap.dedent(string) # Unwrap lines, taking into account bulleted lists, ordered lists and # underlines consisting of = signs if output.find('\n') != -1: output = re.sub('(?<=\\S)\n(?=[^ \n\t\\d\\*\\-=])', ' ', output) if params: output = output % params output = output.strip() return output ================================================ FILE: libs/asn1crypto/_inet.py ================================================ # coding: utf-8 from __future__ import unicode_literals, division, absolute_import, print_function import socket import struct from ._errors import unwrap from ._types import byte_cls, bytes_to_list, str_cls, type_name def inet_ntop(address_family, packed_ip): """ Windows compatibility shim for socket.inet_ntop(). :param address_family: socket.AF_INET for IPv4 or socket.AF_INET6 for IPv6 :param packed_ip: A byte string of the network form of an IP address :return: A unicode string of the IP address """ if address_family not in set([socket.AF_INET, socket.AF_INET6]): raise ValueError(unwrap( ''' address_family must be socket.AF_INET (%s) or socket.AF_INET6 (%s), not %s ''', repr(socket.AF_INET), repr(socket.AF_INET6), repr(address_family) )) if not isinstance(packed_ip, byte_cls): raise TypeError(unwrap( ''' packed_ip must be a byte string, not %s ''', type_name(packed_ip) )) required_len = 4 if address_family == socket.AF_INET else 16 if len(packed_ip) != required_len: raise ValueError(unwrap( ''' packed_ip must be %d bytes long - is %d ''', required_len, len(packed_ip) )) if address_family == socket.AF_INET: return '%d.%d.%d.%d' % tuple(bytes_to_list(packed_ip)) octets = struct.unpack(b'!HHHHHHHH', packed_ip) runs_of_zero = {} longest_run = 0 zero_index = None for i, octet in enumerate(octets + (-1,)): if octet != 0: if zero_index is not None: length = i - zero_index if length not in runs_of_zero: runs_of_zero[length] = zero_index longest_run = max(longest_run, length) zero_index = None elif zero_index is None: zero_index = i hexed = [hex(o)[2:] for o in octets] if longest_run < 2: return ':'.join(hexed) zero_start = runs_of_zero[longest_run] zero_end = zero_start + longest_run return ':'.join(hexed[:zero_start]) + '::' + ':'.join(hexed[zero_end:]) def inet_pton(address_family, ip_string): """ Windows compatibility shim for socket.inet_ntop(). :param address_family: socket.AF_INET for IPv4 or socket.AF_INET6 for IPv6 :param ip_string: A unicode string of an IP address :return: A byte string of the network form of the IP address """ if address_family not in set([socket.AF_INET, socket.AF_INET6]): raise ValueError(unwrap( ''' address_family must be socket.AF_INET (%s) or socket.AF_INET6 (%s), not %s ''', repr(socket.AF_INET), repr(socket.AF_INET6), repr(address_family) )) if not isinstance(ip_string, str_cls): raise TypeError(unwrap( ''' ip_string must be a unicode string, not %s ''', type_name(ip_string) )) if address_family == socket.AF_INET: octets = ip_string.split('.') error = len(octets) != 4 if not error: ints = [] for o in octets: o = int(o) if o > 255 or o < 0: error = True break ints.append(o) if error: raise ValueError(unwrap( ''' ip_string must be a dotted string with four integers in the range of 0 to 255, got %s ''', repr(ip_string) )) return struct.pack(b'!BBBB', *ints) error = False omitted = ip_string.count('::') if omitted > 1: error = True elif omitted == 0: octets = ip_string.split(':') error = len(octets) != 8 else: begin, end = ip_string.split('::') begin_octets = begin.split(':') end_octets = end.split(':') missing = 8 - len(begin_octets) - len(end_octets) octets = begin_octets + (['0'] * missing) + end_octets if not error: ints = [] for o in octets: o = int(o, 16) if o > 65535 or o < 0: error = True break ints.append(o) return struct.pack(b'!HHHHHHHH', *ints) raise ValueError(unwrap( ''' ip_string must be a valid ipv6 string, got %s ''', repr(ip_string) )) ================================================ FILE: libs/asn1crypto/_int.py ================================================ # coding: utf-8 from __future__ import unicode_literals, division, absolute_import, print_function def fill_width(bytes_, width): """ Ensure a byte string representing a positive integer is a specific width (in bytes) :param bytes_: The integer byte string :param width: The desired width as an integer :return: A byte string of the width specified """ while len(bytes_) < width: bytes_ = b'\x00' + bytes_ return bytes_ ================================================ FILE: libs/asn1crypto/_iri.py ================================================ # coding: utf-8 """ Functions to convert unicode IRIs into ASCII byte string URIs and back. Exports the following items: - iri_to_uri() - uri_to_iri() """ from __future__ import unicode_literals, division, absolute_import, print_function from encodings import idna # noqa import codecs import re import sys from ._errors import unwrap from ._types import byte_cls, str_cls, type_name, bytes_to_list, int_types if sys.version_info < (3,): from urlparse import urlsplit, urlunsplit from urllib import ( quote as urlquote, unquote as unquote_to_bytes, ) else: from urllib.parse import ( quote as urlquote, unquote_to_bytes, urlsplit, urlunsplit, ) def iri_to_uri(value, normalize=False): """ Encodes a unicode IRI into an ASCII byte string URI :param value: A unicode string of an IRI :param normalize: A bool that controls URI normalization :return: A byte string of the ASCII-encoded URI """ if not isinstance(value, str_cls): raise TypeError(unwrap( ''' value must be a unicode string, not %s ''', type_name(value) )) scheme = None # Python 2.6 doesn't split properly is the URL doesn't start with http:// or https:// if sys.version_info < (2, 7) and not value.startswith('http://') and not value.startswith('https://'): real_prefix = None prefix_match = re.match('^[^:]*://', value) if prefix_match: real_prefix = prefix_match.group(0) value = 'http://' + value[len(real_prefix):] parsed = urlsplit(value) if real_prefix: value = real_prefix + value[7:] scheme = _urlquote(real_prefix[:-3]) else: parsed = urlsplit(value) if scheme is None: scheme = _urlquote(parsed.scheme) hostname = parsed.hostname if hostname is not None: hostname = hostname.encode('idna') # RFC 3986 allows userinfo to contain sub-delims username = _urlquote(parsed.username, safe='!$&\'()*+,;=') password = _urlquote(parsed.password, safe='!$&\'()*+,;=') port = parsed.port if port is not None: port = str_cls(port).encode('ascii') netloc = b'' if username is not None: netloc += username if password: netloc += b':' + password netloc += b'@' if hostname is not None: netloc += hostname if port is not None: default_http = scheme == b'http' and port == b'80' default_https = scheme == b'https' and port == b'443' if not normalize or (not default_http and not default_https): netloc += b':' + port # RFC 3986 allows a path to contain sub-delims, plus "@" and ":" path = _urlquote(parsed.path, safe='/!$&\'()*+,;=@:') # RFC 3986 allows the query to contain sub-delims, plus "@", ":" , "/" and "?" query = _urlquote(parsed.query, safe='/?!$&\'()*+,;=@:') # RFC 3986 allows the fragment to contain sub-delims, plus "@", ":" , "/" and "?" fragment = _urlquote(parsed.fragment, safe='/?!$&\'()*+,;=@:') if normalize and query is None and fragment is None and path == b'/': path = None # Python 2.7 compat if path is None: path = '' output = urlunsplit((scheme, netloc, path, query, fragment)) if isinstance(output, str_cls): output = output.encode('latin1') return output def uri_to_iri(value): """ Converts an ASCII URI byte string into a unicode IRI :param value: An ASCII-encoded byte string of the URI :return: A unicode string of the IRI """ if not isinstance(value, byte_cls): raise TypeError(unwrap( ''' value must be a byte string, not %s ''', type_name(value) )) parsed = urlsplit(value) scheme = parsed.scheme if scheme is not None: scheme = scheme.decode('ascii') username = _urlunquote(parsed.username, remap=[':', '@']) password = _urlunquote(parsed.password, remap=[':', '@']) hostname = parsed.hostname if hostname: hostname = hostname.decode('idna') port = parsed.port if port and not isinstance(port, int_types): port = port.decode('ascii') netloc = '' if username is not None: netloc += username if password: netloc += ':' + password netloc += '@' if hostname is not None: netloc += hostname if port is not None: netloc += ':' + str_cls(port) path = _urlunquote(parsed.path, remap=['/'], preserve=True) query = _urlunquote(parsed.query, remap=['&', '='], preserve=True) fragment = _urlunquote(parsed.fragment) return urlunsplit((scheme, netloc, path, query, fragment)) def _iri_utf8_errors_handler(exc): """ Error handler for decoding UTF-8 parts of a URI into an IRI. Leaves byte sequences encoded in %XX format, but as part of a unicode string. :param exc: The UnicodeDecodeError exception :return: A 2-element tuple of (replacement unicode string, integer index to resume at) """ bytes_as_ints = bytes_to_list(exc.object[exc.start:exc.end]) replacements = ['%%%02x' % num for num in bytes_as_ints] return (''.join(replacements), exc.end) codecs.register_error('iriutf8', _iri_utf8_errors_handler) def _urlquote(string, safe=''): """ Quotes a unicode string for use in a URL :param string: A unicode string :param safe: A unicode string of character to not encode :return: None (if string is None) or an ASCII byte string of the quoted string """ if string is None or string == '': return None # Anything already hex quoted is pulled out of the URL and unquoted if # possible escapes = [] if re.search('%[0-9a-fA-F]{2}', string): # Try to unquote any percent values, restoring them if they are not # valid UTF-8. Also, requote any safe chars since encoded versions of # those are functionally different than the unquoted ones. def _try_unescape(match): byte_string = unquote_to_bytes(match.group(0)) unicode_string = byte_string.decode('utf-8', 'iriutf8') for safe_char in list(safe): unicode_string = unicode_string.replace(safe_char, '%%%02x' % ord(safe_char)) return unicode_string string = re.sub('(?:%[0-9a-fA-F]{2})+', _try_unescape, string) # Once we have the minimal set of hex quoted values, removed them from # the string so that they are not double quoted def _extract_escape(match): escapes.append(match.group(0).encode('ascii')) return '\x00' string = re.sub('%[0-9a-fA-F]{2}', _extract_escape, string) output = urlquote(string.encode('utf-8'), safe=safe.encode('utf-8')) if not isinstance(output, byte_cls): output = output.encode('ascii') # Restore the existing quoted values that we extracted if len(escapes) > 0: def _return_escape(_): return escapes.pop(0) output = re.sub(b'%00', _return_escape, output) return output def _urlunquote(byte_string, remap=None, preserve=None): """ Unquotes a URI portion from a byte string into unicode using UTF-8 :param byte_string: A byte string of the data to unquote :param remap: A list of characters (as unicode) that should be re-mapped to a %XX encoding. This is used when characters are not valid in part of a URL. :param preserve: A bool - indicates that the chars to be remapped if they occur in non-hex form, should be preserved. E.g. / for URL path. :return: A unicode string """ if byte_string is None: return byte_string if byte_string == b'': return '' if preserve: replacements = ['\x1A', '\x1C', '\x1D', '\x1E', '\x1F'] preserve_unmap = {} for char in remap: replacement = replacements.pop(0) preserve_unmap[replacement] = char byte_string = byte_string.replace(char.encode('ascii'), replacement.encode('ascii')) byte_string = unquote_to_bytes(byte_string) if remap: for char in remap: byte_string = byte_string.replace(char.encode('ascii'), ('%%%02x' % ord(char)).encode('ascii')) output = byte_string.decode('utf-8', 'iriutf8') if preserve: for replacement, original in preserve_unmap.items(): output = output.replace(replacement, original) return output ================================================ FILE: libs/asn1crypto/_ordereddict.py ================================================ # Copyright (c) 2009 Raymond Hettinger # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation files # (the "Software"), to deal in the Software without restriction, # including without limitation the rights to use, copy, modify, merge, # publish, distribute, sublicense, and/or sell copies of the Software, # and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. import sys if not sys.version_info < (2, 7): from collections import OrderedDict else: from UserDict import DictMixin class OrderedDict(dict, DictMixin): def __init__(self, *args, **kwds): if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) try: self.__end except AttributeError: self.clear() self.update(*args, **kwds) def clear(self): self.__end = end = [] end += [None, end, end] # sentinel node for doubly linked list self.__map = {} # key --> [key, prev, next] dict.clear(self) def __setitem__(self, key, value): if key not in self: end = self.__end curr = end[1] curr[2] = end[1] = self.__map[key] = [key, curr, end] dict.__setitem__(self, key, value) def __delitem__(self, key): dict.__delitem__(self, key) key, prev, next_ = self.__map.pop(key) prev[2] = next_ next_[1] = prev def __iter__(self): end = self.__end curr = end[2] while curr is not end: yield curr[0] curr = curr[2] def __reversed__(self): end = self.__end curr = end[1] while curr is not end: yield curr[0] curr = curr[1] def popitem(self, last=True): if not self: raise KeyError('dictionary is empty') if last: key = reversed(self).next() else: key = iter(self).next() value = self.pop(key) return key, value def __reduce__(self): items = [[k, self[k]] for k in self] tmp = self.__map, self.__end del self.__map, self.__end inst_dict = vars(self).copy() self.__map, self.__end = tmp if inst_dict: return (self.__class__, (items,), inst_dict) return self.__class__, (items,) def keys(self): return list(self) setdefault = DictMixin.setdefault update = DictMixin.update pop = DictMixin.pop values = DictMixin.values items = DictMixin.items iterkeys = DictMixin.iterkeys itervalues = DictMixin.itervalues iteritems = DictMixin.iteritems def __repr__(self): if not self: return '%s()' % (self.__class__.__name__,) return '%s(%r)' % (self.__class__.__name__, self.items()) def copy(self): return self.__class__(self) @classmethod def fromkeys(cls, iterable, value=None): d = cls() for key in iterable: d[key] = value return d def __eq__(self, other): if isinstance(other, OrderedDict): if len(self) != len(other): return False for p, q in zip(self.items(), other.items()): if p != q: return False return True return dict.__eq__(self, other) def __ne__(self, other): return not self == other ================================================ FILE: libs/asn1crypto/_teletex_codec.py ================================================ # coding: utf-8 """ Implementation of the teletex T.61 codec. Exports the following items: - register() """ from __future__ import unicode_literals, division, absolute_import, print_function import codecs class TeletexCodec(codecs.Codec): def encode(self, input_, errors='strict'): return codecs.charmap_encode(input_, errors, ENCODING_TABLE) def decode(self, input_, errors='strict'): return codecs.charmap_decode(input_, errors, DECODING_TABLE) class TeletexIncrementalEncoder(codecs.IncrementalEncoder): def encode(self, input_, final=False): return codecs.charmap_encode(input_, self.errors, ENCODING_TABLE)[0] class TeletexIncrementalDecoder(codecs.IncrementalDecoder): def decode(self, input_, final=False): return codecs.charmap_decode(input_, self.errors, DECODING_TABLE)[0] class TeletexStreamWriter(TeletexCodec, codecs.StreamWriter): pass class TeletexStreamReader(TeletexCodec, codecs.StreamReader): pass def teletex_search_function(name): """ Search function for teletex codec that is passed to codecs.register() """ if name != 'teletex': return None return codecs.CodecInfo( name='teletex', encode=TeletexCodec().encode, decode=TeletexCodec().decode, incrementalencoder=TeletexIncrementalEncoder, incrementaldecoder=TeletexIncrementalDecoder, streamreader=TeletexStreamReader, streamwriter=TeletexStreamWriter, ) def register(): """ Registers the teletex codec """ codecs.register(teletex_search_function) # http://en.wikipedia.org/wiki/ITU_T.61 DECODING_TABLE = ( '\u0000' '\u0001' '\u0002' '\u0003' '\u0004' '\u0005' '\u0006' '\u0007' '\u0008' '\u0009' '\u000A' '\u000B' '\u000C' '\u000D' '\u000E' '\u000F' '\u0010' '\u0011' '\u0012' '\u0013' '\u0014' '\u0015' '\u0016' '\u0017' '\u0018' '\u0019' '\u001A' '\u001B' '\u001C' '\u001D' '\u001E' '\u001F' '\u0020' '\u0021' '\u0022' '\ufffe' '\ufffe' '\u0025' '\u0026' '\u0027' '\u0028' '\u0029' '\u002A' '\u002B' '\u002C' '\u002D' '\u002E' '\u002F' '\u0030' '\u0031' '\u0032' '\u0033' '\u0034' '\u0035' '\u0036' '\u0037' '\u0038' '\u0039' '\u003A' '\u003B' '\u003C' '\u003D' '\u003E' '\u003F' '\u0040' '\u0041' '\u0042' '\u0043' '\u0044' '\u0045' '\u0046' '\u0047' '\u0048' '\u0049' '\u004A' '\u004B' '\u004C' '\u004D' '\u004E' '\u004F' '\u0050' '\u0051' '\u0052' '\u0053' '\u0054' '\u0055' '\u0056' '\u0057' '\u0058' '\u0059' '\u005A' '\u005B' '\ufffe' '\u005D' '\ufffe' '\u005F' '\ufffe' '\u0061' '\u0062' '\u0063' '\u0064' '\u0065' '\u0066' '\u0067' '\u0068' '\u0069' '\u006A' '\u006B' '\u006C' '\u006D' '\u006E' '\u006F' '\u0070' '\u0071' '\u0072' '\u0073' '\u0074' '\u0075' '\u0076' '\u0077' '\u0078' '\u0079' '\u007A' '\ufffe' '\u007C' '\ufffe' '\ufffe' '\u007F' '\u0080' '\u0081' '\u0082' '\u0083' '\u0084' '\u0085' '\u0086' '\u0087' '\u0088' '\u0089' '\u008A' '\u008B' '\u008C' '\u008D' '\u008E' '\u008F' '\u0090' '\u0091' '\u0092' '\u0093' '\u0094' '\u0095' '\u0096' '\u0097' '\u0098' '\u0099' '\u009A' '\u009B' '\u009C' '\u009D' '\u009E' '\u009F' '\u00A0' '\u00A1' '\u00A2' '\u00A3' '\u0024' '\u00A5' '\u0023' '\u00A7' '\u00A4' '\ufffe' '\ufffe' '\u00AB' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\u00B0' '\u00B1' '\u00B2' '\u00B3' '\u00D7' '\u00B5' '\u00B6' '\u00B7' '\u00F7' '\ufffe' '\ufffe' '\u00BB' '\u00BC' '\u00BD' '\u00BE' '\u00BF' '\ufffe' '\u0300' '\u0301' '\u0302' '\u0303' '\u0304' '\u0306' '\u0307' '\u0308' '\ufffe' '\u030A' '\u0327' '\u0332' '\u030B' '\u0328' '\u030C' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\ufffe' '\u2126' '\u00C6' '\u00D0' '\u00AA' '\u0126' '\ufffe' '\u0132' '\u013F' '\u0141' '\u00D8' '\u0152' '\u00BA' '\u00DE' '\u0166' '\u014A' '\u0149' '\u0138' '\u00E6' '\u0111' '\u00F0' '\u0127' '\u0131' '\u0133' '\u0140' '\u0142' '\u00F8' '\u0153' '\u00DF' '\u00FE' '\u0167' '\u014B' '\ufffe' ) ENCODING_TABLE = codecs.charmap_build(DECODING_TABLE) ================================================ FILE: libs/asn1crypto/_types.py ================================================ # coding: utf-8 from __future__ import unicode_literals, division, absolute_import, print_function import inspect import sys if sys.version_info < (3,): str_cls = unicode # noqa byte_cls = str int_types = (int, long) # noqa def bytes_to_list(byte_string): return [ord(b) for b in byte_string] chr_cls = chr else: str_cls = str byte_cls = bytes int_types = int bytes_to_list = list def chr_cls(num): return bytes([num]) def type_name(value): """ Returns a user-readable name for the type of an object :param value: A value to get the type name of :return: A unicode string of the object's type name """ if inspect.isclass(value): cls = value else: cls = value.__class__ if cls.__module__ in set(['builtins', '__builtin__']): return cls.__name__ return '%s.%s' % (cls.__module__, cls.__name__) ================================================ FILE: libs/asn1crypto/algos.py ================================================ # coding: utf-8 """ ASN.1 type classes for various algorithms using in various aspects of public key cryptography. Exports the following items: - AlgorithmIdentifier() - AnyAlgorithmIdentifier() - DigestAlgorithm() - DigestInfo() - DSASignature() - EncryptionAlgorithm() - HmacAlgorithm() - KdfAlgorithm() - Pkcs5MacAlgorithm() - SignedDigestAlgorithm() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function from ._errors import unwrap from ._int import fill_width from .util import int_from_bytes, int_to_bytes from .core import ( Any, Choice, Integer, Null, ObjectIdentifier, OctetString, Sequence, Void, ) # Structures and OIDs in this file are pulled from # https://tools.ietf.org/html/rfc3279, https://tools.ietf.org/html/rfc4055, # https://tools.ietf.org/html/rfc5758, https://tools.ietf.org/html/rfc7292, # http://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf class AlgorithmIdentifier(Sequence): _fields = [ ('algorithm', ObjectIdentifier), ('parameters', Any, {'optional': True}), ] class _ForceNullParameters(object): """ Various structures based on AlgorithmIdentifier require that the parameters field be core.Null() for certain OIDs. This mixin ensures that happens. """ # The following attribute, plus the parameters spec callback and custom # __setitem__ are all to handle a situation where parameters should not be # optional and must be Null for certain OIDs. More info at # https://tools.ietf.org/html/rfc4055#page-15 and # https://tools.ietf.org/html/rfc4055#section-2.1 _null_algos = set([ '1.2.840.113549.1.1.1', # rsassa_pkcs1v15 / rsaes_pkcs1v15 / rsa '1.2.840.113549.1.1.11', # sha256_rsa '1.2.840.113549.1.1.12', # sha384_rsa '1.2.840.113549.1.1.13', # sha512_rsa '1.2.840.113549.1.1.14', # sha224_rsa '1.3.14.3.2.26', # sha1 '2.16.840.1.101.3.4.2.4', # sha224 '2.16.840.1.101.3.4.2.1', # sha256 '2.16.840.1.101.3.4.2.2', # sha384 '2.16.840.1.101.3.4.2.3', # sha512 ]) def _parameters_spec(self): if self._oid_pair == ('algorithm', 'parameters'): algo = self['algorithm'].native if algo in self._oid_specs: return self._oid_specs[algo] if self['algorithm'].dotted in self._null_algos: return Null return None _spec_callbacks = { 'parameters': _parameters_spec } # We have to override this since the spec callback uses the value of # algorithm to determine the parameter spec, however default values are # assigned before setting a field, so a default value can't be based on # another field value (unless it is a default also). Thus we have to # manually check to see if the algorithm was set and parameters is unset, # and then fix the value as appropriate. def __setitem__(self, key, value): res = super(_ForceNullParameters, self).__setitem__(key, value) if key != 'algorithm': return res if self['algorithm'].dotted not in self._null_algos: return res if self['parameters'].__class__ != Void: return res self['parameters'] = Null() return res class HmacAlgorithmId(ObjectIdentifier): _map = { '1.3.14.3.2.10': 'des_mac', '1.2.840.113549.2.7': 'sha1', '1.2.840.113549.2.8': 'sha224', '1.2.840.113549.2.9': 'sha256', '1.2.840.113549.2.10': 'sha384', '1.2.840.113549.2.11': 'sha512', '1.2.840.113549.2.12': 'sha512_224', '1.2.840.113549.2.13': 'sha512_256', '2.16.840.1.101.3.4.2.13': 'sha3_224', '2.16.840.1.101.3.4.2.14': 'sha3_256', '2.16.840.1.101.3.4.2.15': 'sha3_384', '2.16.840.1.101.3.4.2.16': 'sha3_512', } class HmacAlgorithm(Sequence): _fields = [ ('algorithm', HmacAlgorithmId), ('parameters', Any, {'optional': True}), ] class DigestAlgorithmId(ObjectIdentifier): _map = { '1.2.840.113549.2.2': 'md2', '1.2.840.113549.2.5': 'md5', '1.3.14.3.2.26': 'sha1', '2.16.840.1.101.3.4.2.4': 'sha224', '2.16.840.1.101.3.4.2.1': 'sha256', '2.16.840.1.101.3.4.2.2': 'sha384', '2.16.840.1.101.3.4.2.3': 'sha512', '2.16.840.1.101.3.4.2.5': 'sha512_224', '2.16.840.1.101.3.4.2.6': 'sha512_256', '2.16.840.1.101.3.4.2.7': 'sha3_224', '2.16.840.1.101.3.4.2.8': 'sha3_256', '2.16.840.1.101.3.4.2.9': 'sha3_384', '2.16.840.1.101.3.4.2.10': 'sha3_512', '2.16.840.1.101.3.4.2.11': 'shake128', '2.16.840.1.101.3.4.2.12': 'shake256', '2.16.840.1.101.3.4.2.17': 'shake128_len', '2.16.840.1.101.3.4.2.18': 'shake256_len', } class DigestAlgorithm(_ForceNullParameters, Sequence): _fields = [ ('algorithm', DigestAlgorithmId), ('parameters', Any, {'optional': True}), ] # This structure is what is signed with a SignedDigestAlgorithm class DigestInfo(Sequence): _fields = [ ('digest_algorithm', DigestAlgorithm), ('digest', OctetString), ] class MaskGenAlgorithmId(ObjectIdentifier): _map = { '1.2.840.113549.1.1.8': 'mgf1', } class MaskGenAlgorithm(Sequence): _fields = [ ('algorithm', MaskGenAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'mgf1': DigestAlgorithm } class TrailerField(Integer): _map = { 1: 'trailer_field_bc', } class RSASSAPSSParams(Sequence): _fields = [ ( 'hash_algorithm', DigestAlgorithm, { 'explicit': 0, 'default': {'algorithm': 'sha1'}, } ), ( 'mask_gen_algorithm', MaskGenAlgorithm, { 'explicit': 1, 'default': { 'algorithm': 'mgf1', 'parameters': {'algorithm': 'sha1'}, }, } ), ( 'salt_length', Integer, { 'explicit': 2, 'default': 20, } ), ( 'trailer_field', TrailerField, { 'explicit': 3, 'default': 'trailer_field_bc', } ), ] class SignedDigestAlgorithmId(ObjectIdentifier): _map = { '1.3.14.3.2.3': 'md5_rsa', '1.3.14.3.2.29': 'sha1_rsa', '1.3.14.7.2.3.1': 'md2_rsa', '1.2.840.113549.1.1.2': 'md2_rsa', '1.2.840.113549.1.1.4': 'md5_rsa', '1.2.840.113549.1.1.5': 'sha1_rsa', '1.2.840.113549.1.1.14': 'sha224_rsa', '1.2.840.113549.1.1.11': 'sha256_rsa', '1.2.840.113549.1.1.12': 'sha384_rsa', '1.2.840.113549.1.1.13': 'sha512_rsa', '1.2.840.113549.1.1.10': 'rsassa_pss', '1.2.840.10040.4.3': 'sha1_dsa', '1.3.14.3.2.13': 'sha1_dsa', '1.3.14.3.2.27': 'sha1_dsa', '2.16.840.1.101.3.4.3.1': 'sha224_dsa', '2.16.840.1.101.3.4.3.2': 'sha256_dsa', '1.2.840.10045.4.1': 'sha1_ecdsa', '1.2.840.10045.4.3.1': 'sha224_ecdsa', '1.2.840.10045.4.3.2': 'sha256_ecdsa', '1.2.840.10045.4.3.3': 'sha384_ecdsa', '1.2.840.10045.4.3.4': 'sha512_ecdsa', '2.16.840.1.101.3.4.3.9': 'sha3_224_ecdsa', '2.16.840.1.101.3.4.3.10': 'sha3_256_ecdsa', '2.16.840.1.101.3.4.3.11': 'sha3_384_ecdsa', '2.16.840.1.101.3.4.3.12': 'sha3_512_ecdsa', # For when the digest is specified elsewhere in a Sequence '1.2.840.113549.1.1.1': 'rsassa_pkcs1v15', '1.2.840.10040.4.1': 'dsa', '1.2.840.10045.4': 'ecdsa', # RFC 8410 -- https://tools.ietf.org/html/rfc8410 '1.3.101.112': 'ed25519', '1.3.101.113': 'ed448', } _reverse_map = { 'dsa': '1.2.840.10040.4.1', 'ecdsa': '1.2.840.10045.4', 'md2_rsa': '1.2.840.113549.1.1.2', 'md5_rsa': '1.2.840.113549.1.1.4', 'rsassa_pkcs1v15': '1.2.840.113549.1.1.1', 'rsassa_pss': '1.2.840.113549.1.1.10', 'sha1_dsa': '1.2.840.10040.4.3', 'sha1_ecdsa': '1.2.840.10045.4.1', 'sha1_rsa': '1.2.840.113549.1.1.5', 'sha224_dsa': '2.16.840.1.101.3.4.3.1', 'sha224_ecdsa': '1.2.840.10045.4.3.1', 'sha224_rsa': '1.2.840.113549.1.1.14', 'sha256_dsa': '2.16.840.1.101.3.4.3.2', 'sha256_ecdsa': '1.2.840.10045.4.3.2', 'sha256_rsa': '1.2.840.113549.1.1.11', 'sha384_ecdsa': '1.2.840.10045.4.3.3', 'sha384_rsa': '1.2.840.113549.1.1.12', 'sha512_ecdsa': '1.2.840.10045.4.3.4', 'sha512_rsa': '1.2.840.113549.1.1.13', 'sha3_224_ecdsa': '2.16.840.1.101.3.4.3.9', 'sha3_256_ecdsa': '2.16.840.1.101.3.4.3.10', 'sha3_384_ecdsa': '2.16.840.1.101.3.4.3.11', 'sha3_512_ecdsa': '2.16.840.1.101.3.4.3.12', 'ed25519': '1.3.101.112', 'ed448': '1.3.101.113', } class SignedDigestAlgorithm(_ForceNullParameters, Sequence): _fields = [ ('algorithm', SignedDigestAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'rsassa_pss': RSASSAPSSParams, } @property def signature_algo(self): """ :return: A unicode string of "rsassa_pkcs1v15", "rsassa_pss", "dsa", "ecdsa", "ed25519" or "ed448" """ algorithm = self['algorithm'].native algo_map = { 'md2_rsa': 'rsassa_pkcs1v15', 'md5_rsa': 'rsassa_pkcs1v15', 'sha1_rsa': 'rsassa_pkcs1v15', 'sha224_rsa': 'rsassa_pkcs1v15', 'sha256_rsa': 'rsassa_pkcs1v15', 'sha384_rsa': 'rsassa_pkcs1v15', 'sha512_rsa': 'rsassa_pkcs1v15', 'rsassa_pkcs1v15': 'rsassa_pkcs1v15', 'rsassa_pss': 'rsassa_pss', 'sha1_dsa': 'dsa', 'sha224_dsa': 'dsa', 'sha256_dsa': 'dsa', 'dsa': 'dsa', 'sha1_ecdsa': 'ecdsa', 'sha224_ecdsa': 'ecdsa', 'sha256_ecdsa': 'ecdsa', 'sha384_ecdsa': 'ecdsa', 'sha512_ecdsa': 'ecdsa', 'sha3_224_ecdsa': 'ecdsa', 'sha3_256_ecdsa': 'ecdsa', 'sha3_384_ecdsa': 'ecdsa', 'sha3_512_ecdsa': 'ecdsa', 'ecdsa': 'ecdsa', 'ed25519': 'ed25519', 'ed448': 'ed448', } if algorithm in algo_map: return algo_map[algorithm] raise ValueError(unwrap( ''' Signature algorithm not known for %s ''', algorithm )) @property def hash_algo(self): """ :return: A unicode string of "md2", "md5", "sha1", "sha224", "sha256", "sha384", "sha512", "sha512_224", "sha512_256" or "shake256" """ algorithm = self['algorithm'].native algo_map = { 'md2_rsa': 'md2', 'md5_rsa': 'md5', 'sha1_rsa': 'sha1', 'sha224_rsa': 'sha224', 'sha256_rsa': 'sha256', 'sha384_rsa': 'sha384', 'sha512_rsa': 'sha512', 'sha1_dsa': 'sha1', 'sha224_dsa': 'sha224', 'sha256_dsa': 'sha256', 'sha1_ecdsa': 'sha1', 'sha224_ecdsa': 'sha224', 'sha256_ecdsa': 'sha256', 'sha384_ecdsa': 'sha384', 'sha512_ecdsa': 'sha512', 'ed25519': 'sha512', 'ed448': 'shake256', } if algorithm in algo_map: return algo_map[algorithm] if algorithm == 'rsassa_pss': return self['parameters']['hash_algorithm']['algorithm'].native raise ValueError(unwrap( ''' Hash algorithm not known for %s ''', algorithm )) class Pbkdf2Salt(Choice): _alternatives = [ ('specified', OctetString), ('other_source', AlgorithmIdentifier), ] class Pbkdf2Params(Sequence): _fields = [ ('salt', Pbkdf2Salt), ('iteration_count', Integer), ('key_length', Integer, {'optional': True}), ('prf', HmacAlgorithm, {'default': {'algorithm': 'sha1'}}), ] class KdfAlgorithmId(ObjectIdentifier): _map = { '1.2.840.113549.1.5.12': 'pbkdf2' } class KdfAlgorithm(Sequence): _fields = [ ('algorithm', KdfAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'pbkdf2': Pbkdf2Params } class DHParameters(Sequence): """ Original Name: DHParameter Source: ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-3.asc section 9 """ _fields = [ ('p', Integer), ('g', Integer), ('private_value_length', Integer, {'optional': True}), ] class KeyExchangeAlgorithmId(ObjectIdentifier): _map = { '1.2.840.113549.1.3.1': 'dh', } class KeyExchangeAlgorithm(Sequence): _fields = [ ('algorithm', KeyExchangeAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'dh': DHParameters, } class Rc2Params(Sequence): _fields = [ ('rc2_parameter_version', Integer, {'optional': True}), ('iv', OctetString), ] class Rc5ParamVersion(Integer): _map = { 16: 'v1-0' } class Rc5Params(Sequence): _fields = [ ('version', Rc5ParamVersion), ('rounds', Integer), ('block_size_in_bits', Integer), ('iv', OctetString, {'optional': True}), ] class Pbes1Params(Sequence): _fields = [ ('salt', OctetString), ('iterations', Integer), ] class CcmParams(Sequence): # https://tools.ietf.org/html/rfc5084 # aes_ICVlen: 4 | 6 | 8 | 10 | 12 | 14 | 16 _fields = [ ('aes_nonce', OctetString), ('aes_icvlen', Integer), ] class PSourceAlgorithmId(ObjectIdentifier): _map = { '1.2.840.113549.1.1.9': 'p_specified', } class PSourceAlgorithm(Sequence): _fields = [ ('algorithm', PSourceAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'p_specified': OctetString } class RSAESOAEPParams(Sequence): _fields = [ ( 'hash_algorithm', DigestAlgorithm, { 'explicit': 0, 'default': {'algorithm': 'sha1'} } ), ( 'mask_gen_algorithm', MaskGenAlgorithm, { 'explicit': 1, 'default': { 'algorithm': 'mgf1', 'parameters': {'algorithm': 'sha1'} } } ), ( 'p_source_algorithm', PSourceAlgorithm, { 'explicit': 2, 'default': { 'algorithm': 'p_specified', 'parameters': b'' } } ), ] class DSASignature(Sequence): """ An ASN.1 class for translating between the OS crypto library's representation of an (EC)DSA signature and the ASN.1 structure that is part of various RFCs. Original Name: DSS-Sig-Value Source: https://tools.ietf.org/html/rfc3279#section-2.2.2 """ _fields = [ ('r', Integer), ('s', Integer), ] @classmethod def from_p1363(cls, data): """ Reads a signature from a byte string encoding accordint to IEEE P1363, which is used by Microsoft's BCryptSignHash() function. :param data: A byte string from BCryptSignHash() :return: A DSASignature object """ r = int_from_bytes(data[0:len(data) // 2]) s = int_from_bytes(data[len(data) // 2:]) return cls({'r': r, 's': s}) def to_p1363(self): """ Dumps a signature to a byte string compatible with Microsoft's BCryptVerifySignature() function. :return: A byte string compatible with BCryptVerifySignature() """ r_bytes = int_to_bytes(self['r'].native) s_bytes = int_to_bytes(self['s'].native) int_byte_length = max(len(r_bytes), len(s_bytes)) r_bytes = fill_width(r_bytes, int_byte_length) s_bytes = fill_width(s_bytes, int_byte_length) return r_bytes + s_bytes class EncryptionAlgorithmId(ObjectIdentifier): _map = { '1.3.14.3.2.7': 'des', '1.2.840.113549.3.7': 'tripledes_3key', '1.2.840.113549.3.2': 'rc2', '1.2.840.113549.3.4': 'rc4', '1.2.840.113549.3.9': 'rc5', # From http://csrc.nist.gov/groups/ST/crypto_apps_infra/csor/algorithms.html#AES '2.16.840.1.101.3.4.1.1': 'aes128_ecb', '2.16.840.1.101.3.4.1.2': 'aes128_cbc', '2.16.840.1.101.3.4.1.3': 'aes128_ofb', '2.16.840.1.101.3.4.1.4': 'aes128_cfb', '2.16.840.1.101.3.4.1.5': 'aes128_wrap', '2.16.840.1.101.3.4.1.6': 'aes128_gcm', '2.16.840.1.101.3.4.1.7': 'aes128_ccm', '2.16.840.1.101.3.4.1.8': 'aes128_wrap_pad', '2.16.840.1.101.3.4.1.21': 'aes192_ecb', '2.16.840.1.101.3.4.1.22': 'aes192_cbc', '2.16.840.1.101.3.4.1.23': 'aes192_ofb', '2.16.840.1.101.3.4.1.24': 'aes192_cfb', '2.16.840.1.101.3.4.1.25': 'aes192_wrap', '2.16.840.1.101.3.4.1.26': 'aes192_gcm', '2.16.840.1.101.3.4.1.27': 'aes192_ccm', '2.16.840.1.101.3.4.1.28': 'aes192_wrap_pad', '2.16.840.1.101.3.4.1.41': 'aes256_ecb', '2.16.840.1.101.3.4.1.42': 'aes256_cbc', '2.16.840.1.101.3.4.1.43': 'aes256_ofb', '2.16.840.1.101.3.4.1.44': 'aes256_cfb', '2.16.840.1.101.3.4.1.45': 'aes256_wrap', '2.16.840.1.101.3.4.1.46': 'aes256_gcm', '2.16.840.1.101.3.4.1.47': 'aes256_ccm', '2.16.840.1.101.3.4.1.48': 'aes256_wrap_pad', # From PKCS#5 '1.2.840.113549.1.5.13': 'pbes2', '1.2.840.113549.1.5.1': 'pbes1_md2_des', '1.2.840.113549.1.5.3': 'pbes1_md5_des', '1.2.840.113549.1.5.4': 'pbes1_md2_rc2', '1.2.840.113549.1.5.6': 'pbes1_md5_rc2', '1.2.840.113549.1.5.10': 'pbes1_sha1_des', '1.2.840.113549.1.5.11': 'pbes1_sha1_rc2', # From PKCS#12 '1.2.840.113549.1.12.1.1': 'pkcs12_sha1_rc4_128', '1.2.840.113549.1.12.1.2': 'pkcs12_sha1_rc4_40', '1.2.840.113549.1.12.1.3': 'pkcs12_sha1_tripledes_3key', '1.2.840.113549.1.12.1.4': 'pkcs12_sha1_tripledes_2key', '1.2.840.113549.1.12.1.5': 'pkcs12_sha1_rc2_128', '1.2.840.113549.1.12.1.6': 'pkcs12_sha1_rc2_40', # PKCS#1 v2.2 '1.2.840.113549.1.1.1': 'rsaes_pkcs1v15', '1.2.840.113549.1.1.7': 'rsaes_oaep', } class EncryptionAlgorithm(_ForceNullParameters, Sequence): _fields = [ ('algorithm', EncryptionAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'des': OctetString, 'tripledes_3key': OctetString, 'rc2': Rc2Params, 'rc5': Rc5Params, 'aes128_cbc': OctetString, 'aes192_cbc': OctetString, 'aes256_cbc': OctetString, 'aes128_ofb': OctetString, 'aes192_ofb': OctetString, 'aes256_ofb': OctetString, # From RFC5084 'aes128_ccm': CcmParams, 'aes192_ccm': CcmParams, 'aes256_ccm': CcmParams, # From PKCS#5 'pbes1_md2_des': Pbes1Params, 'pbes1_md5_des': Pbes1Params, 'pbes1_md2_rc2': Pbes1Params, 'pbes1_md5_rc2': Pbes1Params, 'pbes1_sha1_des': Pbes1Params, 'pbes1_sha1_rc2': Pbes1Params, # From PKCS#12 'pkcs12_sha1_rc4_128': Pbes1Params, 'pkcs12_sha1_rc4_40': Pbes1Params, 'pkcs12_sha1_tripledes_3key': Pbes1Params, 'pkcs12_sha1_tripledes_2key': Pbes1Params, 'pkcs12_sha1_rc2_128': Pbes1Params, 'pkcs12_sha1_rc2_40': Pbes1Params, # PKCS#1 v2.2 'rsaes_oaep': RSAESOAEPParams, } @property def kdf(self): """ Returns the name of the key derivation function to use. :return: A unicode from of one of the following: "pbkdf1", "pbkdf2", "pkcs12_kdf" """ encryption_algo = self['algorithm'].native if encryption_algo == 'pbes2': return self['parameters']['key_derivation_func']['algorithm'].native if encryption_algo.find('.') == -1: if encryption_algo.find('_') != -1: encryption_algo, _ = encryption_algo.split('_', 1) if encryption_algo == 'pbes1': return 'pbkdf1' if encryption_algo == 'pkcs12': return 'pkcs12_kdf' raise ValueError(unwrap( ''' Encryption algorithm "%s" does not have a registered key derivation function ''', encryption_algo )) raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s", can not determine key derivation function ''', encryption_algo )) @property def kdf_hmac(self): """ Returns the HMAC algorithm to use with the KDF. :return: A unicode string of one of the following: "md2", "md5", "sha1", "sha224", "sha256", "sha384", "sha512" """ encryption_algo = self['algorithm'].native if encryption_algo == 'pbes2': return self['parameters']['key_derivation_func']['parameters']['prf']['algorithm'].native if encryption_algo.find('.') == -1: if encryption_algo.find('_') != -1: _, hmac_algo, _ = encryption_algo.split('_', 2) return hmac_algo raise ValueError(unwrap( ''' Encryption algorithm "%s" does not have a registered key derivation function ''', encryption_algo )) raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s", can not determine key derivation hmac algorithm ''', encryption_algo )) @property def kdf_salt(self): """ Returns the byte string to use as the salt for the KDF. :return: A byte string """ encryption_algo = self['algorithm'].native if encryption_algo == 'pbes2': salt = self['parameters']['key_derivation_func']['parameters']['salt'] if salt.name == 'other_source': raise ValueError(unwrap( ''' Can not determine key derivation salt - the reserved-for-future-use other source salt choice was specified in the PBKDF2 params structure ''' )) return salt.native if encryption_algo.find('.') == -1: if encryption_algo.find('_') != -1: return self['parameters']['salt'].native raise ValueError(unwrap( ''' Encryption algorithm "%s" does not have a registered key derivation function ''', encryption_algo )) raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s", can not determine key derivation salt ''', encryption_algo )) @property def kdf_iterations(self): """ Returns the number of iterations that should be run via the KDF. :return: An integer """ encryption_algo = self['algorithm'].native if encryption_algo == 'pbes2': return self['parameters']['key_derivation_func']['parameters']['iteration_count'].native if encryption_algo.find('.') == -1: if encryption_algo.find('_') != -1: return self['parameters']['iterations'].native raise ValueError(unwrap( ''' Encryption algorithm "%s" does not have a registered key derivation function ''', encryption_algo )) raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s", can not determine key derivation iterations ''', encryption_algo )) @property def key_length(self): """ Returns the key length to pass to the cipher/kdf. The PKCS#5 spec does not specify a way to store the RC5 key length, however this tends not to be a problem since OpenSSL does not support RC5 in PKCS#8 and OS X does not provide an RC5 cipher for use in the Security Transforms library. :raises: ValueError - when the key length can not be determined :return: An integer representing the length in bytes """ encryption_algo = self['algorithm'].native if encryption_algo[0:3] == 'aes': return { 'aes128_': 16, 'aes192_': 24, 'aes256_': 32, }[encryption_algo[0:7]] cipher_lengths = { 'des': 8, 'tripledes_3key': 24, } if encryption_algo in cipher_lengths: return cipher_lengths[encryption_algo] if encryption_algo == 'rc2': rc2_parameter_version = self['parameters']['rc2_parameter_version'].native # See page 24 of # http://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf encoded_key_bits_map = { 160: 5, # 40-bit 120: 8, # 64-bit 58: 16, # 128-bit } if rc2_parameter_version in encoded_key_bits_map: return encoded_key_bits_map[rc2_parameter_version] if rc2_parameter_version >= 256: return rc2_parameter_version if rc2_parameter_version is None: return 4 # 32-bit default raise ValueError(unwrap( ''' Invalid RC2 parameter version found in EncryptionAlgorithm parameters ''' )) if encryption_algo == 'pbes2': key_length = self['parameters']['key_derivation_func']['parameters']['key_length'].native if key_length is not None: return key_length # If the KDF params don't specify the key size, we can infer it from # the encryption scheme for all schemes except for RC5. However, in # practical terms, neither OpenSSL or OS X support RC5 for PKCS#8 # so it is unlikely to be an issue that is run into. return self['parameters']['encryption_scheme'].key_length if encryption_algo.find('.') == -1: return { 'pbes1_md2_des': 8, 'pbes1_md5_des': 8, 'pbes1_md2_rc2': 8, 'pbes1_md5_rc2': 8, 'pbes1_sha1_des': 8, 'pbes1_sha1_rc2': 8, 'pkcs12_sha1_rc4_128': 16, 'pkcs12_sha1_rc4_40': 5, 'pkcs12_sha1_tripledes_3key': 24, 'pkcs12_sha1_tripledes_2key': 16, 'pkcs12_sha1_rc2_128': 16, 'pkcs12_sha1_rc2_40': 5, }[encryption_algo] raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s" ''', encryption_algo )) @property def encryption_mode(self): """ Returns the name of the encryption mode to use. :return: A unicode string from one of the following: "cbc", "ecb", "ofb", "cfb", "wrap", "gcm", "ccm", "wrap_pad" """ encryption_algo = self['algorithm'].native if encryption_algo[0:7] in set(['aes128_', 'aes192_', 'aes256_']): return encryption_algo[7:] if encryption_algo[0:6] == 'pbes1_': return 'cbc' if encryption_algo[0:7] == 'pkcs12_': return 'cbc' if encryption_algo in set(['des', 'tripledes_3key', 'rc2', 'rc5']): return 'cbc' if encryption_algo == 'pbes2': return self['parameters']['encryption_scheme'].encryption_mode raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s" ''', encryption_algo )) @property def encryption_cipher(self): """ Returns the name of the symmetric encryption cipher to use. The key length can be retrieved via the .key_length property to disabiguate between different variations of TripleDES, AES, and the RC* ciphers. :return: A unicode string from one of the following: "rc2", "rc5", "des", "tripledes", "aes" """ encryption_algo = self['algorithm'].native if encryption_algo[0:7] in set(['aes128_', 'aes192_', 'aes256_']): return 'aes' if encryption_algo in set(['des', 'rc2', 'rc5']): return encryption_algo if encryption_algo == 'tripledes_3key': return 'tripledes' if encryption_algo == 'pbes2': return self['parameters']['encryption_scheme'].encryption_cipher if encryption_algo.find('.') == -1: return { 'pbes1_md2_des': 'des', 'pbes1_md5_des': 'des', 'pbes1_md2_rc2': 'rc2', 'pbes1_md5_rc2': 'rc2', 'pbes1_sha1_des': 'des', 'pbes1_sha1_rc2': 'rc2', 'pkcs12_sha1_rc4_128': 'rc4', 'pkcs12_sha1_rc4_40': 'rc4', 'pkcs12_sha1_tripledes_3key': 'tripledes', 'pkcs12_sha1_tripledes_2key': 'tripledes', 'pkcs12_sha1_rc2_128': 'rc2', 'pkcs12_sha1_rc2_40': 'rc2', }[encryption_algo] raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s" ''', encryption_algo )) @property def encryption_block_size(self): """ Returns the block size of the encryption cipher, in bytes. :return: An integer that is the block size in bytes """ encryption_algo = self['algorithm'].native if encryption_algo[0:7] in set(['aes128_', 'aes192_', 'aes256_']): return 16 cipher_map = { 'des': 8, 'tripledes_3key': 8, 'rc2': 8, } if encryption_algo in cipher_map: return cipher_map[encryption_algo] if encryption_algo == 'rc5': return self['parameters']['block_size_in_bits'].native // 8 if encryption_algo == 'pbes2': return self['parameters']['encryption_scheme'].encryption_block_size if encryption_algo.find('.') == -1: return { 'pbes1_md2_des': 8, 'pbes1_md5_des': 8, 'pbes1_md2_rc2': 8, 'pbes1_md5_rc2': 8, 'pbes1_sha1_des': 8, 'pbes1_sha1_rc2': 8, 'pkcs12_sha1_rc4_128': 0, 'pkcs12_sha1_rc4_40': 0, 'pkcs12_sha1_tripledes_3key': 8, 'pkcs12_sha1_tripledes_2key': 8, 'pkcs12_sha1_rc2_128': 8, 'pkcs12_sha1_rc2_40': 8, }[encryption_algo] raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s" ''', encryption_algo )) @property def encryption_iv(self): """ Returns the byte string of the initialization vector for the encryption scheme. Only the PBES2 stores the IV in the params. For PBES1, the IV is derived from the KDF and this property will return None. :return: A byte string or None """ encryption_algo = self['algorithm'].native if encryption_algo in set(['rc2', 'rc5']): return self['parameters']['iv'].native # For DES/Triple DES and AES the IV is the entirety of the parameters octet_string_iv_oids = set([ 'des', 'tripledes_3key', 'aes128_cbc', 'aes192_cbc', 'aes256_cbc', 'aes128_ofb', 'aes192_ofb', 'aes256_ofb', ]) if encryption_algo in octet_string_iv_oids: return self['parameters'].native if encryption_algo == 'pbes2': return self['parameters']['encryption_scheme'].encryption_iv # All of the PBES1 algos use their KDF to create the IV. For the pbkdf1, # the KDF is told to generate a key that is an extra 8 bytes long, and # that is used for the IV. For the PKCS#12 KDF, it is called with an id # of 2 to generate the IV. In either case, we can't return the IV # without knowing the user's password. if encryption_algo.find('.') == -1: return None raise ValueError(unwrap( ''' Unrecognized encryption algorithm "%s" ''', encryption_algo )) class Pbes2Params(Sequence): _fields = [ ('key_derivation_func', KdfAlgorithm), ('encryption_scheme', EncryptionAlgorithm), ] class Pbmac1Params(Sequence): _fields = [ ('key_derivation_func', KdfAlgorithm), ('message_auth_scheme', HmacAlgorithm), ] class Pkcs5MacId(ObjectIdentifier): _map = { '1.2.840.113549.1.5.14': 'pbmac1', } class Pkcs5MacAlgorithm(Sequence): _fields = [ ('algorithm', Pkcs5MacId), ('parameters', Any), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'pbmac1': Pbmac1Params, } EncryptionAlgorithm._oid_specs['pbes2'] = Pbes2Params class AnyAlgorithmId(ObjectIdentifier): _map = {} def _setup(self): _map = self.__class__._map for other_cls in (EncryptionAlgorithmId, SignedDigestAlgorithmId, DigestAlgorithmId): for oid, name in other_cls._map.items(): _map[oid] = name class AnyAlgorithmIdentifier(_ForceNullParameters, Sequence): _fields = [ ('algorithm', AnyAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = {} def _setup(self): Sequence._setup(self) specs = self.__class__._oid_specs for other_cls in (EncryptionAlgorithm, SignedDigestAlgorithm): for oid, spec in other_cls._oid_specs.items(): specs[oid] = spec ================================================ FILE: libs/asn1crypto/cms.py ================================================ # coding: utf-8 """ ASN.1 type classes for cryptographic message syntax (CMS). Structures are also compatible with PKCS#7. Exports the following items: - AuthenticatedData() - AuthEnvelopedData() - CompressedData() - ContentInfo() - DigestedData() - EncryptedData() - EnvelopedData() - SignedAndEnvelopedData() - SignedData() Other type classes are defined that help compose the types listed above. Most CMS structures in the wild are formatted as ContentInfo encapsulating one of the other types. """ from __future__ import unicode_literals, division, absolute_import, print_function try: import zlib except (ImportError): zlib = None from .algos import ( _ForceNullParameters, DigestAlgorithm, EncryptionAlgorithm, EncryptionAlgorithmId, HmacAlgorithm, KdfAlgorithm, RSAESOAEPParams, SignedDigestAlgorithm, ) from .core import ( Any, BitString, Choice, Enumerated, GeneralizedTime, Integer, ObjectIdentifier, OctetBitString, OctetString, ParsableOctetString, Sequence, SequenceOf, SetOf, UTCTime, UTF8String, ) from .crl import CertificateList from .keys import PublicKeyInfo from .ocsp import OCSPResponse from .x509 import Attributes, Certificate, Extensions, GeneralName, GeneralNames, Name # These structures are taken from # ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-6.asc class ExtendedCertificateInfo(Sequence): _fields = [ ('version', Integer), ('certificate', Certificate), ('attributes', Attributes), ] class ExtendedCertificate(Sequence): _fields = [ ('extended_certificate_info', ExtendedCertificateInfo), ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetBitString), ] # These structures are taken from https://tools.ietf.org/html/rfc5652, # https://tools.ietf.org/html/rfc5083, http://tools.ietf.org/html/rfc2315, # https://tools.ietf.org/html/rfc5940, https://tools.ietf.org/html/rfc3274, # https://tools.ietf.org/html/rfc3281 class CMSVersion(Integer): _map = { 0: 'v0', 1: 'v1', 2: 'v2', 3: 'v3', 4: 'v4', 5: 'v5', } class CMSAttributeType(ObjectIdentifier): _map = { '1.2.840.113549.1.9.3': 'content_type', '1.2.840.113549.1.9.4': 'message_digest', '1.2.840.113549.1.9.5': 'signing_time', '1.2.840.113549.1.9.6': 'counter_signature', # https://datatracker.ietf.org/doc/html/rfc2633#section-2.5.2 '1.2.840.113549.1.9.15': 'smime_capabilities', # https://tools.ietf.org/html/rfc2633#page-26 '1.2.840.113549.1.9.16.2.11': 'encrypt_key_pref', # https://tools.ietf.org/html/rfc3161#page-20 '1.2.840.113549.1.9.16.2.14': 'signature_time_stamp_token', # https://tools.ietf.org/html/rfc6211#page-5 '1.2.840.113549.1.9.52': 'cms_algorithm_protection', # https://docs.microsoft.com/en-us/previous-versions/hh968145(v%3Dvs.85) '1.3.6.1.4.1.311.2.4.1': 'microsoft_nested_signature', # Some places refer to this as SPC_RFC3161_OBJID, others szOID_RFC3161_counterSign. # https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/ns-wincrypt-crypt_algorithm_identifier # refers to szOID_RFC3161_counterSign as "1.2.840.113549.1.9.16.1.4", # but that OID is also called szOID_TIMESTAMP_TOKEN. Because of there being # no canonical source for this OID, we give it our own name '1.3.6.1.4.1.311.3.3.1': 'microsoft_time_stamp_token', } class Time(Choice): _alternatives = [ ('utc_time', UTCTime), ('generalized_time', GeneralizedTime), ] class ContentType(ObjectIdentifier): _map = { '1.2.840.113549.1.7.1': 'data', '1.2.840.113549.1.7.2': 'signed_data', '1.2.840.113549.1.7.3': 'enveloped_data', '1.2.840.113549.1.7.4': 'signed_and_enveloped_data', '1.2.840.113549.1.7.5': 'digested_data', '1.2.840.113549.1.7.6': 'encrypted_data', '1.2.840.113549.1.9.16.1.2': 'authenticated_data', '1.2.840.113549.1.9.16.1.9': 'compressed_data', '1.2.840.113549.1.9.16.1.23': 'authenticated_enveloped_data', } class CMSAlgorithmProtection(Sequence): _fields = [ ('digest_algorithm', DigestAlgorithm), ('signature_algorithm', SignedDigestAlgorithm, {'implicit': 1, 'optional': True}), ('mac_algorithm', HmacAlgorithm, {'implicit': 2, 'optional': True}), ] class SetOfContentType(SetOf): _child_spec = ContentType class SetOfOctetString(SetOf): _child_spec = OctetString class SetOfTime(SetOf): _child_spec = Time class SetOfAny(SetOf): _child_spec = Any class SetOfCMSAlgorithmProtection(SetOf): _child_spec = CMSAlgorithmProtection class CMSAttribute(Sequence): _fields = [ ('type', CMSAttributeType), ('values', None), ] _oid_specs = {} def _values_spec(self): return self._oid_specs.get(self['type'].native, SetOfAny) _spec_callbacks = { 'values': _values_spec } class CMSAttributes(SetOf): _child_spec = CMSAttribute class IssuerSerial(Sequence): _fields = [ ('issuer', GeneralNames), ('serial', Integer), ('issuer_uid', OctetBitString, {'optional': True}), ] class AttCertVersion(Integer): _map = { 0: 'v1', 1: 'v2', } class AttCertSubject(Choice): _alternatives = [ ('base_certificate_id', IssuerSerial, {'explicit': 0}), ('subject_name', GeneralNames, {'explicit': 1}), ] class AttCertValidityPeriod(Sequence): _fields = [ ('not_before_time', GeneralizedTime), ('not_after_time', GeneralizedTime), ] class AttributeCertificateInfoV1(Sequence): _fields = [ ('version', AttCertVersion, {'default': 'v1'}), ('subject', AttCertSubject), ('issuer', GeneralNames), ('signature', SignedDigestAlgorithm), ('serial_number', Integer), ('att_cert_validity_period', AttCertValidityPeriod), ('attributes', Attributes), ('issuer_unique_id', OctetBitString, {'optional': True}), ('extensions', Extensions, {'optional': True}), ] class AttributeCertificateV1(Sequence): _fields = [ ('ac_info', AttributeCertificateInfoV1), ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetBitString), ] class DigestedObjectType(Enumerated): _map = { 0: 'public_key', 1: 'public_key_cert', 2: 'other_objy_types', } class ObjectDigestInfo(Sequence): _fields = [ ('digested_object_type', DigestedObjectType), ('other_object_type_id', ObjectIdentifier, {'optional': True}), ('digest_algorithm', DigestAlgorithm), ('object_digest', OctetBitString), ] class Holder(Sequence): _fields = [ ('base_certificate_id', IssuerSerial, {'implicit': 0, 'optional': True}), ('entity_name', GeneralNames, {'implicit': 1, 'optional': True}), ('object_digest_info', ObjectDigestInfo, {'implicit': 2, 'optional': True}), ] class V2Form(Sequence): _fields = [ ('issuer_name', GeneralNames, {'optional': True}), ('base_certificate_id', IssuerSerial, {'explicit': 0, 'optional': True}), ('object_digest_info', ObjectDigestInfo, {'explicit': 1, 'optional': True}), ] class AttCertIssuer(Choice): _alternatives = [ ('v1_form', GeneralNames), ('v2_form', V2Form, {'implicit': 0}), ] class IetfAttrValue(Choice): _alternatives = [ ('octets', OctetString), ('oid', ObjectIdentifier), ('string', UTF8String), ] class IetfAttrValues(SequenceOf): _child_spec = IetfAttrValue class IetfAttrSyntax(Sequence): _fields = [ ('policy_authority', GeneralNames, {'implicit': 0, 'optional': True}), ('values', IetfAttrValues), ] class SetOfIetfAttrSyntax(SetOf): _child_spec = IetfAttrSyntax class SvceAuthInfo(Sequence): _fields = [ ('service', GeneralName), ('ident', GeneralName), ('auth_info', OctetString, {'optional': True}), ] class SetOfSvceAuthInfo(SetOf): _child_spec = SvceAuthInfo class RoleSyntax(Sequence): _fields = [ ('role_authority', GeneralNames, {'implicit': 0, 'optional': True}), ('role_name', GeneralName, {'explicit': 1}), ] class SetOfRoleSyntax(SetOf): _child_spec = RoleSyntax class ClassList(BitString): _map = { 0: 'unmarked', 1: 'unclassified', 2: 'restricted', 3: 'confidential', 4: 'secret', 5: 'top_secret', } class SecurityCategory(Sequence): _fields = [ ('type', ObjectIdentifier, {'implicit': 0}), ('value', Any, {'explicit': 1}), ] class SetOfSecurityCategory(SetOf): _child_spec = SecurityCategory class Clearance(Sequence): _fields = [ ('policy_id', ObjectIdentifier), ('class_list', ClassList, {'default': set(['unclassified'])}), ('security_categories', SetOfSecurityCategory, {'optional': True}), ] class SetOfClearance(SetOf): _child_spec = Clearance class BigTime(Sequence): _fields = [ ('major', Integer), ('fractional_seconds', Integer), ('sign', Integer, {'optional': True}), ] class LeapData(Sequence): _fields = [ ('leap_time', BigTime), ('action', Integer), ] class SetOfLeapData(SetOf): _child_spec = LeapData class TimingMetrics(Sequence): _fields = [ ('ntp_time', BigTime), ('offset', BigTime), ('delay', BigTime), ('expiration', BigTime), ('leap_event', SetOfLeapData, {'optional': True}), ] class SetOfTimingMetrics(SetOf): _child_spec = TimingMetrics class TimingPolicy(Sequence): _fields = [ ('policy_id', SequenceOf, {'spec': ObjectIdentifier}), ('max_offset', BigTime, {'explicit': 0, 'optional': True}), ('max_delay', BigTime, {'explicit': 1, 'optional': True}), ] class SetOfTimingPolicy(SetOf): _child_spec = TimingPolicy class AttCertAttributeType(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.10.1': 'authentication_info', '1.3.6.1.5.5.7.10.2': 'access_identity', '1.3.6.1.5.5.7.10.3': 'charging_identity', '1.3.6.1.5.5.7.10.4': 'group', '2.5.4.72': 'role', '2.5.4.55': 'clearance', '1.3.6.1.4.1.601.10.4.1': 'timing_metrics', '1.3.6.1.4.1.601.10.4.2': 'timing_policy', } class AttCertAttribute(Sequence): _fields = [ ('type', AttCertAttributeType), ('values', None), ] _oid_specs = { 'authentication_info': SetOfSvceAuthInfo, 'access_identity': SetOfSvceAuthInfo, 'charging_identity': SetOfIetfAttrSyntax, 'group': SetOfIetfAttrSyntax, 'role': SetOfRoleSyntax, 'clearance': SetOfClearance, 'timing_metrics': SetOfTimingMetrics, 'timing_policy': SetOfTimingPolicy, } def _values_spec(self): return self._oid_specs.get(self['type'].native, SetOfAny) _spec_callbacks = { 'values': _values_spec } class AttCertAttributes(SequenceOf): _child_spec = AttCertAttribute class AttributeCertificateInfoV2(Sequence): _fields = [ ('version', AttCertVersion), ('holder', Holder), ('issuer', AttCertIssuer), ('signature', SignedDigestAlgorithm), ('serial_number', Integer), ('att_cert_validity_period', AttCertValidityPeriod), ('attributes', AttCertAttributes), ('issuer_unique_id', OctetBitString, {'optional': True}), ('extensions', Extensions, {'optional': True}), ] class AttributeCertificateV2(Sequence): # Handle the situation where a V2 cert is encoded as V1 _bad_tag = 1 _fields = [ ('ac_info', AttributeCertificateInfoV2), ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetBitString), ] class OtherCertificateFormat(Sequence): _fields = [ ('other_cert_format', ObjectIdentifier), ('other_cert', Any), ] class CertificateChoices(Choice): _alternatives = [ ('certificate', Certificate), ('extended_certificate', ExtendedCertificate, {'implicit': 0}), ('v1_attr_cert', AttributeCertificateV1, {'implicit': 1}), ('v2_attr_cert', AttributeCertificateV2, {'implicit': 2}), ('other', OtherCertificateFormat, {'implicit': 3}), ] def validate(self, class_, tag, contents): """ Ensures that the class and tag specified exist as an alternative. This custom version fixes parsing broken encodings there a V2 attribute # certificate is encoded as a V1 :param class_: The integer class_ from the encoded value header :param tag: The integer tag from the encoded value header :param contents: A byte string of the contents of the value - used when the object is explicitly tagged :raises: ValueError - when value is not a valid alternative """ super(CertificateChoices, self).validate(class_, tag, contents) if self._choice == 2: if AttCertVersion.load(Sequence.load(contents)[0].dump()).native == 'v2': self._choice = 3 class CertificateSet(SetOf): _child_spec = CertificateChoices class ContentInfo(Sequence): _fields = [ ('content_type', ContentType), ('content', Any, {'explicit': 0, 'optional': True}), ] _oid_pair = ('content_type', 'content') _oid_specs = {} class SetOfContentInfo(SetOf): _child_spec = ContentInfo class EncapsulatedContentInfo(Sequence): _fields = [ ('content_type', ContentType), ('content', ParsableOctetString, {'explicit': 0, 'optional': True}), ] _oid_pair = ('content_type', 'content') _oid_specs = {} class IssuerAndSerialNumber(Sequence): _fields = [ ('issuer', Name), ('serial_number', Integer), ] class SignerIdentifier(Choice): _alternatives = [ ('issuer_and_serial_number', IssuerAndSerialNumber), ('subject_key_identifier', OctetString, {'implicit': 0}), ] class DigestAlgorithms(SetOf): _child_spec = DigestAlgorithm class CertificateRevocationLists(SetOf): _child_spec = CertificateList class SCVPReqRes(Sequence): _fields = [ ('request', ContentInfo, {'explicit': 0, 'optional': True}), ('response', ContentInfo), ] class OtherRevInfoFormatId(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.16.2': 'ocsp_response', '1.3.6.1.5.5.7.16.4': 'scvp', } class OtherRevocationInfoFormat(Sequence): _fields = [ ('other_rev_info_format', OtherRevInfoFormatId), ('other_rev_info', Any), ] _oid_pair = ('other_rev_info_format', 'other_rev_info') _oid_specs = { 'ocsp_response': OCSPResponse, 'scvp': SCVPReqRes, } class RevocationInfoChoice(Choice): _alternatives = [ ('crl', CertificateList), ('other', OtherRevocationInfoFormat, {'implicit': 1}), ] class RevocationInfoChoices(SetOf): _child_spec = RevocationInfoChoice class SignerInfo(Sequence): _fields = [ ('version', CMSVersion), ('sid', SignerIdentifier), ('digest_algorithm', DigestAlgorithm), ('signed_attrs', CMSAttributes, {'implicit': 0, 'optional': True}), ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetString), ('unsigned_attrs', CMSAttributes, {'implicit': 1, 'optional': True}), ] class SignerInfos(SetOf): _child_spec = SignerInfo class SignedData(Sequence): _fields = [ ('version', CMSVersion), ('digest_algorithms', DigestAlgorithms), ('encap_content_info', None), ('certificates', CertificateSet, {'implicit': 0, 'optional': True}), ('crls', RevocationInfoChoices, {'implicit': 1, 'optional': True}), ('signer_infos', SignerInfos), ] def _encap_content_info_spec(self): # If the encap_content_info is version v1, then this could be a PKCS#7 # structure, or a CMS structure. CMS wraps the encoded value in an # Octet String tag. # If the version is greater than 1, it is definite CMS if self['version'].native != 'v1': return EncapsulatedContentInfo # Otherwise, the ContentInfo spec from PKCS#7 will be compatible with # CMS v1 (which only allows Data, an Octet String) and PKCS#7, which # allows Any return ContentInfo _spec_callbacks = { 'encap_content_info': _encap_content_info_spec } class OriginatorInfo(Sequence): _fields = [ ('certs', CertificateSet, {'implicit': 0, 'optional': True}), ('crls', RevocationInfoChoices, {'implicit': 1, 'optional': True}), ] class RecipientIdentifier(Choice): _alternatives = [ ('issuer_and_serial_number', IssuerAndSerialNumber), ('subject_key_identifier', OctetString, {'implicit': 0}), ] class KeyEncryptionAlgorithmId(ObjectIdentifier): _map = { '1.2.840.113549.1.1.1': 'rsaes_pkcs1v15', '1.2.840.113549.1.1.7': 'rsaes_oaep', '2.16.840.1.101.3.4.1.5': 'aes128_wrap', '2.16.840.1.101.3.4.1.8': 'aes128_wrap_pad', '2.16.840.1.101.3.4.1.25': 'aes192_wrap', '2.16.840.1.101.3.4.1.28': 'aes192_wrap_pad', '2.16.840.1.101.3.4.1.45': 'aes256_wrap', '2.16.840.1.101.3.4.1.48': 'aes256_wrap_pad', } _reverse_map = { 'rsa': '1.2.840.113549.1.1.1', 'rsaes_pkcs1v15': '1.2.840.113549.1.1.1', 'rsaes_oaep': '1.2.840.113549.1.1.7', 'aes128_wrap': '2.16.840.1.101.3.4.1.5', 'aes128_wrap_pad': '2.16.840.1.101.3.4.1.8', 'aes192_wrap': '2.16.840.1.101.3.4.1.25', 'aes192_wrap_pad': '2.16.840.1.101.3.4.1.28', 'aes256_wrap': '2.16.840.1.101.3.4.1.45', 'aes256_wrap_pad': '2.16.840.1.101.3.4.1.48', } class KeyEncryptionAlgorithm(_ForceNullParameters, Sequence): _fields = [ ('algorithm', KeyEncryptionAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'rsaes_oaep': RSAESOAEPParams, } class KeyTransRecipientInfo(Sequence): _fields = [ ('version', CMSVersion), ('rid', RecipientIdentifier), ('key_encryption_algorithm', KeyEncryptionAlgorithm), ('encrypted_key', OctetString), ] class OriginatorIdentifierOrKey(Choice): _alternatives = [ ('issuer_and_serial_number', IssuerAndSerialNumber), ('subject_key_identifier', OctetString, {'implicit': 0}), ('originator_key', PublicKeyInfo, {'implicit': 1}), ] class OtherKeyAttribute(Sequence): _fields = [ ('key_attr_id', ObjectIdentifier), ('key_attr', Any), ] class RecipientKeyIdentifier(Sequence): _fields = [ ('subject_key_identifier', OctetString), ('date', GeneralizedTime, {'optional': True}), ('other', OtherKeyAttribute, {'optional': True}), ] class KeyAgreementRecipientIdentifier(Choice): _alternatives = [ ('issuer_and_serial_number', IssuerAndSerialNumber), ('r_key_id', RecipientKeyIdentifier, {'implicit': 0}), ] class RecipientEncryptedKey(Sequence): _fields = [ ('rid', KeyAgreementRecipientIdentifier), ('encrypted_key', OctetString), ] class RecipientEncryptedKeys(SequenceOf): _child_spec = RecipientEncryptedKey class KeyAgreeRecipientInfo(Sequence): _fields = [ ('version', CMSVersion), ('originator', OriginatorIdentifierOrKey, {'explicit': 0}), ('ukm', OctetString, {'explicit': 1, 'optional': True}), ('key_encryption_algorithm', KeyEncryptionAlgorithm), ('recipient_encrypted_keys', RecipientEncryptedKeys), ] class KEKIdentifier(Sequence): _fields = [ ('key_identifier', OctetString), ('date', GeneralizedTime, {'optional': True}), ('other', OtherKeyAttribute, {'optional': True}), ] class KEKRecipientInfo(Sequence): _fields = [ ('version', CMSVersion), ('kekid', KEKIdentifier), ('key_encryption_algorithm', KeyEncryptionAlgorithm), ('encrypted_key', OctetString), ] class PasswordRecipientInfo(Sequence): _fields = [ ('version', CMSVersion), ('key_derivation_algorithm', KdfAlgorithm, {'implicit': 0, 'optional': True}), ('key_encryption_algorithm', KeyEncryptionAlgorithm), ('encrypted_key', OctetString), ] class OtherRecipientInfo(Sequence): _fields = [ ('ori_type', ObjectIdentifier), ('ori_value', Any), ] class RecipientInfo(Choice): _alternatives = [ ('ktri', KeyTransRecipientInfo), ('kari', KeyAgreeRecipientInfo, {'implicit': 1}), ('kekri', KEKRecipientInfo, {'implicit': 2}), ('pwri', PasswordRecipientInfo, {'implicit': 3}), ('ori', OtherRecipientInfo, {'implicit': 4}), ] class RecipientInfos(SetOf): _child_spec = RecipientInfo class EncryptedContentInfo(Sequence): _fields = [ ('content_type', ContentType), ('content_encryption_algorithm', EncryptionAlgorithm), ('encrypted_content', OctetString, {'implicit': 0, 'optional': True}), ] class EnvelopedData(Sequence): _fields = [ ('version', CMSVersion), ('originator_info', OriginatorInfo, {'implicit': 0, 'optional': True}), ('recipient_infos', RecipientInfos), ('encrypted_content_info', EncryptedContentInfo), ('unprotected_attrs', CMSAttributes, {'implicit': 1, 'optional': True}), ] class SignedAndEnvelopedData(Sequence): _fields = [ ('version', CMSVersion), ('recipient_infos', RecipientInfos), ('digest_algorithms', DigestAlgorithms), ('encrypted_content_info', EncryptedContentInfo), ('certificates', CertificateSet, {'implicit': 0, 'optional': True}), ('crls', CertificateRevocationLists, {'implicit': 1, 'optional': True}), ('signer_infos', SignerInfos), ] class DigestedData(Sequence): _fields = [ ('version', CMSVersion), ('digest_algorithm', DigestAlgorithm), ('encap_content_info', None), ('digest', OctetString), ] def _encap_content_info_spec(self): # If the encap_content_info is version v1, then this could be a PKCS#7 # structure, or a CMS structure. CMS wraps the encoded value in an # Octet String tag. # If the version is greater than 1, it is definite CMS if self['version'].native != 'v1': return EncapsulatedContentInfo # Otherwise, the ContentInfo spec from PKCS#7 will be compatible with # CMS v1 (which only allows Data, an Octet String) and PKCS#7, which # allows Any return ContentInfo _spec_callbacks = { 'encap_content_info': _encap_content_info_spec } class EncryptedData(Sequence): _fields = [ ('version', CMSVersion), ('encrypted_content_info', EncryptedContentInfo), ('unprotected_attrs', CMSAttributes, {'implicit': 1, 'optional': True}), ] class AuthenticatedData(Sequence): _fields = [ ('version', CMSVersion), ('originator_info', OriginatorInfo, {'implicit': 0, 'optional': True}), ('recipient_infos', RecipientInfos), ('mac_algorithm', HmacAlgorithm), ('digest_algorithm', DigestAlgorithm, {'implicit': 1, 'optional': True}), # This does not require the _spec_callbacks approach of SignedData and # DigestedData since AuthenticatedData was not part of PKCS#7 ('encap_content_info', EncapsulatedContentInfo), ('auth_attrs', CMSAttributes, {'implicit': 2, 'optional': True}), ('mac', OctetString), ('unauth_attrs', CMSAttributes, {'implicit': 3, 'optional': True}), ] class AuthEnvelopedData(Sequence): _fields = [ ('version', CMSVersion), ('originator_info', OriginatorInfo, {'implicit': 0, 'optional': True}), ('recipient_infos', RecipientInfos), ('auth_encrypted_content_info', EncryptedContentInfo), ('auth_attrs', CMSAttributes, {'implicit': 1, 'optional': True}), ('mac', OctetString), ('unauth_attrs', CMSAttributes, {'implicit': 2, 'optional': True}), ] class CompressionAlgorithmId(ObjectIdentifier): _map = { '1.2.840.113549.1.9.16.3.8': 'zlib', } class CompressionAlgorithm(Sequence): _fields = [ ('algorithm', CompressionAlgorithmId), ('parameters', Any, {'optional': True}), ] class CompressedData(Sequence): _fields = [ ('version', CMSVersion), ('compression_algorithm', CompressionAlgorithm), ('encap_content_info', EncapsulatedContentInfo), ] _decompressed = None @property def decompressed(self): if self._decompressed is None: if zlib is None: raise SystemError('The zlib module is not available') self._decompressed = zlib.decompress(self['encap_content_info']['content'].native) return self._decompressed class RecipientKeyIdentifier(Sequence): _fields = [ ('subjectKeyIdentifier', OctetString), ('date', GeneralizedTime, {'optional': True}), ('other', OtherKeyAttribute, {'optional': True}), ] class SMIMEEncryptionKeyPreference(Choice): _alternatives = [ ('issuer_and_serial_number', IssuerAndSerialNumber, {'implicit': 0}), ('recipientKeyId', RecipientKeyIdentifier, {'implicit': 1}), ('subjectAltKeyIdentifier', PublicKeyInfo, {'implicit': 2}), ] class SMIMEEncryptionKeyPreferences(SetOf): _child_spec = SMIMEEncryptionKeyPreference class SMIMECapabilityIdentifier(Sequence): _fields = [ ('capability_id', EncryptionAlgorithmId), ('parameters', Any, {'optional': True}), ] class SMIMECapabilites(SequenceOf): _child_spec = SMIMECapabilityIdentifier class SetOfSMIMECapabilites(SetOf): _child_spec = SMIMECapabilites ContentInfo._oid_specs = { 'data': OctetString, 'signed_data': SignedData, 'enveloped_data': EnvelopedData, 'signed_and_enveloped_data': SignedAndEnvelopedData, 'digested_data': DigestedData, 'encrypted_data': EncryptedData, 'authenticated_data': AuthenticatedData, 'compressed_data': CompressedData, 'authenticated_enveloped_data': AuthEnvelopedData, } EncapsulatedContentInfo._oid_specs = { 'signed_data': SignedData, 'enveloped_data': EnvelopedData, 'signed_and_enveloped_data': SignedAndEnvelopedData, 'digested_data': DigestedData, 'encrypted_data': EncryptedData, 'authenticated_data': AuthenticatedData, 'compressed_data': CompressedData, 'authenticated_enveloped_data': AuthEnvelopedData, } CMSAttribute._oid_specs = { 'content_type': SetOfContentType, 'message_digest': SetOfOctetString, 'signing_time': SetOfTime, 'counter_signature': SignerInfos, 'signature_time_stamp_token': SetOfContentInfo, 'cms_algorithm_protection': SetOfCMSAlgorithmProtection, 'microsoft_nested_signature': SetOfContentInfo, 'microsoft_time_stamp_token': SetOfContentInfo, 'encrypt_key_pref': SMIMEEncryptionKeyPreferences, 'smime_capabilities': SetOfSMIMECapabilites, } ================================================ FILE: libs/asn1crypto/core.py ================================================ # coding: utf-8 """ ASN.1 type classes for universal types. Exports the following items: - load() - Any() - Asn1Value() - BitString() - BMPString() - Boolean() - CharacterString() - Choice() - EmbeddedPdv() - Enumerated() - GeneralizedTime() - GeneralString() - GraphicString() - IA5String() - InstanceOf() - Integer() - IntegerBitString() - IntegerOctetString() - Null() - NumericString() - ObjectDescriptor() - ObjectIdentifier() - OctetBitString() - OctetString() - PrintableString() - Real() - RelativeOid() - Sequence() - SequenceOf() - Set() - SetOf() - TeletexString() - UniversalString() - UTCTime() - UTF8String() - VideotexString() - VisibleString() - VOID - Void() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function from datetime import datetime, timedelta from fractions import Fraction import binascii import copy import math import re import sys from . import _teletex_codec from ._errors import unwrap from ._ordereddict import OrderedDict from ._types import type_name, str_cls, byte_cls, int_types, chr_cls from .parser import _parse, _dump_header from .util import int_to_bytes, int_from_bytes, timezone, extended_datetime, create_timezone, utc_with_dst if sys.version_info <= (3,): from cStringIO import StringIO as BytesIO range = xrange # noqa _PY2 = True else: from io import BytesIO _PY2 = False _teletex_codec.register() CLASS_NUM_TO_NAME_MAP = { 0: 'universal', 1: 'application', 2: 'context', 3: 'private', } CLASS_NAME_TO_NUM_MAP = { 'universal': 0, 'application': 1, 'context': 2, 'private': 3, 0: 0, 1: 1, 2: 2, 3: 3, } METHOD_NUM_TO_NAME_MAP = { 0: 'primitive', 1: 'constructed', } _OID_RE = re.compile(r'^\d+(\.\d+)*$') # A global tracker to ensure that _setup() is called for every class, even # if is has been called for a parent class. This allows different _fields # definitions for child classes. Without such a construct, the child classes # would just see the parent class attributes and would use them. _SETUP_CLASSES = {} def load(encoded_data, strict=False): """ Loads a BER/DER-encoded byte string and construct a universal object based on the tag value: - 1: Boolean - 2: Integer - 3: BitString - 4: OctetString - 5: Null - 6: ObjectIdentifier - 7: ObjectDescriptor - 8: InstanceOf - 9: Real - 10: Enumerated - 11: EmbeddedPdv - 12: UTF8String - 13: RelativeOid - 16: Sequence, - 17: Set - 18: NumericString - 19: PrintableString - 20: TeletexString - 21: VideotexString - 22: IA5String - 23: UTCTime - 24: GeneralizedTime - 25: GraphicString - 26: VisibleString - 27: GeneralString - 28: UniversalString - 29: CharacterString - 30: BMPString :param encoded_data: A byte string of BER or DER-encoded data :param strict: A boolean indicating if trailing data should be forbidden - if so, a ValueError will be raised when trailing data exists :raises: ValueError - when strict is True and trailing data is present ValueError - when the encoded value tag a tag other than listed above ValueError - when the ASN.1 header length is longer than the data TypeError - when encoded_data is not a byte string :return: An instance of the one of the universal classes """ return Asn1Value.load(encoded_data, strict=strict) class Asn1Value(object): """ The basis of all ASN.1 values """ # The integer 0 for primitive, 1 for constructed method = None # An integer 0 through 3 - see CLASS_NUM_TO_NAME_MAP for value class_ = None # An integer 1 or greater indicating the tag number tag = None # An alternate tag allowed for this type - used for handling broken # structures where a string value is encoded using an incorrect tag _bad_tag = None # If the value has been implicitly tagged implicit = False # If explicitly tagged, a tuple of 2-element tuples containing the # class int and tag int, from innermost to outermost explicit = None # The BER/DER header bytes _header = None # Raw encoded value bytes not including class, method, tag, length header contents = None # The BER/DER trailer bytes _trailer = b'' # The native python representation of the value - this is not used by # some classes since they utilize _bytes or _unicode _native = None @classmethod def load(cls, encoded_data, strict=False, **kwargs): """ Loads a BER/DER-encoded byte string using the current class as the spec :param encoded_data: A byte string of BER or DER-encoded data :param strict: A boolean indicating if trailing data should be forbidden - if so, a ValueError will be raised when trailing data exists :return: An instance of the current class """ if not isinstance(encoded_data, byte_cls): raise TypeError('encoded_data must be a byte string, not %s' % type_name(encoded_data)) spec = None if cls.tag is not None: spec = cls value, _ = _parse_build(encoded_data, spec=spec, spec_params=kwargs, strict=strict) return value def __init__(self, explicit=None, implicit=None, no_explicit=False, tag_type=None, class_=None, tag=None, optional=None, default=None, contents=None, method=None): """ The optional parameter is not used, but rather included so we don't have to delete it from the parameter dictionary when passing as keyword args :param explicit: An int tag number for explicit tagging, or a 2-element tuple of class and tag. :param implicit: An int tag number for implicit tagging, or a 2-element tuple of class and tag. :param no_explicit: If explicit tagging info should be removed from this instance. Used internally to allow contructing the underlying value that has been wrapped in an explicit tag. :param tag_type: None for normal values, or one of "implicit", "explicit" for tagged values. Deprecated in favor of explicit and implicit params. :param class_: The class for the value - defaults to "universal" if tag_type is None, otherwise defaults to "context". Valid values include: - "universal" - "application" - "context" - "private" Deprecated in favor of explicit and implicit params. :param tag: The integer tag to override - usually this is used with tag_type or class_. Deprecated in favor of explicit and implicit params. :param optional: Dummy parameter that allows "optional" key in spec param dicts :param default: The default value to use if the value is currently None :param contents: A byte string of the encoded contents of the value :param method: The method for the value - no default value since this is normally set on a class. Valid values include: - "primitive" or 0 - "constructed" or 1 :raises: ValueError - when implicit, explicit, tag_type, class_ or tag are invalid values """ try: if self.__class__ not in _SETUP_CLASSES: cls = self.__class__ # Allow explicit to be specified as a simple 2-element tuple # instead of requiring the user make a nested tuple if cls.explicit is not None and isinstance(cls.explicit[0], int_types): cls.explicit = (cls.explicit, ) if hasattr(cls, '_setup'): self._setup() _SETUP_CLASSES[cls] = True # Normalize tagging values if explicit is not None: if isinstance(explicit, int_types): if class_ is None: class_ = 'context' explicit = (class_, explicit) # Prevent both explicit and tag_type == 'explicit' if tag_type == 'explicit': tag_type = None tag = None if implicit is not None: if isinstance(implicit, int_types): if class_ is None: class_ = 'context' implicit = (class_, implicit) # Prevent both implicit and tag_type == 'implicit' if tag_type == 'implicit': tag_type = None tag = None # Convert old tag_type API to explicit/implicit params if tag_type is not None: if class_ is None: class_ = 'context' if tag_type == 'explicit': explicit = (class_, tag) elif tag_type == 'implicit': implicit = (class_, tag) else: raise ValueError(unwrap( ''' tag_type must be one of "implicit", "explicit", not %s ''', repr(tag_type) )) if explicit is not None: # Ensure we have a tuple of 2-element tuples if len(explicit) == 2 and isinstance(explicit[1], int_types): explicit = (explicit, ) for class_, tag in explicit: invalid_class = None if isinstance(class_, int_types): if class_ not in CLASS_NUM_TO_NAME_MAP: invalid_class = class_ else: if class_ not in CLASS_NAME_TO_NUM_MAP: invalid_class = class_ class_ = CLASS_NAME_TO_NUM_MAP[class_] if invalid_class is not None: raise ValueError(unwrap( ''' explicit class must be one of "universal", "application", "context", "private", not %s ''', repr(invalid_class) )) if tag is not None: if not isinstance(tag, int_types): raise TypeError(unwrap( ''' explicit tag must be an integer, not %s ''', type_name(tag) )) if self.explicit is None: self.explicit = ((class_, tag), ) else: self.explicit = self.explicit + ((class_, tag), ) elif implicit is not None: class_, tag = implicit if class_ not in CLASS_NAME_TO_NUM_MAP: raise ValueError(unwrap( ''' implicit class must be one of "universal", "application", "context", "private", not %s ''', repr(class_) )) if tag is not None: if not isinstance(tag, int_types): raise TypeError(unwrap( ''' implicit tag must be an integer, not %s ''', type_name(tag) )) self.class_ = CLASS_NAME_TO_NUM_MAP[class_] self.tag = tag self.implicit = True else: if class_ is not None: if class_ not in CLASS_NAME_TO_NUM_MAP: raise ValueError(unwrap( ''' class_ must be one of "universal", "application", "context", "private", not %s ''', repr(class_) )) self.class_ = CLASS_NAME_TO_NUM_MAP[class_] if self.class_ is None: self.class_ = 0 if tag is not None: self.tag = tag if method is not None: if method not in set(["primitive", 0, "constructed", 1]): raise ValueError(unwrap( ''' method must be one of "primitive" or "constructed", not %s ''', repr(method) )) if method == "primitive": method = 0 elif method == "constructed": method = 1 self.method = method if no_explicit: self.explicit = None if contents is not None: self.contents = contents elif default is not None: self.set(default) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while constructing %s' % type_name(self),) + args raise e def __str__(self): """ Since str is different in Python 2 and 3, this calls the appropriate method, __unicode__() or __bytes__() :return: A unicode string """ if _PY2: return self.__bytes__() else: return self.__unicode__() def __repr__(self): """ :return: A unicode string """ if _PY2: return '<%s %s b%s>' % (type_name(self), id(self), repr(self.dump())) else: return '<%s %s %s>' % (type_name(self), id(self), repr(self.dump())) def __bytes__(self): """ A fall-back method for print() in Python 2 :return: A byte string of the output of repr() """ return self.__repr__().encode('utf-8') def __unicode__(self): """ A fall-back method for print() in Python 3 :return: A unicode string of the output of repr() """ return self.__repr__() def _new_instance(self): """ Constructs a new copy of the current object, preserving any tagging :return: An Asn1Value object """ new_obj = self.__class__() new_obj.class_ = self.class_ new_obj.tag = self.tag new_obj.implicit = self.implicit new_obj.explicit = self.explicit return new_obj def __copy__(self): """ Implements the copy.copy() interface :return: A new shallow copy of the current Asn1Value object """ new_obj = self._new_instance() new_obj._copy(self, copy.copy) return new_obj def __deepcopy__(self, memo): """ Implements the copy.deepcopy() interface :param memo: A dict for memoization :return: A new deep copy of the current Asn1Value object """ new_obj = self._new_instance() memo[id(self)] = new_obj new_obj._copy(self, copy.deepcopy) return new_obj def copy(self): """ Copies the object, preserving any special tagging from it :return: An Asn1Value object """ return copy.deepcopy(self) def retag(self, tagging, tag=None): """ Copies the object, applying a new tagging to it :param tagging: A dict containing the keys "explicit" and "implicit". Legacy API allows a unicode string of "implicit" or "explicit". :param tag: A integer tag number. Only used when tagging is a unicode string. :return: An Asn1Value object """ # This is required to preserve the old API if not isinstance(tagging, dict): tagging = {tagging: tag} new_obj = self.__class__(explicit=tagging.get('explicit'), implicit=tagging.get('implicit')) new_obj._copy(self, copy.deepcopy) return new_obj def untag(self): """ Copies the object, removing any special tagging from it :return: An Asn1Value object """ new_obj = self.__class__() new_obj._copy(self, copy.deepcopy) return new_obj def _copy(self, other, copy_func): """ Copies the contents of another Asn1Value object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ if self.__class__ != other.__class__: raise TypeError(unwrap( ''' Can not copy values from %s object to %s object ''', type_name(other), type_name(self) )) self.contents = other.contents self._native = copy_func(other._native) def debug(self, nest_level=1): """ Show the binary data and parsed data in a tree structure """ prefix = ' ' * nest_level # This interacts with Any and moves the tag, implicit, explicit, _header, # contents, _footer to the parsed value so duplicate data isn't present has_parsed = hasattr(self, 'parsed') _basic_debug(prefix, self) if has_parsed: self.parsed.debug(nest_level + 2) elif hasattr(self, 'chosen'): self.chosen.debug(nest_level + 2) else: if _PY2 and isinstance(self.native, byte_cls): print('%s Native: b%s' % (prefix, repr(self.native))) else: print('%s Native: %s' % (prefix, self.native)) def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ contents = self.contents # If the length is indefinite, force the re-encoding if self._header is not None and self._header[-1:] == b'\x80': force = True if self._header is None or force: if isinstance(self, Constructable) and self._indefinite: self.method = 0 header = _dump_header(self.class_, self.method, self.tag, self.contents) if self.explicit is not None: for class_, tag in self.explicit: header = _dump_header(class_, 1, tag, header + self.contents) + header self._header = header self._trailer = b'' return self._header + contents + self._trailer class ValueMap(): """ Basic functionality that allows for mapping values from ints or OIDs to python unicode strings """ # A dict from primitive value (int or OID) to unicode string. This needs # to be defined in the source code _map = None # A dict from unicode string to int/OID. This is automatically generated # from _map the first time it is needed _reverse_map = None def _setup(self): """ Generates _reverse_map from _map """ cls = self.__class__ if cls._map is None or cls._reverse_map is not None: return cls._reverse_map = {} for key, value in cls._map.items(): cls._reverse_map[value] = key class Castable(object): """ A mixin to handle converting an object between different classes that represent the same encoded value, but with different rules for converting to and from native Python values """ def cast(self, other_class): """ Converts the current object into an object of a different class. The new class must use the ASN.1 encoding for the value. :param other_class: The class to instantiate the new object from :return: An instance of the type other_class """ if other_class.tag != self.__class__.tag: raise TypeError(unwrap( ''' Can not covert a value from %s object to %s object since they use different tags: %d versus %d ''', type_name(other_class), type_name(self), other_class.tag, self.__class__.tag )) new_obj = other_class() new_obj.class_ = self.class_ new_obj.implicit = self.implicit new_obj.explicit = self.explicit new_obj._header = self._header new_obj.contents = self.contents new_obj._trailer = self._trailer if isinstance(self, Constructable): new_obj.method = self.method new_obj._indefinite = self._indefinite return new_obj class Constructable(object): """ A mixin to handle string types that may be constructed from chunks contained within an indefinite length BER-encoded container """ # Instance attribute indicating if an object was indefinite # length when parsed - affects parsing and dumping _indefinite = False def _merge_chunks(self): """ :return: A concatenation of the native values of the contained chunks """ if not self._indefinite: return self._as_chunk() pointer = 0 contents_len = len(self.contents) output = None while pointer < contents_len: # We pass the current class as the spec so content semantics are preserved sub_value, pointer = _parse_build(self.contents, pointer, spec=self.__class__) if output is None: output = sub_value._merge_chunks() else: output += sub_value._merge_chunks() if output is None: return self._as_chunk() return output def _as_chunk(self): """ A method to return a chunk of data that can be combined for constructed method values :return: A native Python value that can be added together. Examples include byte strings, unicode strings or tuples. """ return self.contents def _setable_native(self): """ Returns a native value that can be round-tripped into .set(), to result in a DER encoding. This differs from .native in that .native is designed for the end use, and may account for the fact that the merged value is further parsed as ASN.1, such as in the case of ParsableOctetString() and ParsableOctetBitString(). :return: A python value that is valid to pass to .set() """ return self.native def _copy(self, other, copy_func): """ Copies the contents of another Constructable object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(Constructable, self)._copy(other, copy_func) # We really don't want to dump BER encodings, so if we see an # indefinite encoding, let's re-encode it if other._indefinite: self.set(other._setable_native()) class Void(Asn1Value): """ A representation of an optional value that is not present. Has .native property and .dump() method to be compatible with other value classes. """ contents = b'' def __eq__(self, other): """ :param other: The other Primitive to compare to :return: A boolean """ return other.__class__ == self.__class__ def __nonzero__(self): return False def __len__(self): return 0 def __iter__(self): return iter(()) @property def native(self): """ The native Python datatype representation of this value :return: None """ return None def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ return b'' VOID = Void() class Any(Asn1Value): """ A value class that can contain any value, and allows for easy parsing of the underlying encoded value using a spec. This is normally contained in a Structure that has an ObjectIdentifier field and _oid_pair and _oid_specs defined. """ # The parsed value object _parsed = None def __init__(self, value=None, **kwargs): """ Sets the value of the object before passing to Asn1Value.__init__() :param value: An Asn1Value object that will be set as the parsed value """ Asn1Value.__init__(self, **kwargs) try: if value is not None: if not isinstance(value, Asn1Value): raise TypeError(unwrap( ''' value must be an instance of Asn1Value, not %s ''', type_name(value) )) self._parsed = (value, value.__class__, None) self.contents = value.dump() except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while constructing %s' % type_name(self),) + args raise e @property def native(self): """ The native Python datatype representation of this value :return: The .native value from the parsed value object """ if self._parsed is None: self.parse() return self._parsed[0].native @property def parsed(self): """ Returns the parsed object from .parse() :return: The object returned by .parse() """ if self._parsed is None: self.parse() return self._parsed[0] def parse(self, spec=None, spec_params=None): """ Parses the contents generically, or using a spec with optional params :param spec: A class derived from Asn1Value that defines what class_ and tag the value should have, and the semantics of the encoded value. The return value will be of this type. If omitted, the encoded value will be decoded using the standard universal tag based on the encoded tag number. :param spec_params: A dict of params to pass to the spec object :return: An object of the type spec, or if not present, a child of Asn1Value """ if self._parsed is None or self._parsed[1:3] != (spec, spec_params): try: passed_params = spec_params or {} _tag_type_to_explicit_implicit(passed_params) if self.explicit is not None: if 'explicit' in passed_params: passed_params['explicit'] = self.explicit + passed_params['explicit'] else: passed_params['explicit'] = self.explicit contents = self._header + self.contents + self._trailer parsed_value, _ = _parse_build( contents, spec=spec, spec_params=passed_params ) self._parsed = (parsed_value, spec, spec_params) # Once we've parsed the Any value, clear any attributes from this object # since they are now duplicate self.tag = None self.explicit = None self.implicit = False self._header = b'' self.contents = contents self._trailer = b'' except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e return self._parsed[0] def _copy(self, other, copy_func): """ Copies the contents of another Any object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(Any, self)._copy(other, copy_func) self._parsed = copy_func(other._parsed) def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ if self._parsed is None: self.parse() return self._parsed[0].dump(force=force) class Choice(Asn1Value): """ A class to handle when a value may be one of several options """ # The index in _alternatives of the validated alternative _choice = None # The name of the chosen alternative _name = None # The Asn1Value object for the chosen alternative _parsed = None # Choice overrides .contents to be a property so that the code expecting # the .contents attribute will get the .contents of the chosen alternative _contents = None # A list of tuples in one of the following forms. # # Option 1, a unicode string field name and a value class # # ("name", Asn1ValueClass) # # Option 2, same as Option 1, but with a dict of class params # # ("name", Asn1ValueClass, {'explicit': 5}) _alternatives = None # A dict that maps tuples of (class_, tag) to an index in _alternatives _id_map = None # A dict that maps alternative names to an index in _alternatives _name_map = None @classmethod def load(cls, encoded_data, strict=False, **kwargs): """ Loads a BER/DER-encoded byte string using the current class as the spec :param encoded_data: A byte string of BER or DER encoded data :param strict: A boolean indicating if trailing data should be forbidden - if so, a ValueError will be raised when trailing data exists :return: A instance of the current class """ if not isinstance(encoded_data, byte_cls): raise TypeError('encoded_data must be a byte string, not %s' % type_name(encoded_data)) value, _ = _parse_build(encoded_data, spec=cls, spec_params=kwargs, strict=strict) return value def _setup(self): """ Generates _id_map from _alternatives to allow validating contents """ cls = self.__class__ cls._id_map = {} cls._name_map = {} for index, info in enumerate(cls._alternatives): if len(info) < 3: info = info + ({},) cls._alternatives[index] = info id_ = _build_id_tuple(info[2], info[1]) cls._id_map[id_] = index cls._name_map[info[0]] = index def __init__(self, name=None, value=None, **kwargs): """ Checks to ensure implicit tagging is not being used since it is incompatible with Choice, then forwards on to Asn1Value.__init__() :param name: The name of the alternative to be set - used with value. Alternatively this may be a dict with a single key being the name and the value being the value, or a two-element tuple of the name and the value. :param value: The alternative value to set - used with name :raises: ValueError - when implicit param is passed (or legacy tag_type param is "implicit") """ _tag_type_to_explicit_implicit(kwargs) Asn1Value.__init__(self, **kwargs) try: if kwargs.get('implicit') is not None: raise ValueError(unwrap( ''' The Choice type can not be implicitly tagged even if in an implicit module - due to its nature any tagging must be explicit ''' )) if name is not None: if isinstance(name, dict): if len(name) != 1: raise ValueError(unwrap( ''' When passing a dict as the "name" argument to %s, it must have a single key/value - however %d were present ''', type_name(self), len(name) )) name, value = list(name.items())[0] if isinstance(name, tuple): if len(name) != 2: raise ValueError(unwrap( ''' When passing a tuple as the "name" argument to %s, it must have two elements, the name and value - however %d were present ''', type_name(self), len(name) )) value = name[1] name = name[0] if name not in self._name_map: raise ValueError(unwrap( ''' The name specified, "%s", is not a valid alternative for %s ''', name, type_name(self) )) self._choice = self._name_map[name] _, spec, params = self._alternatives[self._choice] if not isinstance(value, spec): value = spec(value, **params) else: value = _fix_tagging(value, params) self._parsed = value except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while constructing %s' % type_name(self),) + args raise e @property def contents(self): """ :return: A byte string of the DER-encoded contents of the chosen alternative """ if self._parsed is not None: return self._parsed.contents return self._contents @contents.setter def contents(self, value): """ :param value: A byte string of the DER-encoded contents of the chosen alternative """ self._contents = value @property def name(self): """ :return: A unicode string of the field name of the chosen alternative """ if not self._name: self._name = self._alternatives[self._choice][0] return self._name def parse(self): """ Parses the detected alternative :return: An Asn1Value object of the chosen alternative """ if self._parsed is None: try: _, spec, params = self._alternatives[self._choice] self._parsed, _ = _parse_build(self._contents, spec=spec, spec_params=params) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e return self._parsed @property def chosen(self): """ :return: An Asn1Value object of the chosen alternative """ return self.parse() @property def native(self): """ The native Python datatype representation of this value :return: The .native value from the contained value object """ return self.chosen.native def validate(self, class_, tag, contents): """ Ensures that the class and tag specified exist as an alternative :param class_: The integer class_ from the encoded value header :param tag: The integer tag from the encoded value header :param contents: A byte string of the contents of the value - used when the object is explicitly tagged :raises: ValueError - when value is not a valid alternative """ id_ = (class_, tag) if self.explicit is not None: if self.explicit[-1] != id_: raise ValueError(unwrap( ''' %s was explicitly tagged, but the value provided does not match the class and tag ''', type_name(self) )) ((class_, _, tag, _, _, _), _) = _parse(contents, len(contents)) id_ = (class_, tag) if id_ in self._id_map: self._choice = self._id_map[id_] return # This means the Choice was implicitly tagged if self.class_ is not None and self.tag is not None: if len(self._alternatives) > 1: raise ValueError(unwrap( ''' %s was implicitly tagged, but more than one alternative exists ''', type_name(self) )) if id_ == (self.class_, self.tag): self._choice = 0 return asn1 = self._format_class_tag(class_, tag) asn1s = [self._format_class_tag(pair[0], pair[1]) for pair in self._id_map] raise ValueError(unwrap( ''' Value %s did not match the class and tag of any of the alternatives in %s: %s ''', asn1, type_name(self), ', '.join(asn1s) )) def _format_class_tag(self, class_, tag): """ :return: A unicode string of a human-friendly representation of the class and tag """ return '[%s %s]' % (CLASS_NUM_TO_NAME_MAP[class_].upper(), tag) def _copy(self, other, copy_func): """ Copies the contents of another Choice object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(Choice, self)._copy(other, copy_func) self._choice = other._choice self._name = other._name self._parsed = copy_func(other._parsed) def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ # If the length is indefinite, force the re-encoding if self._header is not None and self._header[-1:] == b'\x80': force = True self._contents = self.chosen.dump(force=force) if self._header is None or force: self._header = b'' if self.explicit is not None: for class_, tag in self.explicit: self._header = _dump_header(class_, 1, tag, self._header + self._contents) + self._header return self._header + self._contents class Concat(object): """ A class that contains two or more encoded child values concatentated together. THIS IS NOT PART OF THE ASN.1 SPECIFICATION! This exists to handle the x509.TrustedCertificate() class for OpenSSL certificates containing extra information. """ # A list of the specs of the concatenated values _child_specs = None _children = None @classmethod def load(cls, encoded_data, strict=False): """ Loads a BER/DER-encoded byte string using the current class as the spec :param encoded_data: A byte string of BER or DER encoded data :param strict: A boolean indicating if trailing data should be forbidden - if so, a ValueError will be raised when trailing data exists :return: A Concat object """ return cls(contents=encoded_data, strict=strict) def __init__(self, value=None, contents=None, strict=False): """ :param value: A native Python datatype to initialize the object value with :param contents: A byte string of the encoded contents of the value :param strict: A boolean indicating if trailing data should be forbidden - if so, a ValueError will be raised when trailing data exists in contents :raises: ValueError - when an error occurs with one of the children TypeError - when an error occurs with one of the children """ if contents is not None: try: contents_len = len(contents) self._children = [] offset = 0 for spec in self._child_specs: if offset < contents_len: child_value, offset = _parse_build(contents, pointer=offset, spec=spec) else: child_value = spec() self._children.append(child_value) if strict and offset != contents_len: extra_bytes = contents_len - offset raise ValueError('Extra data - %d bytes of trailing data were provided' % extra_bytes) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while constructing %s' % type_name(self),) + args raise e if value is not None: if self._children is None: self._children = [None] * len(self._child_specs) for index, data in enumerate(value): self.__setitem__(index, data) def __str__(self): """ Since str is different in Python 2 and 3, this calls the appropriate method, __unicode__() or __bytes__() :return: A unicode string """ if _PY2: return self.__bytes__() else: return self.__unicode__() def __bytes__(self): """ A byte string of the DER-encoded contents """ return self.dump() def __unicode__(self): """ :return: A unicode string """ return repr(self) def __repr__(self): """ :return: A unicode string """ return '<%s %s %s>' % (type_name(self), id(self), repr(self.dump())) def __copy__(self): """ Implements the copy.copy() interface :return: A new shallow copy of the Concat object """ new_obj = self.__class__() new_obj._copy(self, copy.copy) return new_obj def __deepcopy__(self, memo): """ Implements the copy.deepcopy() interface :param memo: A dict for memoization :return: A new deep copy of the Concat object and all child objects """ new_obj = self.__class__() memo[id(self)] = new_obj new_obj._copy(self, copy.deepcopy) return new_obj def copy(self): """ Copies the object :return: A Concat object """ return copy.deepcopy(self) def _copy(self, other, copy_func): """ Copies the contents of another Concat object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ if self.__class__ != other.__class__: raise TypeError(unwrap( ''' Can not copy values from %s object to %s object ''', type_name(other), type_name(self) )) self._children = copy_func(other._children) def debug(self, nest_level=1): """ Show the binary data and parsed data in a tree structure """ prefix = ' ' * nest_level print('%s%s Object #%s' % (prefix, type_name(self), id(self))) print('%s Children:' % (prefix,)) for child in self._children: child.debug(nest_level + 2) def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ contents = b'' for child in self._children: contents += child.dump(force=force) return contents @property def contents(self): """ :return: A byte string of the DER-encoded contents of the children """ return self.dump() def __len__(self): """ :return: Integer """ return len(self._children) def __getitem__(self, key): """ Allows accessing children by index :param key: An integer of the child index :raises: KeyError - when an index is invalid :return: The Asn1Value object of the child specified """ if key > len(self._child_specs) - 1 or key < 0: raise KeyError(unwrap( ''' No child is definition for position %d of %s ''', key, type_name(self) )) return self._children[key] def __setitem__(self, key, value): """ Allows settings children by index :param key: An integer of the child index :param value: An Asn1Value object to set the child to :raises: KeyError - when an index is invalid ValueError - when the value is not an instance of Asn1Value """ if key > len(self._child_specs) - 1 or key < 0: raise KeyError(unwrap( ''' No child is defined for position %d of %s ''', key, type_name(self) )) if not isinstance(value, Asn1Value): raise ValueError(unwrap( ''' Value for child %s of %s is not an instance of asn1crypto.core.Asn1Value ''', key, type_name(self) )) self._children[key] = value def __iter__(self): """ :return: An iterator of child values """ return iter(self._children) class Primitive(Asn1Value): """ Sets the class_ and method attributes for primitive, universal values """ class_ = 0 method = 0 def __init__(self, value=None, default=None, contents=None, **kwargs): """ Sets the value of the object before passing to Asn1Value.__init__() :param value: A native Python datatype to initialize the object value with :param default: The default value if no value is specified :param contents: A byte string of the encoded contents of the value """ Asn1Value.__init__(self, **kwargs) try: if contents is not None: self.contents = contents elif value is not None: self.set(value) elif default is not None: self.set(default) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while constructing %s' % type_name(self),) + args raise e def set(self, value): """ Sets the value of the object :param value: A byte string """ if not isinstance(value, byte_cls): raise TypeError(unwrap( ''' %s value must be a byte string, not %s ''', type_name(self), type_name(value) )) self._native = value self.contents = value self._header = None if self._trailer != b'': self._trailer = b'' def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ # If the length is indefinite, force the re-encoding if self._header is not None and self._header[-1:] == b'\x80': force = True if force: native = self.native self.contents = None self.set(native) return Asn1Value.dump(self) def __ne__(self, other): return not self == other def __eq__(self, other): """ :param other: The other Primitive to compare to :return: A boolean """ if not isinstance(other, Primitive): return False if self.contents != other.contents: return False # We compare class tag numbers since object tag numbers could be # different due to implicit or explicit tagging if self.__class__.tag != other.__class__.tag: return False if self.__class__ == other.__class__ and self.contents == other.contents: return True # If the objects share a common base class that is not too low-level # then we can compare the contents self_bases = (set(self.__class__.__bases__) | set([self.__class__])) - set([Asn1Value, Primitive, ValueMap]) other_bases = (set(other.__class__.__bases__) | set([other.__class__])) - set([Asn1Value, Primitive, ValueMap]) if self_bases | other_bases: return self.contents == other.contents # When tagging is going on, do the extra work of constructing new # objects to see if the dumped representation are the same if self.implicit or self.explicit or other.implicit or other.explicit: return self.untag().dump() == other.untag().dump() return self.dump() == other.dump() class AbstractString(Constructable, Primitive): """ A base class for all strings that have a known encoding. In general, we do not worry ourselves with confirming that the decoded values match a specific set of characters, only that they are decoded into a Python unicode string """ # The Python encoding name to use when decoding or encoded the contents _encoding = 'latin1' # Instance attribute of (possibly-merged) unicode string _unicode = None def set(self, value): """ Sets the value of the string :param value: A unicode string """ if not isinstance(value, str_cls): raise TypeError(unwrap( ''' %s value must be a unicode string, not %s ''', type_name(self), type_name(value) )) self._unicode = value self.contents = value.encode(self._encoding) self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' def __unicode__(self): """ :return: A unicode string """ if self.contents is None: return '' if self._unicode is None: self._unicode = self._merge_chunks().decode(self._encoding) return self._unicode def _copy(self, other, copy_func): """ Copies the contents of another AbstractString object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(AbstractString, self)._copy(other, copy_func) self._unicode = other._unicode @property def native(self): """ The native Python datatype representation of this value :return: A unicode string or None """ if self.contents is None: return None return self.__unicode__() class Boolean(Primitive): """ Represents a boolean in both ASN.1 and Python """ tag = 1 def set(self, value): """ Sets the value of the object :param value: True, False or another value that works with bool() """ self._native = bool(value) self.contents = b'\x00' if not value else b'\xff' self._header = None if self._trailer != b'': self._trailer = b'' # Python 2 def __nonzero__(self): """ :return: True or False """ return self.__bool__() def __bool__(self): """ :return: True or False """ return self.contents != b'\x00' @property def native(self): """ The native Python datatype representation of this value :return: True, False or None """ if self.contents is None: return None if self._native is None: self._native = self.__bool__() return self._native class Integer(Primitive, ValueMap): """ Represents an integer in both ASN.1 and Python """ tag = 2 def set(self, value): """ Sets the value of the object :param value: An integer, or a unicode string if _map is set :raises: ValueError - when an invalid value is passed """ if isinstance(value, str_cls): if self._map is None: raise ValueError(unwrap( ''' %s value is a unicode string, but no _map provided ''', type_name(self) )) if value not in self._reverse_map: raise ValueError(unwrap( ''' %s value, %s, is not present in the _map ''', type_name(self), value )) value = self._reverse_map[value] elif not isinstance(value, int_types): raise TypeError(unwrap( ''' %s value must be an integer or unicode string when a name_map is provided, not %s ''', type_name(self), type_name(value) )) self._native = self._map[value] if self._map and value in self._map else value self.contents = int_to_bytes(value, signed=True) self._header = None if self._trailer != b'': self._trailer = b'' def __int__(self): """ :return: An integer """ return int_from_bytes(self.contents, signed=True) @property def native(self): """ The native Python datatype representation of this value :return: An integer or None """ if self.contents is None: return None if self._native is None: self._native = self.__int__() if self._map is not None and self._native in self._map: self._native = self._map[self._native] return self._native class _IntegerBitString(object): """ A mixin for IntegerBitString and BitString to parse the contents as an integer. """ # Tuple of 1s and 0s; set through native _unused_bits = () def _as_chunk(self): """ Parse the contents of a primitive BitString encoding as an integer value. Allows reconstructing indefinite length values. :raises: ValueError - when an invalid value is passed :return: A list with one tuple (value, bits, unused_bits) where value is an integer with the value of the BitString, bits is the bit count of value and unused_bits is a tuple of 1s and 0s. """ if self._indefinite: # return an empty chunk, for cases like \x23\x80\x00\x00 return [] unused_bits_len = ord(self.contents[0]) if _PY2 else self.contents[0] value = int_from_bytes(self.contents[1:]) bits = (len(self.contents) - 1) * 8 if not unused_bits_len: return [(value, bits, ())] if len(self.contents) == 1: # Disallowed by X.690 §8.6.2.3 raise ValueError('Empty bit string has {0} unused bits'.format(unused_bits_len)) if unused_bits_len > 7: # Disallowed by X.690 §8.6.2.2 raise ValueError('Bit string has {0} unused bits'.format(unused_bits_len)) unused_bits = _int_to_bit_tuple(value & ((1 << unused_bits_len) - 1), unused_bits_len) value >>= unused_bits_len bits -= unused_bits_len return [(value, bits, unused_bits)] def _chunks_to_int(self): """ Combines the chunks into a single value. :raises: ValueError - when an invalid value is passed :return: A tuple (value, bits, unused_bits) where value is an integer with the value of the BitString, bits is the bit count of value and unused_bits is a tuple of 1s and 0s. """ if not self._indefinite: # Fast path return self._as_chunk()[0] value = 0 total_bits = 0 unused_bits = () # X.690 §8.6.3 allows empty indefinite encodings for chunk, bits, unused_bits in self._merge_chunks(): if total_bits & 7: # Disallowed by X.690 §8.6.4 raise ValueError('Only last chunk in a bit string may have unused bits') total_bits += bits value = (value << bits) | chunk return value, total_bits, unused_bits def _copy(self, other, copy_func): """ Copies the contents of another _IntegerBitString object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(_IntegerBitString, self)._copy(other, copy_func) self._unused_bits = other._unused_bits @property def unused_bits(self): """ The unused bits of the bit string encoding. :return: A tuple of 1s and 0s """ # call native to set _unused_bits self.native return self._unused_bits class BitString(_IntegerBitString, Constructable, Castable, Primitive, ValueMap): """ Represents a bit string from ASN.1 as a Python tuple of 1s and 0s """ tag = 3 _size = None def _setup(self): """ Generates _reverse_map from _map """ ValueMap._setup(self) cls = self.__class__ if cls._map is not None: cls._size = max(self._map.keys()) + 1 def set(self, value): """ Sets the value of the object :param value: An integer or a tuple of integers 0 and 1 :raises: ValueError - when an invalid value is passed """ if isinstance(value, set): if self._map is None: raise ValueError(unwrap( ''' %s._map has not been defined ''', type_name(self) )) bits = [0] * self._size self._native = value for index in range(0, self._size): key = self._map.get(index) if key is None: continue if key in value: bits[index] = 1 value = ''.join(map(str_cls, bits)) elif value.__class__ == tuple: if self._map is None: self._native = value else: self._native = set() for index, bit in enumerate(value): if bit: name = self._map.get(index, index) self._native.add(name) value = ''.join(map(str_cls, value)) else: raise TypeError(unwrap( ''' %s value must be a tuple of ones and zeros or a set of unicode strings, not %s ''', type_name(self), type_name(value) )) if self._map is not None: if len(value) > self._size: raise ValueError(unwrap( ''' %s value must be at most %s bits long, specified was %s long ''', type_name(self), self._size, len(value) )) # A NamedBitList must have trailing zero bit truncated. See # https://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf # section 11.2, # https://tools.ietf.org/html/rfc5280#page-134 and # https://www.ietf.org/mail-archive/web/pkix/current/msg10443.html value = value.rstrip('0') size = len(value) size_mod = size % 8 extra_bits = 0 if size_mod != 0: extra_bits = 8 - size_mod value += '0' * extra_bits size_in_bytes = int(math.ceil(size / 8)) if extra_bits: extra_bits_byte = int_to_bytes(extra_bits) else: extra_bits_byte = b'\x00' if value == '': value_bytes = b'' else: value_bytes = int_to_bytes(int(value, 2)) if len(value_bytes) != size_in_bytes: value_bytes = (b'\x00' * (size_in_bytes - len(value_bytes))) + value_bytes self.contents = extra_bits_byte + value_bytes self._unused_bits = (0,) * extra_bits self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' def __getitem__(self, key): """ Retrieves a boolean version of one of the bits based on a name from the _map :param key: The unicode string of one of the bit names :raises: ValueError - when _map is not set or the key name is invalid :return: A boolean if the bit is set """ is_int = isinstance(key, int_types) if not is_int: if not isinstance(self._map, dict): raise ValueError(unwrap( ''' %s._map has not been defined ''', type_name(self) )) if key not in self._reverse_map: raise ValueError(unwrap( ''' %s._map does not contain an entry for "%s" ''', type_name(self), key )) if self._native is None: self.native if self._map is None: if len(self._native) >= key + 1: return bool(self._native[key]) return False if is_int: key = self._map.get(key, key) return key in self._native def __setitem__(self, key, value): """ Sets one of the bits based on a name from the _map :param key: The unicode string of one of the bit names :param value: A boolean value :raises: ValueError - when _map is not set or the key name is invalid """ is_int = isinstance(key, int_types) if not is_int: if self._map is None: raise ValueError(unwrap( ''' %s._map has not been defined ''', type_name(self) )) if key not in self._reverse_map: raise ValueError(unwrap( ''' %s._map does not contain an entry for "%s" ''', type_name(self), key )) if self._native is None: self.native if self._map is None: new_native = list(self._native) max_key = len(new_native) - 1 if key > max_key: new_native.extend([0] * (key - max_key)) new_native[key] = 1 if value else 0 self._native = tuple(new_native) else: if is_int: key = self._map.get(key, key) if value: if key not in self._native: self._native.add(key) else: if key in self._native: self._native.remove(key) self.set(self._native) @property def native(self): """ The native Python datatype representation of this value :return: If a _map is set, a set of names, or if no _map is set, a tuple of integers 1 and 0. None if no value. """ # For BitString we default the value to be all zeros if self.contents is None: if self._map is None: self.set(()) else: self.set(set()) if self._native is None: int_value, bit_count, self._unused_bits = self._chunks_to_int() bits = _int_to_bit_tuple(int_value, bit_count) if self._map: self._native = set() for index, bit in enumerate(bits): if bit: name = self._map.get(index, index) self._native.add(name) else: self._native = bits return self._native class OctetBitString(Constructable, Castable, Primitive): """ Represents a bit string in ASN.1 as a Python byte string """ tag = 3 # Instance attribute of (possibly-merged) byte string _bytes = None # Tuple of 1s and 0s; set through native _unused_bits = () def set(self, value): """ Sets the value of the object :param value: A byte string :raises: ValueError - when an invalid value is passed """ if not isinstance(value, byte_cls): raise TypeError(unwrap( ''' %s value must be a byte string, not %s ''', type_name(self), type_name(value) )) self._bytes = value # Set the unused bits to 0 self.contents = b'\x00' + value self._unused_bits = () self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' def __bytes__(self): """ :return: A byte string """ if self.contents is None: return b'' if self._bytes is None: if not self._indefinite: self._bytes, self._unused_bits = self._as_chunk()[0] else: chunks = self._merge_chunks() self._unused_bits = () for chunk in chunks: if self._unused_bits: # Disallowed by X.690 §8.6.4 raise ValueError('Only last chunk in a bit string may have unused bits') self._unused_bits = chunk[1] self._bytes = b''.join(chunk[0] for chunk in chunks) return self._bytes def _copy(self, other, copy_func): """ Copies the contents of another OctetBitString object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(OctetBitString, self)._copy(other, copy_func) self._bytes = other._bytes self._unused_bits = other._unused_bits def _as_chunk(self): """ Allows reconstructing indefinite length values :raises: ValueError - when an invalid value is passed :return: List with one tuple, consisting of a byte string and an integer (unused bits) """ unused_bits_len = ord(self.contents[0]) if _PY2 else self.contents[0] if not unused_bits_len: return [(self.contents[1:], ())] if len(self.contents) == 1: # Disallowed by X.690 §8.6.2.3 raise ValueError('Empty bit string has {0} unused bits'.format(unused_bits_len)) if unused_bits_len > 7: # Disallowed by X.690 §8.6.2.2 raise ValueError('Bit string has {0} unused bits'.format(unused_bits_len)) mask = (1 << unused_bits_len) - 1 last_byte = ord(self.contents[-1]) if _PY2 else self.contents[-1] # zero out the unused bits in the last byte. zeroed_byte = last_byte & ~mask value = self.contents[1:-1] + (chr(zeroed_byte) if _PY2 else bytes((zeroed_byte,))) unused_bits = _int_to_bit_tuple(last_byte & mask, unused_bits_len) return [(value, unused_bits)] @property def native(self): """ The native Python datatype representation of this value :return: A byte string or None """ if self.contents is None: return None return self.__bytes__() @property def unused_bits(self): """ The unused bits of the bit string encoding. :return: A tuple of 1s and 0s """ # call native to set _unused_bits self.native return self._unused_bits class IntegerBitString(_IntegerBitString, Constructable, Castable, Primitive): """ Represents a bit string in ASN.1 as a Python integer """ tag = 3 def set(self, value): """ Sets the value of the object :param value: An integer :raises: ValueError - when an invalid value is passed """ if not isinstance(value, int_types): raise TypeError(unwrap( ''' %s value must be a positive integer, not %s ''', type_name(self), type_name(value) )) if value < 0: raise ValueError(unwrap( ''' %s value must be a positive integer, not %d ''', type_name(self), value )) self._native = value # Set the unused bits to 0 self.contents = b'\x00' + int_to_bytes(value, signed=True) self._unused_bits = () self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' @property def native(self): """ The native Python datatype representation of this value :return: An integer or None """ if self.contents is None: return None if self._native is None: self._native, __, self._unused_bits = self._chunks_to_int() return self._native class OctetString(Constructable, Castable, Primitive): """ Represents a byte string in both ASN.1 and Python """ tag = 4 # Instance attribute of (possibly-merged) byte string _bytes = None def set(self, value): """ Sets the value of the object :param value: A byte string """ if not isinstance(value, byte_cls): raise TypeError(unwrap( ''' %s value must be a byte string, not %s ''', type_name(self), type_name(value) )) self._bytes = value self.contents = value self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' def __bytes__(self): """ :return: A byte string """ if self.contents is None: return b'' if self._bytes is None: self._bytes = self._merge_chunks() return self._bytes def _copy(self, other, copy_func): """ Copies the contents of another OctetString object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(OctetString, self)._copy(other, copy_func) self._bytes = other._bytes @property def native(self): """ The native Python datatype representation of this value :return: A byte string or None """ if self.contents is None: return None return self.__bytes__() class IntegerOctetString(Constructable, Castable, Primitive): """ Represents a byte string in ASN.1 as a Python integer """ tag = 4 # An explicit length in bytes the integer should be encoded to. This should # generally not be used since DER defines a canonical encoding, however some # use of this, such as when storing elliptic curve private keys, requires an # exact number of bytes, even if the leading bytes are null. _encoded_width = None def set(self, value): """ Sets the value of the object :param value: An integer :raises: ValueError - when an invalid value is passed """ if not isinstance(value, int_types): raise TypeError(unwrap( ''' %s value must be a positive integer, not %s ''', type_name(self), type_name(value) )) if value < 0: raise ValueError(unwrap( ''' %s value must be a positive integer, not %d ''', type_name(self), value )) self._native = value self.contents = int_to_bytes(value, signed=False, width=self._encoded_width) self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' @property def native(self): """ The native Python datatype representation of this value :return: An integer or None """ if self.contents is None: return None if self._native is None: self._native = int_from_bytes(self._merge_chunks()) return self._native def set_encoded_width(self, width): """ Set the explicit enoding width for the integer :param width: An integer byte width to encode the integer to """ self._encoded_width = width # Make sure the encoded value is up-to-date with the proper width if self.contents is not None and len(self.contents) != width: self.set(self.native) class ParsableOctetString(Constructable, Castable, Primitive): tag = 4 _parsed = None # Instance attribute of (possibly-merged) byte string _bytes = None def __init__(self, value=None, parsed=None, **kwargs): """ Allows providing a parsed object that will be serialized to get the byte string value :param value: A native Python datatype to initialize the object value with :param parsed: If value is None and this is an Asn1Value object, this will be set as the parsed value, and the value will be obtained by calling .dump() on this object. """ set_parsed = False if value is None and parsed is not None and isinstance(parsed, Asn1Value): value = parsed.dump() set_parsed = True Primitive.__init__(self, value=value, **kwargs) if set_parsed: self._parsed = (parsed, parsed.__class__, None) def set(self, value): """ Sets the value of the object :param value: A byte string """ if not isinstance(value, byte_cls): raise TypeError(unwrap( ''' %s value must be a byte string, not %s ''', type_name(self), type_name(value) )) self._bytes = value self.contents = value self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' def parse(self, spec=None, spec_params=None): """ Parses the contents generically, or using a spec with optional params :param spec: A class derived from Asn1Value that defines what class_ and tag the value should have, and the semantics of the encoded value. The return value will be of this type. If omitted, the encoded value will be decoded using the standard universal tag based on the encoded tag number. :param spec_params: A dict of params to pass to the spec object :return: An object of the type spec, or if not present, a child of Asn1Value """ if self._parsed is None or self._parsed[1:3] != (spec, spec_params): parsed_value, _ = _parse_build(self.__bytes__(), spec=spec, spec_params=spec_params) self._parsed = (parsed_value, spec, spec_params) return self._parsed[0] def __bytes__(self): """ :return: A byte string """ if self.contents is None: return b'' if self._bytes is None: self._bytes = self._merge_chunks() return self._bytes def _setable_native(self): """ Returns a byte string that can be passed into .set() :return: A python value that is valid to pass to .set() """ return self.__bytes__() def _copy(self, other, copy_func): """ Copies the contents of another ParsableOctetString object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(ParsableOctetString, self)._copy(other, copy_func) self._bytes = other._bytes self._parsed = copy_func(other._parsed) @property def native(self): """ The native Python datatype representation of this value :return: A byte string or None """ if self.contents is None: return None if self._parsed is not None: return self._parsed[0].native else: return self.__bytes__() @property def parsed(self): """ Returns the parsed object from .parse() :return: The object returned by .parse() """ if self._parsed is None: self.parse() return self._parsed[0] def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ # If the length is indefinite, force the re-encoding if self._indefinite: force = True if force: if self._parsed is not None: native = self.parsed.dump(force=force) else: native = self.native self.contents = None self.set(native) return Asn1Value.dump(self) class ParsableOctetBitString(ParsableOctetString): tag = 3 def set(self, value): """ Sets the value of the object :param value: A byte string :raises: ValueError - when an invalid value is passed """ if not isinstance(value, byte_cls): raise TypeError(unwrap( ''' %s value must be a byte string, not %s ''', type_name(self), type_name(value) )) self._bytes = value # Set the unused bits to 0 self.contents = b'\x00' + value self._header = None if self._indefinite: self._indefinite = False self.method = 0 if self._trailer != b'': self._trailer = b'' def _as_chunk(self): """ Allows reconstructing indefinite length values :raises: ValueError - when an invalid value is passed :return: A byte string """ unused_bits_len = ord(self.contents[0]) if _PY2 else self.contents[0] if unused_bits_len: raise ValueError('ParsableOctetBitString should have no unused bits') return self.contents[1:] class Null(Primitive): """ Represents a null value in ASN.1 as None in Python """ tag = 5 contents = b'' def set(self, value): """ Sets the value of the object :param value: None """ self.contents = b'' @property def native(self): """ The native Python datatype representation of this value :return: None """ return None class ObjectIdentifier(Primitive, ValueMap): """ Represents an object identifier in ASN.1 as a Python unicode dotted integer string """ tag = 6 # A unicode string of the dotted form of the object identifier _dotted = None @classmethod def map(cls, value): """ Converts a dotted unicode string OID into a mapped unicode string :param value: A dotted unicode string OID :raises: ValueError - when no _map dict has been defined on the class TypeError - when value is not a unicode string :return: A mapped unicode string """ if cls._map is None: raise ValueError(unwrap( ''' %s._map has not been defined ''', type_name(cls) )) if not isinstance(value, str_cls): raise TypeError(unwrap( ''' value must be a unicode string, not %s ''', type_name(value) )) return cls._map.get(value, value) @classmethod def unmap(cls, value): """ Converts a mapped unicode string value into a dotted unicode string OID :param value: A mapped unicode string OR dotted unicode string OID :raises: ValueError - when no _map dict has been defined on the class or the value can't be unmapped TypeError - when value is not a unicode string :return: A dotted unicode string OID """ if cls not in _SETUP_CLASSES: cls()._setup() _SETUP_CLASSES[cls] = True if cls._map is None: raise ValueError(unwrap( ''' %s._map has not been defined ''', type_name(cls) )) if not isinstance(value, str_cls): raise TypeError(unwrap( ''' value must be a unicode string, not %s ''', type_name(value) )) if value in cls._reverse_map: return cls._reverse_map[value] if not _OID_RE.match(value): raise ValueError(unwrap( ''' %s._map does not contain an entry for "%s" ''', type_name(cls), value )) return value def set(self, value): """ Sets the value of the object :param value: A unicode string. May be a dotted integer string, or if _map is provided, one of the mapped values. :raises: ValueError - when an invalid value is passed """ if not isinstance(value, str_cls): raise TypeError(unwrap( ''' %s value must be a unicode string, not %s ''', type_name(self), type_name(value) )) self._native = value if self._map is not None: if value in self._reverse_map: value = self._reverse_map[value] self.contents = b'' first = None for index, part in enumerate(value.split('.')): part = int(part) # The first two parts are merged into a single byte if index == 0: first = part continue elif index == 1: if first > 2: raise ValueError(unwrap( ''' First arc must be one of 0, 1 or 2, not %s ''', repr(first) )) elif first < 2 and part >= 40: raise ValueError(unwrap( ''' Second arc must be less than 40 if first arc is 0 or 1, not %s ''', repr(part) )) part = (first * 40) + part encoded_part = chr_cls(0x7F & part) part = part >> 7 while part > 0: encoded_part = chr_cls(0x80 | (0x7F & part)) + encoded_part part = part >> 7 self.contents += encoded_part self._header = None if self._trailer != b'': self._trailer = b'' def __unicode__(self): """ :return: A unicode string """ return self.dotted @property def dotted(self): """ :return: A unicode string of the object identifier in dotted notation, thus ignoring any mapped value """ if self._dotted is None: output = [] part = 0 for byte in self.contents: if _PY2: byte = ord(byte) part = part * 128 part += byte & 127 # Last byte in subidentifier has the eighth bit set to 0 if byte & 0x80 == 0: if len(output) == 0: if part >= 80: output.append(str_cls(2)) output.append(str_cls(part - 80)) elif part >= 40: output.append(str_cls(1)) output.append(str_cls(part - 40)) else: output.append(str_cls(0)) output.append(str_cls(part)) else: output.append(str_cls(part)) part = 0 self._dotted = '.'.join(output) return self._dotted @property def native(self): """ The native Python datatype representation of this value :return: A unicode string or None. If _map is not defined, the unicode string is a string of dotted integers. If _map is defined and the dotted string is present in the _map, the mapped value is returned. """ if self.contents is None: return None if self._native is None: self._native = self.dotted if self._map is not None and self._native in self._map: self._native = self._map[self._native] return self._native class ObjectDescriptor(Primitive): """ Represents an object descriptor from ASN.1 - no Python implementation """ tag = 7 class InstanceOf(Primitive): """ Represents an instance from ASN.1 - no Python implementation """ tag = 8 class Real(Primitive): """ Represents a real number from ASN.1 - no Python implementation """ tag = 9 class Enumerated(Integer): """ Represents a enumerated list of integers from ASN.1 as a Python unicode string """ tag = 10 def set(self, value): """ Sets the value of the object :param value: An integer or a unicode string from _map :raises: ValueError - when an invalid value is passed """ if not isinstance(value, int_types) and not isinstance(value, str_cls): raise TypeError(unwrap( ''' %s value must be an integer or a unicode string, not %s ''', type_name(self), type_name(value) )) if isinstance(value, str_cls): if value not in self._reverse_map: raise ValueError(unwrap( ''' %s value "%s" is not a valid value ''', type_name(self), value )) value = self._reverse_map[value] elif value not in self._map: raise ValueError(unwrap( ''' %s value %s is not a valid value ''', type_name(self), value )) Integer.set(self, value) @property def native(self): """ The native Python datatype representation of this value :return: A unicode string or None """ if self.contents is None: return None if self._native is None: self._native = self._map[self.__int__()] return self._native class UTF8String(AbstractString): """ Represents a UTF-8 string from ASN.1 as a Python unicode string """ tag = 12 _encoding = 'utf-8' class RelativeOid(ObjectIdentifier): """ Represents an object identifier in ASN.1 as a Python unicode dotted integer string """ tag = 13 class Sequence(Asn1Value): """ Represents a sequence of fields from ASN.1 as a Python object with a dict-like interface """ tag = 16 class_ = 0 method = 1 # A list of child objects, in order of _fields children = None # Sequence overrides .contents to be a property so that the mutated state # of child objects can be checked to ensure everything is up-to-date _contents = None # Variable to track if the object has been mutated _mutated = False # A list of tuples in one of the following forms. # # Option 1, a unicode string field name and a value class # # ("name", Asn1ValueClass) # # Option 2, same as Option 1, but with a dict of class params # # ("name", Asn1ValueClass, {'explicit': 5}) _fields = [] # A dict with keys being the name of a field and the value being a unicode # string of the method name on self to call to get the spec for that field _spec_callbacks = None # A dict that maps unicode string field names to an index in _fields _field_map = None # A list in the same order as _fields that has tuples in the form (class_, tag) _field_ids = None # An optional 2-element tuple that defines the field names of an OID field # and the field that the OID should be used to help decode. Works with the # _oid_specs attribute. _oid_pair = None # A dict with keys that are unicode string OID values and values that are # Asn1Value classes to use for decoding a variable-type field. _oid_specs = None # A 2-element tuple of the indexes in _fields of the OID and value fields _oid_nums = None # Predetermined field specs to optimize away calls to _determine_spec() _precomputed_specs = None def __init__(self, value=None, default=None, **kwargs): """ Allows setting field values before passing everything else along to Asn1Value.__init__() :param value: A native Python datatype to initialize the object value with :param default: The default value if no value is specified """ Asn1Value.__init__(self, **kwargs) check_existing = False if value is None and default is not None: check_existing = True if self.children is None: if self.contents is None: check_existing = False else: self._parse_children() value = default if value is not None: try: # Fields are iterated in definition order to allow things like # OID-based specs. Otherwise sometimes the value would be processed # before the OID field, resulting in invalid value object creation. if self._fields: keys = [info[0] for info in self._fields] unused_keys = set(value.keys()) else: keys = value.keys() unused_keys = set(keys) for key in keys: # If we are setting defaults, but a real value has already # been set for the field, then skip it if check_existing: index = self._field_map[key] if index < len(self.children) and self.children[index] is not VOID: if key in unused_keys: unused_keys.remove(key) continue if key in value: self.__setitem__(key, value[key]) unused_keys.remove(key) if len(unused_keys): raise ValueError(unwrap( ''' One or more unknown fields was passed to the constructor of %s: %s ''', type_name(self), ', '.join(sorted(list(unused_keys))) )) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while constructing %s' % type_name(self),) + args raise e @property def contents(self): """ :return: A byte string of the DER-encoded contents of the sequence """ if self.children is None: return self._contents if self._is_mutated(): self._set_contents() return self._contents @contents.setter def contents(self, value): """ :param value: A byte string of the DER-encoded contents of the sequence """ self._contents = value def _is_mutated(self): """ :return: A boolean - if the sequence or any children (recursively) have been mutated """ mutated = self._mutated if self.children is not None: for child in self.children: if isinstance(child, Sequence) or isinstance(child, SequenceOf): mutated = mutated or child._is_mutated() return mutated def _lazy_child(self, index): """ Builds a child object if the child has only been parsed into a tuple so far """ child = self.children[index] if child.__class__ == tuple: child = self.children[index] = _build(*child) return child def __len__(self): """ :return: Integer """ # We inline this check to prevent method invocation each time if self.children is None: self._parse_children() return len(self.children) def __getitem__(self, key): """ Allows accessing fields by name or index :param key: A unicode string of the field name, or an integer of the field index :raises: KeyError - when a field name or index is invalid :return: The Asn1Value object of the field specified """ # We inline this check to prevent method invocation each time if self.children is None: self._parse_children() if not isinstance(key, int_types): if key not in self._field_map: raise KeyError(unwrap( ''' No field named "%s" defined for %s ''', key, type_name(self) )) key = self._field_map[key] if key >= len(self.children): raise KeyError(unwrap( ''' No field numbered %s is present in this %s ''', key, type_name(self) )) try: return self._lazy_child(key) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e def __setitem__(self, key, value): """ Allows settings fields by name or index :param key: A unicode string of the field name, or an integer of the field index :param value: A native Python datatype to set the field value to. This method will construct the appropriate Asn1Value object from _fields. :raises: ValueError - when a field name or index is invalid """ # We inline this check to prevent method invocation each time if self.children is None: self._parse_children() if not isinstance(key, int_types): if key not in self._field_map: raise KeyError(unwrap( ''' No field named "%s" defined for %s ''', key, type_name(self) )) key = self._field_map[key] field_name, field_spec, value_spec, field_params, _ = self._determine_spec(key) new_value = self._make_value(field_name, field_spec, value_spec, field_params, value) invalid_value = False if isinstance(new_value, Any): invalid_value = new_value.parsed is None else: invalid_value = new_value.contents is None if invalid_value: raise ValueError(unwrap( ''' Value for field "%s" of %s is not set ''', field_name, type_name(self) )) self.children[key] = new_value if self._native is not None: self._native[self._fields[key][0]] = self.children[key].native self._mutated = True def __delitem__(self, key): """ Allows deleting optional or default fields by name or index :param key: A unicode string of the field name, or an integer of the field index :raises: ValueError - when a field name or index is invalid, or the field is not optional or defaulted """ # We inline this check to prevent method invocation each time if self.children is None: self._parse_children() if not isinstance(key, int_types): if key not in self._field_map: raise KeyError(unwrap( ''' No field named "%s" defined for %s ''', key, type_name(self) )) key = self._field_map[key] name, _, params = self._fields[key] if not params or ('default' not in params and 'optional' not in params): raise ValueError(unwrap( ''' Can not delete the value for the field "%s" of %s since it is not optional or defaulted ''', name, type_name(self) )) if 'optional' in params: self.children[key] = VOID if self._native is not None: self._native[name] = None else: self.__setitem__(key, None) self._mutated = True def __iter__(self): """ :return: An iterator of field key names """ for info in self._fields: yield info[0] def _set_contents(self, force=False): """ Updates the .contents attribute of the value with the encoded value of all of the child objects :param force: Ensure all contents are in DER format instead of possibly using cached BER-encoded data """ if self.children is None: self._parse_children() contents = BytesIO() for index, info in enumerate(self._fields): child = self.children[index] if child is None: child_dump = b'' elif child.__class__ == tuple: if force: child_dump = self._lazy_child(index).dump(force=force) else: child_dump = child[3] + child[4] + child[5] else: child_dump = child.dump(force=force) # Skip values that are the same as the default if info[2] and 'default' in info[2]: default_value = info[1](**info[2]) if default_value.dump() == child_dump: continue contents.write(child_dump) self._contents = contents.getvalue() self._header = None if self._trailer != b'': self._trailer = b'' def _setup(self): """ Generates _field_map, _field_ids and _oid_nums for use in parsing """ cls = self.__class__ cls._field_map = {} cls._field_ids = [] cls._precomputed_specs = [] for index, field in enumerate(cls._fields): if len(field) < 3: field = field + ({},) cls._fields[index] = field cls._field_map[field[0]] = index cls._field_ids.append(_build_id_tuple(field[2], field[1])) if cls._oid_pair is not None: cls._oid_nums = (cls._field_map[cls._oid_pair[0]], cls._field_map[cls._oid_pair[1]]) for index, field in enumerate(cls._fields): has_callback = cls._spec_callbacks is not None and field[0] in cls._spec_callbacks is_mapped_oid = cls._oid_nums is not None and cls._oid_nums[1] == index if has_callback or is_mapped_oid: cls._precomputed_specs.append(None) else: cls._precomputed_specs.append((field[0], field[1], field[1], field[2], None)) def _determine_spec(self, index): """ Determine how a value for a field should be constructed :param index: The field number :return: A tuple containing the following elements: - unicode string of the field name - Asn1Value class of the field spec - Asn1Value class of the value spec - None or dict of params to pass to the field spec - None or Asn1Value class indicating the value spec was derived from an OID or a spec callback """ name, field_spec, field_params = self._fields[index] value_spec = field_spec spec_override = None if self._spec_callbacks is not None and name in self._spec_callbacks: callback = self._spec_callbacks[name] spec_override = callback(self) if spec_override: # Allow a spec callback to specify both the base spec and # the override, for situations such as OctetString and parse_as if spec_override.__class__ == tuple and len(spec_override) == 2: field_spec, value_spec = spec_override if value_spec is None: value_spec = field_spec spec_override = None # When no field spec is specified, use a single return value as that elif field_spec is None: field_spec = spec_override value_spec = field_spec spec_override = None else: value_spec = spec_override elif self._oid_nums is not None and self._oid_nums[1] == index: oid = self._lazy_child(self._oid_nums[0]).native if oid in self._oid_specs: spec_override = self._oid_specs[oid] value_spec = spec_override return (name, field_spec, value_spec, field_params, spec_override) def _make_value(self, field_name, field_spec, value_spec, field_params, value): """ Contructs an appropriate Asn1Value object for a field :param field_name: A unicode string of the field name :param field_spec: An Asn1Value class that is the field spec :param value_spec: An Asn1Value class that is the vaue spec :param field_params: None or a dict of params for the field spec :param value: The value to construct an Asn1Value object from :return: An instance of a child class of Asn1Value """ if value is None and 'optional' in field_params: return VOID specs_different = field_spec != value_spec is_any = issubclass(field_spec, Any) if issubclass(value_spec, Choice): is_asn1value = isinstance(value, Asn1Value) is_tuple = isinstance(value, tuple) and len(value) == 2 is_dict = isinstance(value, dict) and len(value) == 1 if not is_asn1value and not is_tuple and not is_dict: raise ValueError(unwrap( ''' Can not set a native python value to %s, which has the choice type of %s - value must be an instance of Asn1Value ''', field_name, type_name(value_spec) )) if is_tuple or is_dict: value = value_spec(value) if not isinstance(value, value_spec): wrapper = value_spec() wrapper.validate(value.class_, value.tag, value.contents) wrapper._parsed = value new_value = wrapper else: new_value = value elif isinstance(value, field_spec): new_value = value if specs_different: new_value.parse(value_spec) elif (not specs_different or is_any) and not isinstance(value, value_spec): if (not is_any or specs_different) and isinstance(value, Asn1Value): raise TypeError(unwrap( ''' %s value must be %s, not %s ''', field_name, type_name(value_spec), type_name(value) )) new_value = value_spec(value, **field_params) else: if isinstance(value, value_spec): new_value = value else: if isinstance(value, Asn1Value): raise TypeError(unwrap( ''' %s value must be %s, not %s ''', field_name, type_name(value_spec), type_name(value) )) new_value = value_spec(value) # For when the field is OctetString or OctetBitString with embedded # values we need to wrap the value in the field spec to get the # appropriate encoded value. if specs_different and not is_any: wrapper = field_spec(value=new_value.dump(), **field_params) wrapper._parsed = (new_value, new_value.__class__, None) new_value = wrapper new_value = _fix_tagging(new_value, field_params) return new_value def _parse_children(self, recurse=False): """ Parses the contents and generates Asn1Value objects based on the definitions from _fields. :param recurse: If child objects that are Sequence or SequenceOf objects should be recursively parsed :raises: ValueError - when an error occurs parsing child objects """ cls = self.__class__ if self._contents is None: if self._fields: self.children = [VOID] * len(self._fields) for index, (_, _, params) in enumerate(self._fields): if 'default' in params: if cls._precomputed_specs[index]: field_name, field_spec, value_spec, field_params, _ = cls._precomputed_specs[index] else: field_name, field_spec, value_spec, field_params, _ = self._determine_spec(index) self.children[index] = self._make_value(field_name, field_spec, value_spec, field_params, None) return try: self.children = [] contents_length = len(self._contents) child_pointer = 0 field = 0 field_len = len(self._fields) parts = None again = child_pointer < contents_length while again: if parts is None: parts, child_pointer = _parse(self._contents, contents_length, pointer=child_pointer) again = child_pointer < contents_length if field < field_len: _, field_spec, value_spec, field_params, spec_override = ( cls._precomputed_specs[field] or self._determine_spec(field)) # If the next value is optional or default, allow it to be absent if field_params and ('optional' in field_params or 'default' in field_params): if self._field_ids[field] != (parts[0], parts[2]) and field_spec != Any: # See if the value is a valid choice before assuming # that we have a missing optional or default value choice_match = False if issubclass(field_spec, Choice): try: tester = field_spec(**field_params) tester.validate(parts[0], parts[2], parts[4]) choice_match = True except (ValueError): pass if not choice_match: if 'optional' in field_params: self.children.append(VOID) else: self.children.append(field_spec(**field_params)) field += 1 again = True continue if field_spec is None or (spec_override and issubclass(field_spec, Any)): field_spec = value_spec spec_override = None if spec_override: child = parts + (field_spec, field_params, value_spec) else: child = parts + (field_spec, field_params) # Handle situations where an optional or defaulted field definition is incorrect elif field_len > 0 and field + 1 <= field_len: missed_fields = [] prev_field = field - 1 while prev_field >= 0: prev_field_info = self._fields[prev_field] if len(prev_field_info) < 3: break if 'optional' in prev_field_info[2] or 'default' in prev_field_info[2]: missed_fields.append(prev_field_info[0]) prev_field -= 1 plural = 's' if len(missed_fields) > 1 else '' missed_field_names = ', '.join(missed_fields) raise ValueError(unwrap( ''' Data for field %s (%s class, %s method, tag %s) does not match the field definition%s of %s ''', field + 1, CLASS_NUM_TO_NAME_MAP.get(parts[0]), METHOD_NUM_TO_NAME_MAP.get(parts[1]), parts[2], plural, missed_field_names )) else: child = parts if recurse: child = _build(*child) if isinstance(child, (Sequence, SequenceOf)): child._parse_children(recurse=True) self.children.append(child) field += 1 parts = None index = len(self.children) while index < field_len: name, field_spec, field_params = self._fields[index] if 'default' in field_params: self.children.append(field_spec(**field_params)) elif 'optional' in field_params: self.children.append(VOID) else: raise ValueError(unwrap( ''' Field "%s" is missing from structure ''', name )) index += 1 except (ValueError, TypeError) as e: self.children = None args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e def spec(self, field_name): """ Determines the spec to use for the field specified. Depending on how the spec is determined (_oid_pair or _spec_callbacks), it may be necessary to set preceding field values before calling this. Usually specs, if dynamic, are controlled by a preceding ObjectIdentifier field. :param field_name: A unicode string of the field name to get the spec for :return: A child class of asn1crypto.core.Asn1Value that the field must be encoded using """ if not isinstance(field_name, str_cls): raise TypeError(unwrap( ''' field_name must be a unicode string, not %s ''', type_name(field_name) )) if self._fields is None: raise ValueError(unwrap( ''' Unable to retrieve spec for field %s in the class %s because _fields has not been set ''', repr(field_name), type_name(self) )) index = self._field_map[field_name] info = self._determine_spec(index) return info[2] @property def native(self): """ The native Python datatype representation of this value :return: An OrderedDict or None. If an OrderedDict, all child values are recursively converted to native representation also. """ if self.contents is None: return None if self._native is None: if self.children is None: self._parse_children(recurse=True) try: self._native = OrderedDict() for index, child in enumerate(self.children): if child.__class__ == tuple: child = _build(*child) self.children[index] = child try: name = self._fields[index][0] except (IndexError): name = str_cls(index) self._native[name] = child.native except (ValueError, TypeError) as e: self._native = None args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e return self._native def _copy(self, other, copy_func): """ Copies the contents of another Sequence object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(Sequence, self)._copy(other, copy_func) if self.children is not None: self.children = [] for child in other.children: if child.__class__ == tuple: self.children.append(child) else: self.children.append(child.copy()) def debug(self, nest_level=1): """ Show the binary data and parsed data in a tree structure """ if self.children is None: self._parse_children() prefix = ' ' * nest_level _basic_debug(prefix, self) for field_name in self: child = self._lazy_child(self._field_map[field_name]) if child is not VOID: print('%s Field "%s"' % (prefix, field_name)) child.debug(nest_level + 3) def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ # If the length is indefinite, force the re-encoding if self._header is not None and self._header[-1:] == b'\x80': force = True # We can't force encoding if we don't have a spec if force and self._fields == [] and self.__class__ is Sequence: force = False if force: self._set_contents(force=force) if self._fields and self.children is not None: for index, (field_name, _, params) in enumerate(self._fields): if self.children[index] is not VOID: continue if 'default' in params or 'optional' in params: continue raise ValueError(unwrap( ''' Field "%s" is missing from structure ''', field_name )) return Asn1Value.dump(self) class SequenceOf(Asn1Value): """ Represents a sequence (ordered) of a single type of values from ASN.1 as a Python object with a list-like interface """ tag = 16 class_ = 0 method = 1 # A list of child objects children = None # SequenceOf overrides .contents to be a property so that the mutated state # of child objects can be checked to ensure everything is up-to-date _contents = None # Variable to track if the object has been mutated _mutated = False # An Asn1Value class to use when parsing children _child_spec = None def __init__(self, value=None, default=None, contents=None, spec=None, **kwargs): """ Allows setting child objects and the _child_spec via the spec parameter before passing everything else along to Asn1Value.__init__() :param value: A native Python datatype to initialize the object value with :param default: The default value if no value is specified :param contents: A byte string of the encoded contents of the value :param spec: A class derived from Asn1Value to use to parse children """ if spec: self._child_spec = spec Asn1Value.__init__(self, **kwargs) try: if contents is not None: self.contents = contents else: if value is None and default is not None: value = default if value is not None: for index, child in enumerate(value): self.__setitem__(index, child) # Make sure a blank list is serialized if self.contents is None: self._set_contents() except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while constructing %s' % type_name(self),) + args raise e @property def contents(self): """ :return: A byte string of the DER-encoded contents of the sequence """ if self.children is None: return self._contents if self._is_mutated(): self._set_contents() return self._contents @contents.setter def contents(self, value): """ :param value: A byte string of the DER-encoded contents of the sequence """ self._contents = value def _is_mutated(self): """ :return: A boolean - if the sequence or any children (recursively) have been mutated """ mutated = self._mutated if self.children is not None: for child in self.children: if isinstance(child, Sequence) or isinstance(child, SequenceOf): mutated = mutated or child._is_mutated() return mutated def _lazy_child(self, index): """ Builds a child object if the child has only been parsed into a tuple so far """ child = self.children[index] if child.__class__ == tuple: child = _build(*child) self.children[index] = child return child def _make_value(self, value): """ Constructs a _child_spec value from a native Python data type, or an appropriate Asn1Value object :param value: A native Python value, or some child of Asn1Value :return: An object of type _child_spec """ if isinstance(value, self._child_spec): new_value = value elif issubclass(self._child_spec, Any): if isinstance(value, Asn1Value): new_value = value else: raise ValueError(unwrap( ''' Can not set a native python value to %s where the _child_spec is Any - value must be an instance of Asn1Value ''', type_name(self) )) elif issubclass(self._child_spec, Choice): if not isinstance(value, Asn1Value): raise ValueError(unwrap( ''' Can not set a native python value to %s where the _child_spec is the choice type %s - value must be an instance of Asn1Value ''', type_name(self), self._child_spec.__name__ )) if not isinstance(value, self._child_spec): wrapper = self._child_spec() wrapper.validate(value.class_, value.tag, value.contents) wrapper._parsed = value value = wrapper new_value = value else: return self._child_spec(value=value) params = {} if self._child_spec.explicit: params['explicit'] = self._child_spec.explicit if self._child_spec.implicit: params['implicit'] = (self._child_spec.class_, self._child_spec.tag) return _fix_tagging(new_value, params) def __len__(self): """ :return: An integer """ # We inline this checks to prevent method invocation each time if self.children is None: self._parse_children() return len(self.children) def __getitem__(self, key): """ Allows accessing children via index :param key: Integer index of child """ # We inline this checks to prevent method invocation each time if self.children is None: self._parse_children() return self._lazy_child(key) def __setitem__(self, key, value): """ Allows overriding a child via index :param key: Integer index of child :param value: Native python datatype that will be passed to _child_spec to create new child object """ # We inline this checks to prevent method invocation each time if self.children is None: self._parse_children() new_value = self._make_value(value) # If adding at the end, create a space for the new value if key == len(self.children): self.children.append(None) if self._native is not None: self._native.append(None) self.children[key] = new_value if self._native is not None: self._native[key] = self.children[key].native self._mutated = True def __delitem__(self, key): """ Allows removing a child via index :param key: Integer index of child """ # We inline this checks to prevent method invocation each time if self.children is None: self._parse_children() self.children.pop(key) if self._native is not None: self._native.pop(key) self._mutated = True def __iter__(self): """ :return: An iter() of child objects """ # We inline this checks to prevent method invocation each time if self.children is None: self._parse_children() for index in range(0, len(self.children)): yield self._lazy_child(index) def __contains__(self, item): """ :param item: An object of the type cls._child_spec :return: A boolean if the item is contained in this SequenceOf """ if item is None or item is VOID: return False if not isinstance(item, self._child_spec): raise TypeError(unwrap( ''' Checking membership in %s is only available for instances of %s, not %s ''', type_name(self), type_name(self._child_spec), type_name(item) )) for child in self: if child == item: return True return False def append(self, value): """ Allows adding a child to the end of the sequence :param value: Native python datatype that will be passed to _child_spec to create new child object """ # We inline this checks to prevent method invocation each time if self.children is None: self._parse_children() self.children.append(self._make_value(value)) if self._native is not None: self._native.append(self.children[-1].native) self._mutated = True def _set_contents(self, force=False): """ Encodes all child objects into the contents for this object :param force: Ensure all contents are in DER format instead of possibly using cached BER-encoded data """ if self.children is None: self._parse_children() contents = BytesIO() for child in self: contents.write(child.dump(force=force)) self._contents = contents.getvalue() self._header = None if self._trailer != b'': self._trailer = b'' def _parse_children(self, recurse=False): """ Parses the contents and generates Asn1Value objects based on the definitions from _child_spec. :param recurse: If child objects that are Sequence or SequenceOf objects should be recursively parsed :raises: ValueError - when an error occurs parsing child objects """ try: self.children = [] if self._contents is None: return contents_length = len(self._contents) child_pointer = 0 while child_pointer < contents_length: parts, child_pointer = _parse(self._contents, contents_length, pointer=child_pointer) if self._child_spec: child = parts + (self._child_spec,) else: child = parts if recurse: child = _build(*child) if isinstance(child, (Sequence, SequenceOf)): child._parse_children(recurse=True) self.children.append(child) except (ValueError, TypeError) as e: self.children = None args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e def spec(self): """ Determines the spec to use for child values. :return: A child class of asn1crypto.core.Asn1Value that child values must be encoded using """ return self._child_spec @property def native(self): """ The native Python datatype representation of this value :return: A list or None. If a list, all child values are recursively converted to native representation also. """ if self.contents is None: return None if self._native is None: if self.children is None: self._parse_children(recurse=True) try: self._native = [child.native for child in self] except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e return self._native def _copy(self, other, copy_func): """ Copies the contents of another SequenceOf object to itself :param object: Another instance of the same class :param copy_func: An reference of copy.copy() or copy.deepcopy() to use when copying lists, dicts and objects """ super(SequenceOf, self)._copy(other, copy_func) if self.children is not None: self.children = [] for child in other.children: if child.__class__ == tuple: self.children.append(child) else: self.children.append(child.copy()) def debug(self, nest_level=1): """ Show the binary data and parsed data in a tree structure """ if self.children is None: self._parse_children() prefix = ' ' * nest_level _basic_debug(prefix, self) for child in self: child.debug(nest_level + 1) def dump(self, force=False): """ Encodes the value using DER :param force: If the encoded contents already exist, clear them and regenerate to ensure they are in DER format instead of BER format :return: A byte string of the DER-encoded value """ # If the length is indefinite, force the re-encoding if self._header is not None and self._header[-1:] == b'\x80': force = True if force: self._set_contents(force=force) return Asn1Value.dump(self) class Set(Sequence): """ Represents a set of fields (unordered) from ASN.1 as a Python object with a dict-like interface """ method = 1 class_ = 0 tag = 17 # A dict of 2-element tuples in the form (class_, tag) as keys and integers # as values that are the index of the field in _fields _field_ids = None def _setup(self): """ Generates _field_map, _field_ids and _oid_nums for use in parsing """ cls = self.__class__ cls._field_map = {} cls._field_ids = {} cls._precomputed_specs = [] for index, field in enumerate(cls._fields): if len(field) < 3: field = field + ({},) cls._fields[index] = field cls._field_map[field[0]] = index cls._field_ids[_build_id_tuple(field[2], field[1])] = index if cls._oid_pair is not None: cls._oid_nums = (cls._field_map[cls._oid_pair[0]], cls._field_map[cls._oid_pair[1]]) for index, field in enumerate(cls._fields): has_callback = cls._spec_callbacks is not None and field[0] in cls._spec_callbacks is_mapped_oid = cls._oid_nums is not None and cls._oid_nums[1] == index if has_callback or is_mapped_oid: cls._precomputed_specs.append(None) else: cls._precomputed_specs.append((field[0], field[1], field[1], field[2], None)) def _parse_children(self, recurse=False): """ Parses the contents and generates Asn1Value objects based on the definitions from _fields. :param recurse: If child objects that are Sequence or SequenceOf objects should be recursively parsed :raises: ValueError - when an error occurs parsing child objects """ cls = self.__class__ if self._contents is None: if self._fields: self.children = [VOID] * len(self._fields) for index, (_, _, params) in enumerate(self._fields): if 'default' in params: if cls._precomputed_specs[index]: field_name, field_spec, value_spec, field_params, _ = cls._precomputed_specs[index] else: field_name, field_spec, value_spec, field_params, _ = self._determine_spec(index) self.children[index] = self._make_value(field_name, field_spec, value_spec, field_params, None) return try: child_map = {} contents_length = len(self.contents) child_pointer = 0 seen_field = 0 while child_pointer < contents_length: parts, child_pointer = _parse(self.contents, contents_length, pointer=child_pointer) id_ = (parts[0], parts[2]) field = self._field_ids.get(id_) if field is None: raise ValueError(unwrap( ''' Data for field %s (%s class, %s method, tag %s) does not match any of the field definitions ''', seen_field, CLASS_NUM_TO_NAME_MAP.get(parts[0]), METHOD_NUM_TO_NAME_MAP.get(parts[1]), parts[2], )) _, field_spec, value_spec, field_params, spec_override = ( cls._precomputed_specs[field] or self._determine_spec(field)) if field_spec is None or (spec_override and issubclass(field_spec, Any)): field_spec = value_spec spec_override = None if spec_override: child = parts + (field_spec, field_params, value_spec) else: child = parts + (field_spec, field_params) if recurse: child = _build(*child) if isinstance(child, (Sequence, SequenceOf)): child._parse_children(recurse=True) child_map[field] = child seen_field += 1 total_fields = len(self._fields) for index in range(0, total_fields): if index in child_map: continue name, field_spec, value_spec, field_params, spec_override = ( cls._precomputed_specs[index] or self._determine_spec(index)) if field_spec is None or (spec_override and issubclass(field_spec, Any)): field_spec = value_spec spec_override = None missing = False if not field_params: missing = True elif 'optional' not in field_params and 'default' not in field_params: missing = True elif 'optional' in field_params: child_map[index] = VOID elif 'default' in field_params: child_map[index] = field_spec(**field_params) if missing: raise ValueError(unwrap( ''' Missing required field "%s" from %s ''', name, type_name(self) )) self.children = [] for index in range(0, total_fields): self.children.append(child_map[index]) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(self),) + args raise e def _set_contents(self, force=False): """ Encodes all child objects into the contents for this object. This method is overridden because a Set needs to be encoded by removing defaulted fields and then sorting the fields by tag. :param force: Ensure all contents are in DER format instead of possibly using cached BER-encoded data """ if self.children is None: self._parse_children() child_tag_encodings = [] for index, child in enumerate(self.children): child_encoding = child.dump(force=force) # Skip encoding defaulted children name, spec, field_params = self._fields[index] if 'default' in field_params: if spec(**field_params).dump() == child_encoding: continue child_tag_encodings.append((child.tag, child_encoding)) child_tag_encodings.sort(key=lambda ct: ct[0]) self._contents = b''.join([ct[1] for ct in child_tag_encodings]) self._header = None if self._trailer != b'': self._trailer = b'' class SetOf(SequenceOf): """ Represents a set (unordered) of a single type of values from ASN.1 as a Python object with a list-like interface """ tag = 17 def _set_contents(self, force=False): """ Encodes all child objects into the contents for this object. This method is overridden because a SetOf needs to be encoded by sorting the child encodings. :param force: Ensure all contents are in DER format instead of possibly using cached BER-encoded data """ if self.children is None: self._parse_children() child_encodings = [] for child in self: child_encodings.append(child.dump(force=force)) self._contents = b''.join(sorted(child_encodings)) self._header = None if self._trailer != b'': self._trailer = b'' class EmbeddedPdv(Sequence): """ A sequence structure """ tag = 11 class NumericString(AbstractString): """ Represents a numeric string from ASN.1 as a Python unicode string """ tag = 18 _encoding = 'latin1' class PrintableString(AbstractString): """ Represents a printable string from ASN.1 as a Python unicode string """ tag = 19 _encoding = 'latin1' class TeletexString(AbstractString): """ Represents a teletex string from ASN.1 as a Python unicode string """ tag = 20 _encoding = 'teletex' class VideotexString(OctetString): """ Represents a videotex string from ASN.1 as a Python byte string """ tag = 21 class IA5String(AbstractString): """ Represents an IA5 string from ASN.1 as a Python unicode string """ tag = 22 _encoding = 'ascii' class AbstractTime(AbstractString): """ Represents a time from ASN.1 as a Python datetime.datetime object """ @property def _parsed_time(self): """ The parsed datetime string. :raises: ValueError - when an invalid value is passed :return: A dict with the parsed values """ string = str_cls(self) m = self._TIMESTRING_RE.match(string) if not m: raise ValueError(unwrap( ''' Error parsing %s to a %s ''', string, type_name(self), )) groups = m.groupdict() tz = None if groups['zulu']: tz = timezone.utc elif groups['dsign']: sign = 1 if groups['dsign'] == '+' else -1 tz = create_timezone(sign * timedelta( hours=int(groups['dhour']), minutes=int(groups['dminute'] or 0) )) if groups['fraction']: # Compute fraction in microseconds fract = Fraction( int(groups['fraction']), 10 ** len(groups['fraction']) ) * 1000000 if groups['minute'] is None: fract *= 3600 elif groups['second'] is None: fract *= 60 fract_usec = int(fract.limit_denominator(1)) else: fract_usec = 0 return { 'year': int(groups['year']), 'month': int(groups['month']), 'day': int(groups['day']), 'hour': int(groups['hour']), 'minute': int(groups['minute'] or 0), 'second': int(groups['second'] or 0), 'tzinfo': tz, 'fraction': fract_usec, } @property def native(self): """ The native Python datatype representation of this value :return: A datetime.datetime object, asn1crypto.util.extended_datetime object or None. The datetime object is usually timezone aware. If it's naive, then it's in the sender's local time; see X.680 sect. 42.3 """ if self.contents is None: return None if self._native is None: parsed = self._parsed_time fraction = parsed.pop('fraction', 0) value = self._get_datetime(parsed) if fraction: value += timedelta(microseconds=fraction) self._native = value return self._native class UTCTime(AbstractTime): """ Represents a UTC time from ASN.1 as a timezone aware Python datetime.datetime object """ tag = 23 # Regular expression for UTCTime as described in X.680 sect. 43 and ISO 8601 _TIMESTRING_RE = re.compile(r''' ^ # YYMMDD (?P\d{2}) (?P\d{2}) (?P\d{2}) # hhmm or hhmmss (?P\d{2}) (?P\d{2}) (?P\d{2})? # Matches nothing, needed because GeneralizedTime uses this. (?P) # Z or [-+]hhmm (?: (?PZ) | (?: (?P[-+]) (?P\d{2}) (?P\d{2}) ) ) $ ''', re.X) def set(self, value): """ Sets the value of the object :param value: A unicode string or a datetime.datetime object :raises: ValueError - when an invalid value is passed """ if isinstance(value, datetime): if not value.tzinfo: raise ValueError('Must be timezone aware') # Convert value to UTC. value = value.astimezone(utc_with_dst) if not 1950 <= value.year <= 2049: raise ValueError('Year of the UTCTime is not in range [1950, 2049], use GeneralizedTime instead') value = value.strftime('%y%m%d%H%M%SZ') if _PY2: value = value.decode('ascii') AbstractString.set(self, value) # Set it to None and let the class take care of converting the next # time that .native is called self._native = None def _get_datetime(self, parsed): """ Create a datetime object from the parsed time. :return: An aware datetime.datetime object """ # X.680 only specifies that UTCTime is not using a century. # So "18" could as well mean 2118 or 1318. # X.509 and CMS specify to use UTCTime for years earlier than 2050. # Assume that UTCTime is only used for years [1950, 2049]. if parsed['year'] < 50: parsed['year'] += 2000 else: parsed['year'] += 1900 return datetime(**parsed) class GeneralizedTime(AbstractTime): """ Represents a generalized time from ASN.1 as a Python datetime.datetime object or asn1crypto.util.extended_datetime object in UTC """ tag = 24 # Regular expression for GeneralizedTime as described in X.680 sect. 42 and ISO 8601 _TIMESTRING_RE = re.compile(r''' ^ # YYYYMMDD (?P\d{4}) (?P\d{2}) (?P\d{2}) # hh or hhmm or hhmmss (?P\d{2}) (?: (?P\d{2}) (?P\d{2})? )? # Optional fraction; [.,]dddd (one or more decimals) # If Seconds are given, it's fractions of Seconds. # Else if Minutes are given, it's fractions of Minutes. # Else it's fractions of Hours. (?: [,.] (?P\d+) )? # Optional timezone. If left out, the time is in local time. # Z or [-+]hh or [-+]hhmm (?: (?PZ) | (?: (?P[-+]) (?P\d{2}) (?P\d{2})? ) )? $ ''', re.X) def set(self, value): """ Sets the value of the object :param value: A unicode string, a datetime.datetime object or an asn1crypto.util.extended_datetime object :raises: ValueError - when an invalid value is passed """ if isinstance(value, (datetime, extended_datetime)): if not value.tzinfo: raise ValueError('Must be timezone aware') # Convert value to UTC. value = value.astimezone(utc_with_dst) if value.microsecond: fraction = '.' + str(value.microsecond).zfill(6).rstrip('0') else: fraction = '' value = value.strftime('%Y%m%d%H%M%S') + fraction + 'Z' if _PY2: value = value.decode('ascii') AbstractString.set(self, value) # Set it to None and let the class take care of converting the next # time that .native is called self._native = None def _get_datetime(self, parsed): """ Create a datetime object from the parsed time. :return: A datetime.datetime object or asn1crypto.util.extended_datetime object. It may or may not be aware. """ if parsed['year'] == 0: # datetime does not support year 0. Use extended_datetime instead. return extended_datetime(**parsed) else: return datetime(**parsed) class GraphicString(AbstractString): """ Represents a graphic string from ASN.1 as a Python unicode string """ tag = 25 # This is technically not correct since this type can contain any charset _encoding = 'latin1' class VisibleString(AbstractString): """ Represents a visible string from ASN.1 as a Python unicode string """ tag = 26 _encoding = 'latin1' class GeneralString(AbstractString): """ Represents a general string from ASN.1 as a Python unicode string """ tag = 27 # This is technically not correct since this type can contain any charset _encoding = 'latin1' class UniversalString(AbstractString): """ Represents a universal string from ASN.1 as a Python unicode string """ tag = 28 _encoding = 'utf-32-be' class CharacterString(AbstractString): """ Represents a character string from ASN.1 as a Python unicode string """ tag = 29 # This is technically not correct since this type can contain any charset _encoding = 'latin1' class BMPString(AbstractString): """ Represents a BMP string from ASN.1 as a Python unicode string """ tag = 30 _encoding = 'utf-16-be' def _basic_debug(prefix, self): """ Prints out basic information about an Asn1Value object. Extracted for reuse among different classes that customize the debug information. :param prefix: A unicode string of spaces to prefix output line with :param self: The object to print the debugging information about """ print('%s%s Object #%s' % (prefix, type_name(self), id(self))) if self._header: print('%s Header: 0x%s' % (prefix, binascii.hexlify(self._header or b'').decode('utf-8'))) has_header = self.method is not None and self.class_ is not None and self.tag is not None if has_header: method_name = METHOD_NUM_TO_NAME_MAP.get(self.method) class_name = CLASS_NUM_TO_NAME_MAP.get(self.class_) if self.explicit is not None: for class_, tag in self.explicit: print( '%s %s tag %s (explicitly tagged)' % ( prefix, CLASS_NUM_TO_NAME_MAP.get(class_), tag ) ) if has_header: print('%s %s %s %s' % (prefix, method_name, class_name, self.tag)) elif self.implicit: if has_header: print('%s %s %s tag %s (implicitly tagged)' % (prefix, method_name, class_name, self.tag)) elif has_header: print('%s %s %s tag %s' % (prefix, method_name, class_name, self.tag)) if self._trailer: print('%s Trailer: 0x%s' % (prefix, binascii.hexlify(self._trailer or b'').decode('utf-8'))) print('%s Data: 0x%s' % (prefix, binascii.hexlify(self.contents or b'').decode('utf-8'))) def _tag_type_to_explicit_implicit(params): """ Converts old-style "tag_type" and "tag" params to "explicit" and "implicit" :param params: A dict of parameters to convert from tag_type/tag to explicit/implicit """ if 'tag_type' in params: if params['tag_type'] == 'explicit': params['explicit'] = (params.get('class', 2), params['tag']) elif params['tag_type'] == 'implicit': params['implicit'] = (params.get('class', 2), params['tag']) del params['tag_type'] del params['tag'] if 'class' in params: del params['class'] def _fix_tagging(value, params): """ Checks if a value is properly tagged based on the spec, and re/untags as necessary :param value: An Asn1Value object :param params: A dict of spec params :return: An Asn1Value that is properly tagged """ _tag_type_to_explicit_implicit(params) retag = False if 'implicit' not in params: if value.implicit is not False: retag = True else: if isinstance(params['implicit'], tuple): class_, tag = params['implicit'] else: tag = params['implicit'] class_ = 'context' if value.implicit is False: retag = True elif value.class_ != CLASS_NAME_TO_NUM_MAP[class_] or value.tag != tag: retag = True if params.get('explicit') != value.explicit: retag = True if retag: return value.retag(params) return value def _build_id_tuple(params, spec): """ Builds a 2-element tuple used to identify fields by grabbing the class_ and tag from an Asn1Value class and the params dict being passed to it :param params: A dict of params to pass to spec :param spec: An Asn1Value class :return: A 2-element integer tuple in the form (class_, tag) """ # Handle situations where the spec is not known at setup time if spec is None: return (None, None) required_class = spec.class_ required_tag = spec.tag _tag_type_to_explicit_implicit(params) if 'explicit' in params: if isinstance(params['explicit'], tuple): required_class, required_tag = params['explicit'] else: required_class = 2 required_tag = params['explicit'] elif 'implicit' in params: if isinstance(params['implicit'], tuple): required_class, required_tag = params['implicit'] else: required_class = 2 required_tag = params['implicit'] if required_class is not None and not isinstance(required_class, int_types): required_class = CLASS_NAME_TO_NUM_MAP[required_class] required_class = params.get('class_', required_class) required_tag = params.get('tag', required_tag) return (required_class, required_tag) def _int_to_bit_tuple(value, bits): """ Format value as a tuple of 1s and 0s. :param value: A non-negative integer to format :param bits: Number of bits in the output :return: A tuple of 1s and 0s with bits members. """ if not value and not bits: return () result = tuple(map(int, format(value, '0{0}b'.format(bits)))) if len(result) != bits: raise ValueError('Result too large: {0} > {1}'.format(len(result), bits)) return result _UNIVERSAL_SPECS = { 1: Boolean, 2: Integer, 3: BitString, 4: OctetString, 5: Null, 6: ObjectIdentifier, 7: ObjectDescriptor, 8: InstanceOf, 9: Real, 10: Enumerated, 11: EmbeddedPdv, 12: UTF8String, 13: RelativeOid, 16: Sequence, 17: Set, 18: NumericString, 19: PrintableString, 20: TeletexString, 21: VideotexString, 22: IA5String, 23: UTCTime, 24: GeneralizedTime, 25: GraphicString, 26: VisibleString, 27: GeneralString, 28: UniversalString, 29: CharacterString, 30: BMPString } def _build(class_, method, tag, header, contents, trailer, spec=None, spec_params=None, nested_spec=None): """ Builds an Asn1Value object generically, or using a spec with optional params :param class_: An integer representing the ASN.1 class :param method: An integer representing the ASN.1 method :param tag: An integer representing the ASN.1 tag :param header: A byte string of the ASN.1 header (class, method, tag, length) :param contents: A byte string of the ASN.1 value :param trailer: A byte string of any ASN.1 trailer (only used by indefinite length encodings) :param spec: A class derived from Asn1Value that defines what class_ and tag the value should have, and the semantics of the encoded value. The return value will be of this type. If omitted, the encoded value will be decoded using the standard universal tag based on the encoded tag number. :param spec_params: A dict of params to pass to the spec object :param nested_spec: For certain Asn1Value classes (such as OctetString and BitString), the contents can be further parsed and interpreted as another Asn1Value. This parameter controls the spec for that sub-parsing. :return: An object of the type spec, or if not specified, a child of Asn1Value """ if spec_params is not None: _tag_type_to_explicit_implicit(spec_params) if header is None: return VOID header_set = False # If an explicit specification was passed in, make sure it matches if spec is not None: # If there is explicit tagging and contents, we have to split # the header and trailer off before we do the parsing no_explicit = spec_params and 'no_explicit' in spec_params if not no_explicit and (spec.explicit or (spec_params and 'explicit' in spec_params)): if spec_params: value = spec(**spec_params) else: value = spec() original_explicit = value.explicit explicit_info = reversed(original_explicit) parsed_class = class_ parsed_method = method parsed_tag = tag to_parse = contents explicit_header = header explicit_trailer = trailer or b'' for expected_class, expected_tag in explicit_info: if parsed_class != expected_class: raise ValueError(unwrap( ''' Error parsing %s - explicitly-tagged class should have been %s, but %s was found ''', type_name(value), CLASS_NUM_TO_NAME_MAP.get(expected_class), CLASS_NUM_TO_NAME_MAP.get(parsed_class, parsed_class) )) if parsed_method != 1: raise ValueError(unwrap( ''' Error parsing %s - explicitly-tagged method should have been %s, but %s was found ''', type_name(value), METHOD_NUM_TO_NAME_MAP.get(1), METHOD_NUM_TO_NAME_MAP.get(parsed_method, parsed_method) )) if parsed_tag != expected_tag: raise ValueError(unwrap( ''' Error parsing %s - explicitly-tagged tag should have been %s, but %s was found ''', type_name(value), expected_tag, parsed_tag )) info, _ = _parse(to_parse, len(to_parse)) parsed_class, parsed_method, parsed_tag, parsed_header, to_parse, parsed_trailer = info if not isinstance(value, Choice): explicit_header += parsed_header explicit_trailer = parsed_trailer + explicit_trailer value = _build(*info, spec=spec, spec_params={'no_explicit': True}) value._header = explicit_header value._trailer = explicit_trailer value.explicit = original_explicit header_set = True else: if spec_params: value = spec(contents=contents, **spec_params) else: value = spec(contents=contents) if spec is Any: pass elif isinstance(value, Choice): value.validate(class_, tag, contents) try: # Force parsing the Choice now value.contents = header + value.contents header = b'' value.parse() except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(value),) + args raise e else: if class_ != value.class_: raise ValueError(unwrap( ''' Error parsing %s - class should have been %s, but %s was found ''', type_name(value), CLASS_NUM_TO_NAME_MAP.get(value.class_), CLASS_NUM_TO_NAME_MAP.get(class_, class_) )) if method != value.method: # Allow parsing a primitive method as constructed if the value # is indefinite length. This is to allow parsing BER. ber_indef = method == 1 and value.method == 0 and trailer == b'\x00\x00' if not ber_indef or not isinstance(value, Constructable): raise ValueError(unwrap( ''' Error parsing %s - method should have been %s, but %s was found ''', type_name(value), METHOD_NUM_TO_NAME_MAP.get(value.method), METHOD_NUM_TO_NAME_MAP.get(method, method) )) else: value.method = method value._indefinite = True if tag != value.tag: if isinstance(value._bad_tag, tuple): is_bad_tag = tag in value._bad_tag else: is_bad_tag = tag == value._bad_tag if not is_bad_tag: raise ValueError(unwrap( ''' Error parsing %s - tag should have been %s, but %s was found ''', type_name(value), value.tag, tag )) # For explicitly tagged, un-speced parsings, we use a generic container # since we will be parsing the contents and discarding the outer object # anyway a little further on elif spec_params and 'explicit' in spec_params: original_value = Asn1Value(contents=contents, **spec_params) original_explicit = original_value.explicit to_parse = contents explicit_header = header explicit_trailer = trailer or b'' for expected_class, expected_tag in reversed(original_explicit): info, _ = _parse(to_parse, len(to_parse)) _, _, _, parsed_header, to_parse, parsed_trailer = info explicit_header += parsed_header explicit_trailer = parsed_trailer + explicit_trailer value = _build(*info, spec=spec, spec_params={'no_explicit': True}) value._header = header + value._header value._trailer += trailer or b'' value.explicit = original_explicit header_set = True # If no spec was specified, allow anything and just process what # is in the input data else: if tag not in _UNIVERSAL_SPECS: raise ValueError(unwrap( ''' Unknown element - %s class, %s method, tag %s ''', CLASS_NUM_TO_NAME_MAP.get(class_), METHOD_NUM_TO_NAME_MAP.get(method), tag )) spec = _UNIVERSAL_SPECS[tag] value = spec(contents=contents, class_=class_) ber_indef = method == 1 and value.method == 0 and trailer == b'\x00\x00' if ber_indef and isinstance(value, Constructable): value._indefinite = True value.method = method if not header_set: value._header = header value._trailer = trailer or b'' # Destroy any default value that our contents have overwritten value._native = None if nested_spec: try: value.parse(nested_spec) except (ValueError, TypeError) as e: args = e.args[1:] e.args = (e.args[0] + '\n while parsing %s' % type_name(value),) + args raise e return value def _parse_build(encoded_data, pointer=0, spec=None, spec_params=None, strict=False): """ Parses a byte string generically, or using a spec with optional params :param encoded_data: A byte string that contains BER-encoded data :param pointer: The index in the byte string to parse from :param spec: A class derived from Asn1Value that defines what class_ and tag the value should have, and the semantics of the encoded value. The return value will be of this type. If omitted, the encoded value will be decoded using the standard universal tag based on the encoded tag number. :param spec_params: A dict of params to pass to the spec object :param strict: A boolean indicating if trailing data should be forbidden - if so, a ValueError will be raised when trailing data exists :return: A 2-element tuple: - 0: An object of the type spec, or if not specified, a child of Asn1Value - 1: An integer indicating how many bytes were consumed """ encoded_len = len(encoded_data) info, new_pointer = _parse(encoded_data, encoded_len, pointer) if strict and new_pointer != pointer + encoded_len: extra_bytes = pointer + encoded_len - new_pointer raise ValueError('Extra data - %d bytes of trailing data were provided' % extra_bytes) return (_build(*info, spec=spec, spec_params=spec_params), new_pointer) ================================================ FILE: libs/asn1crypto/crl.py ================================================ # coding: utf-8 """ ASN.1 type classes for certificate revocation lists (CRL). Exports the following items: - CertificateList() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function import hashlib from .algos import SignedDigestAlgorithm from .core import ( Boolean, Enumerated, GeneralizedTime, Integer, ObjectIdentifier, OctetBitString, ParsableOctetString, Sequence, SequenceOf, ) from .x509 import ( AuthorityInfoAccessSyntax, AuthorityKeyIdentifier, CRLDistributionPoints, DistributionPointName, GeneralNames, Name, ReasonFlags, Time, ) # The structures in this file are taken from https://tools.ietf.org/html/rfc5280 class Version(Integer): _map = { 0: 'v1', 1: 'v2', 2: 'v3', } class IssuingDistributionPoint(Sequence): _fields = [ ('distribution_point', DistributionPointName, {'explicit': 0, 'optional': True}), ('only_contains_user_certs', Boolean, {'implicit': 1, 'default': False}), ('only_contains_ca_certs', Boolean, {'implicit': 2, 'default': False}), ('only_some_reasons', ReasonFlags, {'implicit': 3, 'optional': True}), ('indirect_crl', Boolean, {'implicit': 4, 'default': False}), ('only_contains_attribute_certs', Boolean, {'implicit': 5, 'default': False}), ] class TBSCertListExtensionId(ObjectIdentifier): _map = { '2.5.29.18': 'issuer_alt_name', '2.5.29.20': 'crl_number', '2.5.29.27': 'delta_crl_indicator', '2.5.29.28': 'issuing_distribution_point', '2.5.29.35': 'authority_key_identifier', '2.5.29.46': 'freshest_crl', '1.3.6.1.5.5.7.1.1': 'authority_information_access', } class TBSCertListExtension(Sequence): _fields = [ ('extn_id', TBSCertListExtensionId), ('critical', Boolean, {'default': False}), ('extn_value', ParsableOctetString), ] _oid_pair = ('extn_id', 'extn_value') _oid_specs = { 'issuer_alt_name': GeneralNames, 'crl_number': Integer, 'delta_crl_indicator': Integer, 'issuing_distribution_point': IssuingDistributionPoint, 'authority_key_identifier': AuthorityKeyIdentifier, 'freshest_crl': CRLDistributionPoints, 'authority_information_access': AuthorityInfoAccessSyntax, } class TBSCertListExtensions(SequenceOf): _child_spec = TBSCertListExtension class CRLReason(Enumerated): _map = { 0: 'unspecified', 1: 'key_compromise', 2: 'ca_compromise', 3: 'affiliation_changed', 4: 'superseded', 5: 'cessation_of_operation', 6: 'certificate_hold', 8: 'remove_from_crl', 9: 'privilege_withdrawn', 10: 'aa_compromise', } @property def human_friendly(self): """ :return: A unicode string with revocation description that is suitable to show to end-users. Starts with a lower case letter and phrased in such a way that it makes sense after the phrase "because of" or "due to". """ return { 'unspecified': 'an unspecified reason', 'key_compromise': 'a compromised key', 'ca_compromise': 'the CA being compromised', 'affiliation_changed': 'an affiliation change', 'superseded': 'certificate supersession', 'cessation_of_operation': 'a cessation of operation', 'certificate_hold': 'a certificate hold', 'remove_from_crl': 'removal from the CRL', 'privilege_withdrawn': 'privilege withdrawl', 'aa_compromise': 'the AA being compromised', }[self.native] class CRLEntryExtensionId(ObjectIdentifier): _map = { '2.5.29.21': 'crl_reason', '2.5.29.23': 'hold_instruction_code', '2.5.29.24': 'invalidity_date', '2.5.29.29': 'certificate_issuer', } class CRLEntryExtension(Sequence): _fields = [ ('extn_id', CRLEntryExtensionId), ('critical', Boolean, {'default': False}), ('extn_value', ParsableOctetString), ] _oid_pair = ('extn_id', 'extn_value') _oid_specs = { 'crl_reason': CRLReason, 'hold_instruction_code': ObjectIdentifier, 'invalidity_date': GeneralizedTime, 'certificate_issuer': GeneralNames, } class CRLEntryExtensions(SequenceOf): _child_spec = CRLEntryExtension class RevokedCertificate(Sequence): _fields = [ ('user_certificate', Integer), ('revocation_date', Time), ('crl_entry_extensions', CRLEntryExtensions, {'optional': True}), ] _processed_extensions = False _critical_extensions = None _crl_reason_value = None _invalidity_date_value = None _certificate_issuer_value = None _issuer_name = False def _set_extensions(self): """ Sets common named extensions to private attributes and creates a list of critical extensions """ self._critical_extensions = set() for extension in self['crl_entry_extensions']: name = extension['extn_id'].native attribute_name = '_%s_value' % name if hasattr(self, attribute_name): setattr(self, attribute_name, extension['extn_value'].parsed) if extension['critical'].native: self._critical_extensions.add(name) self._processed_extensions = True @property def critical_extensions(self): """ Returns a set of the names (or OID if not a known extension) of the extensions marked as critical :return: A set of unicode strings """ if not self._processed_extensions: self._set_extensions() return self._critical_extensions @property def crl_reason_value(self): """ This extension indicates the reason that a certificate was revoked. :return: None or a CRLReason object """ if self._processed_extensions is False: self._set_extensions() return self._crl_reason_value @property def invalidity_date_value(self): """ This extension indicates the suspected date/time the private key was compromised or the certificate became invalid. This would usually be before the revocation date, which is when the CA processed the revocation. :return: None or a GeneralizedTime object """ if self._processed_extensions is False: self._set_extensions() return self._invalidity_date_value @property def certificate_issuer_value(self): """ This extension indicates the issuer of the certificate in question, and is used in indirect CRLs. CRL entries without this extension are for certificates issued from the last seen issuer. :return: None or an x509.GeneralNames object """ if self._processed_extensions is False: self._set_extensions() return self._certificate_issuer_value @property def issuer_name(self): """ :return: None, or an asn1crypto.x509.Name object for the issuer of the cert """ if self._issuer_name is False: self._issuer_name = None if self.certificate_issuer_value: for general_name in self.certificate_issuer_value: if general_name.name == 'directory_name': self._issuer_name = general_name.chosen break return self._issuer_name class RevokedCertificates(SequenceOf): _child_spec = RevokedCertificate class TbsCertList(Sequence): _fields = [ ('version', Version, {'optional': True}), ('signature', SignedDigestAlgorithm), ('issuer', Name), ('this_update', Time), ('next_update', Time, {'optional': True}), ('revoked_certificates', RevokedCertificates, {'optional': True}), ('crl_extensions', TBSCertListExtensions, {'explicit': 0, 'optional': True}), ] class CertificateList(Sequence): _fields = [ ('tbs_cert_list', TbsCertList), ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetBitString), ] _processed_extensions = False _critical_extensions = None _issuer_alt_name_value = None _crl_number_value = None _delta_crl_indicator_value = None _issuing_distribution_point_value = None _authority_key_identifier_value = None _freshest_crl_value = None _authority_information_access_value = None _issuer_cert_urls = None _delta_crl_distribution_points = None _sha1 = None _sha256 = None def _set_extensions(self): """ Sets common named extensions to private attributes and creates a list of critical extensions """ self._critical_extensions = set() for extension in self['tbs_cert_list']['crl_extensions']: name = extension['extn_id'].native attribute_name = '_%s_value' % name if hasattr(self, attribute_name): setattr(self, attribute_name, extension['extn_value'].parsed) if extension['critical'].native: self._critical_extensions.add(name) self._processed_extensions = True @property def critical_extensions(self): """ Returns a set of the names (or OID if not a known extension) of the extensions marked as critical :return: A set of unicode strings """ if not self._processed_extensions: self._set_extensions() return self._critical_extensions @property def issuer_alt_name_value(self): """ This extension allows associating one or more alternative names with the issuer of the CRL. :return: None or an x509.GeneralNames object """ if self._processed_extensions is False: self._set_extensions() return self._issuer_alt_name_value @property def crl_number_value(self): """ This extension adds a monotonically increasing number to the CRL and is used to distinguish different versions of the CRL. :return: None or an Integer object """ if self._processed_extensions is False: self._set_extensions() return self._crl_number_value @property def delta_crl_indicator_value(self): """ This extension indicates a CRL is a delta CRL, and contains the CRL number of the base CRL that it is a delta from. :return: None or an Integer object """ if self._processed_extensions is False: self._set_extensions() return self._delta_crl_indicator_value @property def issuing_distribution_point_value(self): """ This extension includes information about what types of revocations and certificates are part of the CRL. :return: None or an IssuingDistributionPoint object """ if self._processed_extensions is False: self._set_extensions() return self._issuing_distribution_point_value @property def authority_key_identifier_value(self): """ This extension helps in identifying the public key with which to validate the authenticity of the CRL. :return: None or an AuthorityKeyIdentifier object """ if self._processed_extensions is False: self._set_extensions() return self._authority_key_identifier_value @property def freshest_crl_value(self): """ This extension is used in complete CRLs to indicate where a delta CRL may be located. :return: None or a CRLDistributionPoints object """ if self._processed_extensions is False: self._set_extensions() return self._freshest_crl_value @property def authority_information_access_value(self): """ This extension is used to provide a URL with which to download the certificate used to sign this CRL. :return: None or an AuthorityInfoAccessSyntax object """ if self._processed_extensions is False: self._set_extensions() return self._authority_information_access_value @property def issuer(self): """ :return: An asn1crypto.x509.Name object for the issuer of the CRL """ return self['tbs_cert_list']['issuer'] @property def authority_key_identifier(self): """ :return: None or a byte string of the key_identifier from the authority key identifier extension """ if not self.authority_key_identifier_value: return None return self.authority_key_identifier_value['key_identifier'].native @property def issuer_cert_urls(self): """ :return: A list of unicode strings that are URLs that should contain either an individual DER-encoded X.509 certificate, or a DER-encoded CMS message containing multiple certificates """ if self._issuer_cert_urls is None: self._issuer_cert_urls = [] if self.authority_information_access_value: for entry in self.authority_information_access_value: if entry['access_method'].native == 'ca_issuers': location = entry['access_location'] if location.name != 'uniform_resource_identifier': continue url = location.native if url.lower()[0:7] == 'http://': self._issuer_cert_urls.append(url) return self._issuer_cert_urls @property def delta_crl_distribution_points(self): """ Returns delta CRL URLs - only applies to complete CRLs :return: A list of zero or more DistributionPoint objects """ if self._delta_crl_distribution_points is None: self._delta_crl_distribution_points = [] if self.freshest_crl_value is not None: for distribution_point in self.freshest_crl_value: distribution_point_name = distribution_point['distribution_point'] # RFC 5280 indicates conforming CA should not use the relative form if distribution_point_name.name == 'name_relative_to_crl_issuer': continue # This library is currently only concerned with HTTP-based CRLs for general_name in distribution_point_name.chosen: if general_name.name == 'uniform_resource_identifier': self._delta_crl_distribution_points.append(distribution_point) return self._delta_crl_distribution_points @property def signature(self): """ :return: A byte string of the signature """ return self['signature'].native @property def sha1(self): """ :return: The SHA1 hash of the DER-encoded bytes of this certificate list """ if self._sha1 is None: self._sha1 = hashlib.sha1(self.dump()).digest() return self._sha1 @property def sha256(self): """ :return: The SHA-256 hash of the DER-encoded bytes of this certificate list """ if self._sha256 is None: self._sha256 = hashlib.sha256(self.dump()).digest() return self._sha256 ================================================ FILE: libs/asn1crypto/csr.py ================================================ # coding: utf-8 """ ASN.1 type classes for certificate signing requests (CSR). Exports the following items: - CertificationRequest() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function from .algos import SignedDigestAlgorithm from .core import ( Any, BitString, BMPString, Integer, ObjectIdentifier, OctetBitString, Sequence, SetOf, UTF8String ) from .keys import PublicKeyInfo from .x509 import DirectoryString, Extensions, Name # The structures in this file are taken from https://tools.ietf.org/html/rfc2986 # and https://tools.ietf.org/html/rfc2985 class Version(Integer): _map = { 0: 'v1', } class CSRAttributeType(ObjectIdentifier): _map = { '1.2.840.113549.1.9.7': 'challenge_password', '1.2.840.113549.1.9.9': 'extended_certificate_attributes', '1.2.840.113549.1.9.14': 'extension_request', # https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wcce/a5eaae36-e9f3-4dc5-a687-bfa7115954f1 '1.3.6.1.4.1.311.13.2.2': 'microsoft_enrollment_csp_provider', # https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wcce/7c677cba-030d-48be-ba2b-01e407705f34 '1.3.6.1.4.1.311.13.2.3': 'microsoft_os_version', # https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wcce/64e5ff6d-c6dd-4578-92f7-b3d895f9b9c7 '1.3.6.1.4.1.311.21.20': 'microsoft_request_client_info', } class SetOfDirectoryString(SetOf): _child_spec = DirectoryString class Attribute(Sequence): _fields = [ ('type', ObjectIdentifier), ('values', SetOf, {'spec': Any}), ] class SetOfAttributes(SetOf): _child_spec = Attribute class SetOfExtensions(SetOf): _child_spec = Extensions class MicrosoftEnrollmentCSProvider(Sequence): _fields = [ ('keyspec', Integer), ('cspname', BMPString), # cryptographic service provider name ('signature', BitString), ] class SetOfMicrosoftEnrollmentCSProvider(SetOf): _child_spec = MicrosoftEnrollmentCSProvider class MicrosoftRequestClientInfo(Sequence): _fields = [ ('clientid', Integer), ('machinename', UTF8String), ('username', UTF8String), ('processname', UTF8String), ] class SetOfMicrosoftRequestClientInfo(SetOf): _child_spec = MicrosoftRequestClientInfo class CRIAttribute(Sequence): _fields = [ ('type', CSRAttributeType), ('values', Any), ] _oid_pair = ('type', 'values') _oid_specs = { 'challenge_password': SetOfDirectoryString, 'extended_certificate_attributes': SetOfAttributes, 'extension_request': SetOfExtensions, 'microsoft_enrollment_csp_provider': SetOfMicrosoftEnrollmentCSProvider, 'microsoft_os_version': SetOfDirectoryString, 'microsoft_request_client_info': SetOfMicrosoftRequestClientInfo, } class CRIAttributes(SetOf): _child_spec = CRIAttribute class CertificationRequestInfo(Sequence): _fields = [ ('version', Version), ('subject', Name), ('subject_pk_info', PublicKeyInfo), ('attributes', CRIAttributes, {'implicit': 0, 'optional': True}), ] class CertificationRequest(Sequence): _fields = [ ('certification_request_info', CertificationRequestInfo), ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetBitString), ] ================================================ FILE: libs/asn1crypto/keys.py ================================================ # coding: utf-8 """ ASN.1 type classes for public and private keys. Exports the following items: - DSAPrivateKey() - ECPrivateKey() - EncryptedPrivateKeyInfo() - PrivateKeyInfo() - PublicKeyInfo() - RSAPrivateKey() - RSAPublicKey() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function import hashlib import math from ._errors import unwrap, APIException from ._types import type_name, byte_cls from .algos import _ForceNullParameters, DigestAlgorithm, EncryptionAlgorithm, RSAESOAEPParams, RSASSAPSSParams from .core import ( Any, Asn1Value, BitString, Choice, Integer, IntegerOctetString, Null, ObjectIdentifier, OctetBitString, OctetString, ParsableOctetString, ParsableOctetBitString, Sequence, SequenceOf, SetOf, ) from .util import int_from_bytes, int_to_bytes class OtherPrimeInfo(Sequence): """ Source: https://tools.ietf.org/html/rfc3447#page-46 """ _fields = [ ('prime', Integer), ('exponent', Integer), ('coefficient', Integer), ] class OtherPrimeInfos(SequenceOf): """ Source: https://tools.ietf.org/html/rfc3447#page-46 """ _child_spec = OtherPrimeInfo class RSAPrivateKeyVersion(Integer): """ Original Name: Version Source: https://tools.ietf.org/html/rfc3447#page-45 """ _map = { 0: 'two-prime', 1: 'multi', } class RSAPrivateKey(Sequence): """ Source: https://tools.ietf.org/html/rfc3447#page-45 """ _fields = [ ('version', RSAPrivateKeyVersion), ('modulus', Integer), ('public_exponent', Integer), ('private_exponent', Integer), ('prime1', Integer), ('prime2', Integer), ('exponent1', Integer), ('exponent2', Integer), ('coefficient', Integer), ('other_prime_infos', OtherPrimeInfos, {'optional': True}) ] class RSAPublicKey(Sequence): """ Source: https://tools.ietf.org/html/rfc3447#page-44 """ _fields = [ ('modulus', Integer), ('public_exponent', Integer) ] class DSAPrivateKey(Sequence): """ The ASN.1 structure that OpenSSL uses to store a DSA private key that is not part of a PKCS#8 structure. Reversed engineered from english-language description on linked OpenSSL documentation page. Original Name: None Source: https://www.openssl.org/docs/apps/dsa.html """ _fields = [ ('version', Integer), ('p', Integer), ('q', Integer), ('g', Integer), ('public_key', Integer), ('private_key', Integer), ] class _ECPoint(): """ In both PublicKeyInfo and PrivateKeyInfo, the EC public key is a byte string that is encoded as a bit string. This class adds convenience methods for converting to and from the byte string to a pair of integers that are the X and Y coordinates. """ @classmethod def from_coords(cls, x, y): """ Creates an ECPoint object from the X and Y integer coordinates of the point :param x: The X coordinate, as an integer :param y: The Y coordinate, as an integer :return: An ECPoint object """ x_bytes = int(math.ceil(math.log(x, 2) / 8.0)) y_bytes = int(math.ceil(math.log(y, 2) / 8.0)) num_bytes = max(x_bytes, y_bytes) byte_string = b'\x04' byte_string += int_to_bytes(x, width=num_bytes) byte_string += int_to_bytes(y, width=num_bytes) return cls(byte_string) def to_coords(self): """ Returns the X and Y coordinates for this EC point, as native Python integers :return: A 2-element tuple containing integers (X, Y) """ data = self.native first_byte = data[0:1] # Uncompressed if first_byte == b'\x04': remaining = data[1:] field_len = len(remaining) // 2 x = int_from_bytes(remaining[0:field_len]) y = int_from_bytes(remaining[field_len:]) return (x, y) if first_byte not in set([b'\x02', b'\x03']): raise ValueError(unwrap( ''' Invalid EC public key - first byte is incorrect ''' )) raise ValueError(unwrap( ''' Compressed representations of EC public keys are not supported due to patent US6252960 ''' )) class ECPoint(OctetString, _ECPoint): pass class ECPointBitString(OctetBitString, _ECPoint): pass class SpecifiedECDomainVersion(Integer): """ Source: http://www.secg.org/sec1-v2.pdf page 104 """ _map = { 1: 'ecdpVer1', 2: 'ecdpVer2', 3: 'ecdpVer3', } class FieldType(ObjectIdentifier): """ Original Name: None Source: http://www.secg.org/sec1-v2.pdf page 101 """ _map = { '1.2.840.10045.1.1': 'prime_field', '1.2.840.10045.1.2': 'characteristic_two_field', } class CharacteristicTwoBasis(ObjectIdentifier): """ Original Name: None Source: http://www.secg.org/sec1-v2.pdf page 102 """ _map = { '1.2.840.10045.1.2.1.1': 'gn_basis', '1.2.840.10045.1.2.1.2': 'tp_basis', '1.2.840.10045.1.2.1.3': 'pp_basis', } class Pentanomial(Sequence): """ Source: http://www.secg.org/sec1-v2.pdf page 102 """ _fields = [ ('k1', Integer), ('k2', Integer), ('k3', Integer), ] class CharacteristicTwo(Sequence): """ Original Name: Characteristic-two Source: http://www.secg.org/sec1-v2.pdf page 101 """ _fields = [ ('m', Integer), ('basis', CharacteristicTwoBasis), ('parameters', Any), ] _oid_pair = ('basis', 'parameters') _oid_specs = { 'gn_basis': Null, 'tp_basis': Integer, 'pp_basis': Pentanomial, } class FieldID(Sequence): """ Source: http://www.secg.org/sec1-v2.pdf page 100 """ _fields = [ ('field_type', FieldType), ('parameters', Any), ] _oid_pair = ('field_type', 'parameters') _oid_specs = { 'prime_field': Integer, 'characteristic_two_field': CharacteristicTwo, } class Curve(Sequence): """ Source: http://www.secg.org/sec1-v2.pdf page 104 """ _fields = [ ('a', OctetString), ('b', OctetString), ('seed', OctetBitString, {'optional': True}), ] class SpecifiedECDomain(Sequence): """ Source: http://www.secg.org/sec1-v2.pdf page 103 """ _fields = [ ('version', SpecifiedECDomainVersion), ('field_id', FieldID), ('curve', Curve), ('base', ECPoint), ('order', Integer), ('cofactor', Integer, {'optional': True}), ('hash', DigestAlgorithm, {'optional': True}), ] class NamedCurve(ObjectIdentifier): """ Various named curves Original Name: None Source: https://tools.ietf.org/html/rfc3279#page-23, https://tools.ietf.org/html/rfc5480#page-5 """ _map = { # https://tools.ietf.org/html/rfc3279#page-23 '1.2.840.10045.3.0.1': 'c2pnb163v1', '1.2.840.10045.3.0.2': 'c2pnb163v2', '1.2.840.10045.3.0.3': 'c2pnb163v3', '1.2.840.10045.3.0.4': 'c2pnb176w1', '1.2.840.10045.3.0.5': 'c2tnb191v1', '1.2.840.10045.3.0.6': 'c2tnb191v2', '1.2.840.10045.3.0.7': 'c2tnb191v3', '1.2.840.10045.3.0.8': 'c2onb191v4', '1.2.840.10045.3.0.9': 'c2onb191v5', '1.2.840.10045.3.0.10': 'c2pnb208w1', '1.2.840.10045.3.0.11': 'c2tnb239v1', '1.2.840.10045.3.0.12': 'c2tnb239v2', '1.2.840.10045.3.0.13': 'c2tnb239v3', '1.2.840.10045.3.0.14': 'c2onb239v4', '1.2.840.10045.3.0.15': 'c2onb239v5', '1.2.840.10045.3.0.16': 'c2pnb272w1', '1.2.840.10045.3.0.17': 'c2pnb304w1', '1.2.840.10045.3.0.18': 'c2tnb359v1', '1.2.840.10045.3.0.19': 'c2pnb368w1', '1.2.840.10045.3.0.20': 'c2tnb431r1', '1.2.840.10045.3.1.2': 'prime192v2', '1.2.840.10045.3.1.3': 'prime192v3', '1.2.840.10045.3.1.4': 'prime239v1', '1.2.840.10045.3.1.5': 'prime239v2', '1.2.840.10045.3.1.6': 'prime239v3', # https://tools.ietf.org/html/rfc5480#page-5 # http://www.secg.org/SEC2-Ver-1.0.pdf '1.2.840.10045.3.1.1': 'secp192r1', '1.2.840.10045.3.1.7': 'secp256r1', '1.3.132.0.1': 'sect163k1', '1.3.132.0.2': 'sect163r1', '1.3.132.0.3': 'sect239k1', '1.3.132.0.4': 'sect113r1', '1.3.132.0.5': 'sect113r2', '1.3.132.0.6': 'secp112r1', '1.3.132.0.7': 'secp112r2', '1.3.132.0.8': 'secp160r1', '1.3.132.0.9': 'secp160k1', '1.3.132.0.10': 'secp256k1', '1.3.132.0.15': 'sect163r2', '1.3.132.0.16': 'sect283k1', '1.3.132.0.17': 'sect283r1', '1.3.132.0.22': 'sect131r1', '1.3.132.0.23': 'sect131r2', '1.3.132.0.24': 'sect193r1', '1.3.132.0.25': 'sect193r2', '1.3.132.0.26': 'sect233k1', '1.3.132.0.27': 'sect233r1', '1.3.132.0.28': 'secp128r1', '1.3.132.0.29': 'secp128r2', '1.3.132.0.30': 'secp160r2', '1.3.132.0.31': 'secp192k1', '1.3.132.0.32': 'secp224k1', '1.3.132.0.33': 'secp224r1', '1.3.132.0.34': 'secp384r1', '1.3.132.0.35': 'secp521r1', '1.3.132.0.36': 'sect409k1', '1.3.132.0.37': 'sect409r1', '1.3.132.0.38': 'sect571k1', '1.3.132.0.39': 'sect571r1', # https://tools.ietf.org/html/rfc5639#section-4.1 '1.3.36.3.3.2.8.1.1.1': 'brainpoolp160r1', '1.3.36.3.3.2.8.1.1.2': 'brainpoolp160t1', '1.3.36.3.3.2.8.1.1.3': 'brainpoolp192r1', '1.3.36.3.3.2.8.1.1.4': 'brainpoolp192t1', '1.3.36.3.3.2.8.1.1.5': 'brainpoolp224r1', '1.3.36.3.3.2.8.1.1.6': 'brainpoolp224t1', '1.3.36.3.3.2.8.1.1.7': 'brainpoolp256r1', '1.3.36.3.3.2.8.1.1.8': 'brainpoolp256t1', '1.3.36.3.3.2.8.1.1.9': 'brainpoolp320r1', '1.3.36.3.3.2.8.1.1.10': 'brainpoolp320t1', '1.3.36.3.3.2.8.1.1.11': 'brainpoolp384r1', '1.3.36.3.3.2.8.1.1.12': 'brainpoolp384t1', '1.3.36.3.3.2.8.1.1.13': 'brainpoolp512r1', '1.3.36.3.3.2.8.1.1.14': 'brainpoolp512t1', } _key_sizes = { # Order values used to compute these sourced from # http://cr.openjdk.java.net/~vinnie/7194075/webrev-3/src/share/classes/sun/security/ec/CurveDB.java.html '1.2.840.10045.3.0.1': 21, '1.2.840.10045.3.0.2': 21, '1.2.840.10045.3.0.3': 21, '1.2.840.10045.3.0.4': 21, '1.2.840.10045.3.0.5': 24, '1.2.840.10045.3.0.6': 24, '1.2.840.10045.3.0.7': 24, '1.2.840.10045.3.0.8': 24, '1.2.840.10045.3.0.9': 24, '1.2.840.10045.3.0.10': 25, '1.2.840.10045.3.0.11': 30, '1.2.840.10045.3.0.12': 30, '1.2.840.10045.3.0.13': 30, '1.2.840.10045.3.0.14': 30, '1.2.840.10045.3.0.15': 30, '1.2.840.10045.3.0.16': 33, '1.2.840.10045.3.0.17': 37, '1.2.840.10045.3.0.18': 45, '1.2.840.10045.3.0.19': 45, '1.2.840.10045.3.0.20': 53, '1.2.840.10045.3.1.2': 24, '1.2.840.10045.3.1.3': 24, '1.2.840.10045.3.1.4': 30, '1.2.840.10045.3.1.5': 30, '1.2.840.10045.3.1.6': 30, # Order values used to compute these sourced from # http://www.secg.org/SEC2-Ver-1.0.pdf # ceil(n.bit_length() / 8) '1.2.840.10045.3.1.1': 24, '1.2.840.10045.3.1.7': 32, '1.3.132.0.1': 21, '1.3.132.0.2': 21, '1.3.132.0.3': 30, '1.3.132.0.4': 15, '1.3.132.0.5': 15, '1.3.132.0.6': 14, '1.3.132.0.7': 14, '1.3.132.0.8': 21, '1.3.132.0.9': 21, '1.3.132.0.10': 32, '1.3.132.0.15': 21, '1.3.132.0.16': 36, '1.3.132.0.17': 36, '1.3.132.0.22': 17, '1.3.132.0.23': 17, '1.3.132.0.24': 25, '1.3.132.0.25': 25, '1.3.132.0.26': 29, '1.3.132.0.27': 30, '1.3.132.0.28': 16, '1.3.132.0.29': 16, '1.3.132.0.30': 21, '1.3.132.0.31': 24, '1.3.132.0.32': 29, '1.3.132.0.33': 28, '1.3.132.0.34': 48, '1.3.132.0.35': 66, '1.3.132.0.36': 51, '1.3.132.0.37': 52, '1.3.132.0.38': 72, '1.3.132.0.39': 72, # Order values used to compute these sourced from # https://tools.ietf.org/html/rfc5639#section-3 # ceil(q.bit_length() / 8) '1.3.36.3.3.2.8.1.1.1': 20, '1.3.36.3.3.2.8.1.1.2': 20, '1.3.36.3.3.2.8.1.1.3': 24, '1.3.36.3.3.2.8.1.1.4': 24, '1.3.36.3.3.2.8.1.1.5': 28, '1.3.36.3.3.2.8.1.1.6': 28, '1.3.36.3.3.2.8.1.1.7': 32, '1.3.36.3.3.2.8.1.1.8': 32, '1.3.36.3.3.2.8.1.1.9': 40, '1.3.36.3.3.2.8.1.1.10': 40, '1.3.36.3.3.2.8.1.1.11': 48, '1.3.36.3.3.2.8.1.1.12': 48, '1.3.36.3.3.2.8.1.1.13': 64, '1.3.36.3.3.2.8.1.1.14': 64, } @classmethod def register(cls, name, oid, key_size): """ Registers a new named elliptic curve that is not included in the default list of named curves :param name: A unicode string of the curve name :param oid: A unicode string of the dotted format OID :param key_size: An integer of the number of bytes the private key should be encoded to """ cls._map[oid] = name if cls._reverse_map is not None: cls._reverse_map[name] = oid cls._key_sizes[oid] = key_size class ECDomainParameters(Choice): """ Source: http://www.secg.org/sec1-v2.pdf page 102 """ _alternatives = [ ('specified', SpecifiedECDomain), ('named', NamedCurve), ('implicit_ca', Null), ] @property def key_size(self): if self.name == 'implicit_ca': raise ValueError(unwrap( ''' Unable to calculate key_size from ECDomainParameters that are implicitly defined by the CA key ''' )) if self.name == 'specified': order = self.chosen['order'].native return math.ceil(math.log(order, 2.0) / 8.0) oid = self.chosen.dotted if oid not in NamedCurve._key_sizes: raise ValueError(unwrap( ''' The asn1crypto.keys.NamedCurve %s does not have a registered key length, please call asn1crypto.keys.NamedCurve.register() ''', repr(oid) )) return NamedCurve._key_sizes[oid] class ECPrivateKeyVersion(Integer): """ Original Name: None Source: http://www.secg.org/sec1-v2.pdf page 108 """ _map = { 1: 'ecPrivkeyVer1', } class ECPrivateKey(Sequence): """ Source: http://www.secg.org/sec1-v2.pdf page 108 """ _fields = [ ('version', ECPrivateKeyVersion), ('private_key', IntegerOctetString), ('parameters', ECDomainParameters, {'explicit': 0, 'optional': True}), ('public_key', ECPointBitString, {'explicit': 1, 'optional': True}), ] # Ensures the key is set to the correct length when encoding _key_size = None # This is necessary to ensure the private_key IntegerOctetString is encoded properly def __setitem__(self, key, value): res = super(ECPrivateKey, self).__setitem__(key, value) if key == 'private_key': if self._key_size is None: # Infer the key_size from the existing private key if possible pkey_contents = self['private_key'].contents if isinstance(pkey_contents, byte_cls) and len(pkey_contents) > 1: self.set_key_size(len(self['private_key'].contents)) elif self._key_size is not None: self._update_key_size() elif key == 'parameters' and isinstance(self['parameters'], ECDomainParameters) and \ self['parameters'].name != 'implicit_ca': self.set_key_size(self['parameters'].key_size) return res def set_key_size(self, key_size): """ Sets the key_size to ensure the private key is encoded to the proper length :param key_size: An integer byte length to encode the private_key to """ self._key_size = key_size self._update_key_size() def _update_key_size(self): """ Ensure the private_key explicit encoding width is set """ if self._key_size is not None and isinstance(self['private_key'], IntegerOctetString): self['private_key'].set_encoded_width(self._key_size) class DSAParams(Sequence): """ Parameters for a DSA public or private key Original Name: Dss-Parms Source: https://tools.ietf.org/html/rfc3279#page-9 """ _fields = [ ('p', Integer), ('q', Integer), ('g', Integer), ] class Attribute(Sequence): """ Source: https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-X.501-198811-S!!PDF-E&type=items page 8 """ _fields = [ ('type', ObjectIdentifier), ('values', SetOf, {'spec': Any}), ] class Attributes(SetOf): """ Source: https://tools.ietf.org/html/rfc5208#page-3 """ _child_spec = Attribute class PrivateKeyAlgorithmId(ObjectIdentifier): """ These OIDs for various public keys are reused when storing private keys inside of a PKCS#8 structure Original Name: None Source: https://tools.ietf.org/html/rfc3279 """ _map = { # https://tools.ietf.org/html/rfc3279#page-19 '1.2.840.113549.1.1.1': 'rsa', # https://tools.ietf.org/html/rfc4055#page-8 '1.2.840.113549.1.1.10': 'rsassa_pss', # https://tools.ietf.org/html/rfc3279#page-18 '1.2.840.10040.4.1': 'dsa', # https://tools.ietf.org/html/rfc3279#page-13 '1.2.840.10045.2.1': 'ec', # https://tools.ietf.org/html/rfc8410#section-9 '1.3.101.110': 'x25519', '1.3.101.111': 'x448', '1.3.101.112': 'ed25519', '1.3.101.113': 'ed448', } class PrivateKeyAlgorithm(_ForceNullParameters, Sequence): """ Original Name: PrivateKeyAlgorithmIdentifier Source: https://tools.ietf.org/html/rfc5208#page-3 """ _fields = [ ('algorithm', PrivateKeyAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'dsa': DSAParams, 'ec': ECDomainParameters, 'rsassa_pss': RSASSAPSSParams, } class PrivateKeyInfo(Sequence): """ Source: https://tools.ietf.org/html/rfc5208#page-3 """ _fields = [ ('version', Integer), ('private_key_algorithm', PrivateKeyAlgorithm), ('private_key', ParsableOctetString), ('attributes', Attributes, {'implicit': 0, 'optional': True}), ] def _private_key_spec(self): algorithm = self['private_key_algorithm']['algorithm'].native return { 'rsa': RSAPrivateKey, 'rsassa_pss': RSAPrivateKey, 'dsa': Integer, 'ec': ECPrivateKey, # These should be treated as opaque octet strings according # to RFC 8410 'x25519': OctetString, 'x448': OctetString, 'ed25519': OctetString, 'ed448': OctetString, }[algorithm] _spec_callbacks = { 'private_key': _private_key_spec } _algorithm = None _bit_size = None _public_key = None _fingerprint = None @classmethod def wrap(cls, private_key, algorithm): """ Wraps a private key in a PrivateKeyInfo structure :param private_key: A byte string or Asn1Value object of the private key :param algorithm: A unicode string of "rsa", "dsa" or "ec" :return: A PrivateKeyInfo object """ if not isinstance(private_key, byte_cls) and not isinstance(private_key, Asn1Value): raise TypeError(unwrap( ''' private_key must be a byte string or Asn1Value, not %s ''', type_name(private_key) )) if algorithm == 'rsa' or algorithm == 'rsassa_pss': if not isinstance(private_key, RSAPrivateKey): private_key = RSAPrivateKey.load(private_key) params = Null() elif algorithm == 'dsa': if not isinstance(private_key, DSAPrivateKey): private_key = DSAPrivateKey.load(private_key) params = DSAParams() params['p'] = private_key['p'] params['q'] = private_key['q'] params['g'] = private_key['g'] public_key = private_key['public_key'] private_key = private_key['private_key'] elif algorithm == 'ec': if not isinstance(private_key, ECPrivateKey): private_key = ECPrivateKey.load(private_key) else: private_key = private_key.copy() params = private_key['parameters'] del private_key['parameters'] else: raise ValueError(unwrap( ''' algorithm must be one of "rsa", "dsa", "ec", not %s ''', repr(algorithm) )) private_key_algo = PrivateKeyAlgorithm() private_key_algo['algorithm'] = PrivateKeyAlgorithmId(algorithm) private_key_algo['parameters'] = params container = cls() container._algorithm = algorithm container['version'] = Integer(0) container['private_key_algorithm'] = private_key_algo container['private_key'] = private_key # Here we save the DSA public key if possible since it is not contained # within the PKCS#8 structure for a DSA key if algorithm == 'dsa': container._public_key = public_key return container # This is necessary to ensure any contained ECPrivateKey is the # correct size def __setitem__(self, key, value): res = super(PrivateKeyInfo, self).__setitem__(key, value) algorithm = self['private_key_algorithm'] # When possible, use the parameter info to make sure the private key encoding # retains any necessary leading bytes, instead of them being dropped if (key == 'private_key_algorithm' or key == 'private_key') and \ algorithm['algorithm'].native == 'ec' and \ isinstance(algorithm['parameters'], ECDomainParameters) and \ algorithm['parameters'].name != 'implicit_ca' and \ isinstance(self['private_key'], ParsableOctetString) and \ isinstance(self['private_key'].parsed, ECPrivateKey): self['private_key'].parsed.set_key_size(algorithm['parameters'].key_size) return res def unwrap(self): """ Unwraps the private key into an RSAPrivateKey, DSAPrivateKey or ECPrivateKey object :return: An RSAPrivateKey, DSAPrivateKey or ECPrivateKey object """ raise APIException( 'asn1crypto.keys.PrivateKeyInfo().unwrap() has been removed, ' 'please use oscrypto.asymmetric.PrivateKey().unwrap() instead') @property def curve(self): """ Returns information about the curve used for an EC key :raises: ValueError - when the key is not an EC key :return: A two-element tuple, with the first element being a unicode string of "implicit_ca", "specified" or "named". If the first element is "implicit_ca", the second is None. If "specified", the second is an OrderedDict that is the native version of SpecifiedECDomain. If "named", the second is a unicode string of the curve name. """ if self.algorithm != 'ec': raise ValueError(unwrap( ''' Only EC keys have a curve, this key is %s ''', self.algorithm.upper() )) params = self['private_key_algorithm']['parameters'] chosen = params.chosen if params.name == 'implicit_ca': value = None else: value = chosen.native return (params.name, value) @property def hash_algo(self): """ Returns the name of the family of hash algorithms used to generate a DSA key :raises: ValueError - when the key is not a DSA key :return: A unicode string of "sha1" or "sha2" """ if self.algorithm != 'dsa': raise ValueError(unwrap( ''' Only DSA keys are generated using a hash algorithm, this key is %s ''', self.algorithm.upper() )) byte_len = math.log(self['private_key_algorithm']['parameters']['q'].native, 2) / 8 return 'sha1' if byte_len <= 20 else 'sha2' @property def algorithm(self): """ :return: A unicode string of "rsa", "rsassa_pss", "dsa" or "ec" """ if self._algorithm is None: self._algorithm = self['private_key_algorithm']['algorithm'].native return self._algorithm @property def bit_size(self): """ :return: The bit size of the private key, as an integer """ if self._bit_size is None: if self.algorithm == 'rsa' or self.algorithm == 'rsassa_pss': prime = self['private_key'].parsed['modulus'].native elif self.algorithm == 'dsa': prime = self['private_key_algorithm']['parameters']['p'].native elif self.algorithm == 'ec': prime = self['private_key'].parsed['private_key'].native self._bit_size = int(math.ceil(math.log(prime, 2))) modulus = self._bit_size % 8 if modulus != 0: self._bit_size += 8 - modulus return self._bit_size @property def byte_size(self): """ :return: The byte size of the private key, as an integer """ return int(math.ceil(self.bit_size / 8)) @property def public_key(self): """ :return: If an RSA key, an RSAPublicKey object. If a DSA key, an Integer object. If an EC key, an ECPointBitString object. """ raise APIException( 'asn1crypto.keys.PrivateKeyInfo().public_key has been removed, ' 'please use oscrypto.asymmetric.PrivateKey().public_key.unwrap() instead') @property def public_key_info(self): """ :return: A PublicKeyInfo object derived from this private key. """ raise APIException( 'asn1crypto.keys.PrivateKeyInfo().public_key_info has been removed, ' 'please use oscrypto.asymmetric.PrivateKey().public_key.asn1 instead') @property def fingerprint(self): """ Creates a fingerprint that can be compared with a public key to see if the two form a pair. This fingerprint is not compatible with fingerprints generated by any other software. :return: A byte string that is a sha256 hash of selected components (based on the key type) """ raise APIException( 'asn1crypto.keys.PrivateKeyInfo().fingerprint has been removed, ' 'please use oscrypto.asymmetric.PrivateKey().fingerprint instead') class EncryptedPrivateKeyInfo(Sequence): """ Source: https://tools.ietf.org/html/rfc5208#page-4 """ _fields = [ ('encryption_algorithm', EncryptionAlgorithm), ('encrypted_data', OctetString), ] # These structures are from https://tools.ietf.org/html/rfc3279 class ValidationParms(Sequence): """ Source: https://tools.ietf.org/html/rfc3279#page-10 """ _fields = [ ('seed', BitString), ('pgen_counter', Integer), ] class DomainParameters(Sequence): """ Source: https://tools.ietf.org/html/rfc3279#page-10 """ _fields = [ ('p', Integer), ('g', Integer), ('q', Integer), ('j', Integer, {'optional': True}), ('validation_params', ValidationParms, {'optional': True}), ] class PublicKeyAlgorithmId(ObjectIdentifier): """ Original Name: None Source: https://tools.ietf.org/html/rfc3279 """ _map = { # https://tools.ietf.org/html/rfc3279#page-19 '1.2.840.113549.1.1.1': 'rsa', # https://tools.ietf.org/html/rfc3447#page-47 '1.2.840.113549.1.1.7': 'rsaes_oaep', # https://tools.ietf.org/html/rfc4055#page-8 '1.2.840.113549.1.1.10': 'rsassa_pss', # https://tools.ietf.org/html/rfc3279#page-18 '1.2.840.10040.4.1': 'dsa', # https://tools.ietf.org/html/rfc3279#page-13 '1.2.840.10045.2.1': 'ec', # https://tools.ietf.org/html/rfc3279#page-10 '1.2.840.10046.2.1': 'dh', # https://tools.ietf.org/html/rfc8410#section-9 '1.3.101.110': 'x25519', '1.3.101.111': 'x448', '1.3.101.112': 'ed25519', '1.3.101.113': 'ed448', } class PublicKeyAlgorithm(_ForceNullParameters, Sequence): """ Original Name: AlgorithmIdentifier Source: https://tools.ietf.org/html/rfc5280#page-18 """ _fields = [ ('algorithm', PublicKeyAlgorithmId), ('parameters', Any, {'optional': True}), ] _oid_pair = ('algorithm', 'parameters') _oid_specs = { 'dsa': DSAParams, 'ec': ECDomainParameters, 'dh': DomainParameters, 'rsaes_oaep': RSAESOAEPParams, 'rsassa_pss': RSASSAPSSParams, } class PublicKeyInfo(Sequence): """ Original Name: SubjectPublicKeyInfo Source: https://tools.ietf.org/html/rfc5280#page-17 """ _fields = [ ('algorithm', PublicKeyAlgorithm), ('public_key', ParsableOctetBitString), ] def _public_key_spec(self): algorithm = self['algorithm']['algorithm'].native return { 'rsa': RSAPublicKey, 'rsaes_oaep': RSAPublicKey, 'rsassa_pss': RSAPublicKey, 'dsa': Integer, # We override the field spec with ECPoint so that users can easily # decompose the byte string into the constituent X and Y coords 'ec': (ECPointBitString, None), 'dh': Integer, # These should be treated as opaque bit strings according # to RFC 8410, and need not even be valid ASN.1 'x25519': (OctetBitString, None), 'x448': (OctetBitString, None), 'ed25519': (OctetBitString, None), 'ed448': (OctetBitString, None), }[algorithm] _spec_callbacks = { 'public_key': _public_key_spec } _algorithm = None _bit_size = None _fingerprint = None _sha1 = None _sha256 = None @classmethod def wrap(cls, public_key, algorithm): """ Wraps a public key in a PublicKeyInfo structure :param public_key: A byte string or Asn1Value object of the public key :param algorithm: A unicode string of "rsa" :return: A PublicKeyInfo object """ if not isinstance(public_key, byte_cls) and not isinstance(public_key, Asn1Value): raise TypeError(unwrap( ''' public_key must be a byte string or Asn1Value, not %s ''', type_name(public_key) )) if algorithm != 'rsa' and algorithm != 'rsassa_pss': raise ValueError(unwrap( ''' algorithm must "rsa", not %s ''', repr(algorithm) )) algo = PublicKeyAlgorithm() algo['algorithm'] = PublicKeyAlgorithmId(algorithm) algo['parameters'] = Null() container = cls() container['algorithm'] = algo if isinstance(public_key, Asn1Value): public_key = public_key.untag().dump() container['public_key'] = ParsableOctetBitString(public_key) return container def unwrap(self): """ Unwraps an RSA public key into an RSAPublicKey object. Does not support DSA or EC public keys since they do not have an unwrapped form. :return: An RSAPublicKey object """ raise APIException( 'asn1crypto.keys.PublicKeyInfo().unwrap() has been removed, ' 'please use oscrypto.asymmetric.PublicKey().unwrap() instead') @property def curve(self): """ Returns information about the curve used for an EC key :raises: ValueError - when the key is not an EC key :return: A two-element tuple, with the first element being a unicode string of "implicit_ca", "specified" or "named". If the first element is "implicit_ca", the second is None. If "specified", the second is an OrderedDict that is the native version of SpecifiedECDomain. If "named", the second is a unicode string of the curve name. """ if self.algorithm != 'ec': raise ValueError(unwrap( ''' Only EC keys have a curve, this key is %s ''', self.algorithm.upper() )) params = self['algorithm']['parameters'] chosen = params.chosen if params.name == 'implicit_ca': value = None else: value = chosen.native return (params.name, value) @property def hash_algo(self): """ Returns the name of the family of hash algorithms used to generate a DSA key :raises: ValueError - when the key is not a DSA key :return: A unicode string of "sha1" or "sha2" or None if no parameters are present """ if self.algorithm != 'dsa': raise ValueError(unwrap( ''' Only DSA keys are generated using a hash algorithm, this key is %s ''', self.algorithm.upper() )) parameters = self['algorithm']['parameters'] if parameters.native is None: return None byte_len = math.log(parameters['q'].native, 2) / 8 return 'sha1' if byte_len <= 20 else 'sha2' @property def algorithm(self): """ :return: A unicode string of "rsa", "rsassa_pss", "dsa" or "ec" """ if self._algorithm is None: self._algorithm = self['algorithm']['algorithm'].native return self._algorithm @property def bit_size(self): """ :return: The bit size of the public key, as an integer """ if self._bit_size is None: if self.algorithm == 'ec': self._bit_size = int(((len(self['public_key'].native) - 1) / 2) * 8) else: if self.algorithm == 'rsa' or self.algorithm == 'rsassa_pss': prime = self['public_key'].parsed['modulus'].native elif self.algorithm == 'dsa': prime = self['algorithm']['parameters']['p'].native self._bit_size = int(math.ceil(math.log(prime, 2))) modulus = self._bit_size % 8 if modulus != 0: self._bit_size += 8 - modulus return self._bit_size @property def byte_size(self): """ :return: The byte size of the public key, as an integer """ return int(math.ceil(self.bit_size / 8)) @property def sha1(self): """ :return: The SHA1 hash of the DER-encoded bytes of this public key info """ if self._sha1 is None: self._sha1 = hashlib.sha1(byte_cls(self['public_key'])).digest() return self._sha1 @property def sha256(self): """ :return: The SHA-256 hash of the DER-encoded bytes of this public key info """ if self._sha256 is None: self._sha256 = hashlib.sha256(byte_cls(self['public_key'])).digest() return self._sha256 @property def fingerprint(self): """ Creates a fingerprint that can be compared with a private key to see if the two form a pair. This fingerprint is not compatible with fingerprints generated by any other software. :return: A byte string that is a sha256 hash of selected components (based on the key type) """ raise APIException( 'asn1crypto.keys.PublicKeyInfo().fingerprint has been removed, ' 'please use oscrypto.asymmetric.PublicKey().fingerprint instead') ================================================ FILE: libs/asn1crypto/ocsp.py ================================================ # coding: utf-8 """ ASN.1 type classes for the online certificate status protocol (OCSP). Exports the following items: - OCSPRequest() - OCSPResponse() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function from ._errors import unwrap from .algos import DigestAlgorithm, SignedDigestAlgorithm from .core import ( Boolean, Choice, Enumerated, GeneralizedTime, IA5String, Integer, Null, ObjectIdentifier, OctetBitString, OctetString, ParsableOctetString, Sequence, SequenceOf, ) from .crl import AuthorityInfoAccessSyntax, CRLReason from .keys import PublicKeyAlgorithm from .x509 import Certificate, GeneralName, GeneralNames, Name # The structures in this file are taken from https://tools.ietf.org/html/rfc6960 class Version(Integer): _map = { 0: 'v1' } class CertId(Sequence): _fields = [ ('hash_algorithm', DigestAlgorithm), ('issuer_name_hash', OctetString), ('issuer_key_hash', OctetString), ('serial_number', Integer), ] class ServiceLocator(Sequence): _fields = [ ('issuer', Name), ('locator', AuthorityInfoAccessSyntax), ] class RequestExtensionId(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.48.1.7': 'service_locator', } class RequestExtension(Sequence): _fields = [ ('extn_id', RequestExtensionId), ('critical', Boolean, {'default': False}), ('extn_value', ParsableOctetString), ] _oid_pair = ('extn_id', 'extn_value') _oid_specs = { 'service_locator': ServiceLocator, } class RequestExtensions(SequenceOf): _child_spec = RequestExtension class Request(Sequence): _fields = [ ('req_cert', CertId), ('single_request_extensions', RequestExtensions, {'explicit': 0, 'optional': True}), ] _processed_extensions = False _critical_extensions = None _service_locator_value = None def _set_extensions(self): """ Sets common named extensions to private attributes and creates a list of critical extensions """ self._critical_extensions = set() for extension in self['single_request_extensions']: name = extension['extn_id'].native attribute_name = '_%s_value' % name if hasattr(self, attribute_name): setattr(self, attribute_name, extension['extn_value'].parsed) if extension['critical'].native: self._critical_extensions.add(name) self._processed_extensions = True @property def critical_extensions(self): """ Returns a set of the names (or OID if not a known extension) of the extensions marked as critical :return: A set of unicode strings """ if not self._processed_extensions: self._set_extensions() return self._critical_extensions @property def service_locator_value(self): """ This extension is used when communicating with an OCSP responder that acts as a proxy for OCSP requests :return: None or a ServiceLocator object """ if self._processed_extensions is False: self._set_extensions() return self._service_locator_value class Requests(SequenceOf): _child_spec = Request class ResponseType(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.48.1.1': 'basic_ocsp_response', } class AcceptableResponses(SequenceOf): _child_spec = ResponseType class PreferredSignatureAlgorithm(Sequence): _fields = [ ('sig_identifier', SignedDigestAlgorithm), ('cert_identifier', PublicKeyAlgorithm, {'optional': True}), ] class PreferredSignatureAlgorithms(SequenceOf): _child_spec = PreferredSignatureAlgorithm class TBSRequestExtensionId(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.48.1.2': 'nonce', '1.3.6.1.5.5.7.48.1.4': 'acceptable_responses', '1.3.6.1.5.5.7.48.1.8': 'preferred_signature_algorithms', } class TBSRequestExtension(Sequence): _fields = [ ('extn_id', TBSRequestExtensionId), ('critical', Boolean, {'default': False}), ('extn_value', ParsableOctetString), ] _oid_pair = ('extn_id', 'extn_value') _oid_specs = { 'nonce': OctetString, 'acceptable_responses': AcceptableResponses, 'preferred_signature_algorithms': PreferredSignatureAlgorithms, } class TBSRequestExtensions(SequenceOf): _child_spec = TBSRequestExtension class TBSRequest(Sequence): _fields = [ ('version', Version, {'explicit': 0, 'default': 'v1'}), ('requestor_name', GeneralName, {'explicit': 1, 'optional': True}), ('request_list', Requests), ('request_extensions', TBSRequestExtensions, {'explicit': 2, 'optional': True}), ] class Certificates(SequenceOf): _child_spec = Certificate class Signature(Sequence): _fields = [ ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetBitString), ('certs', Certificates, {'explicit': 0, 'optional': True}), ] class OCSPRequest(Sequence): _fields = [ ('tbs_request', TBSRequest), ('optional_signature', Signature, {'explicit': 0, 'optional': True}), ] _processed_extensions = False _critical_extensions = None _nonce_value = None _acceptable_responses_value = None _preferred_signature_algorithms_value = None def _set_extensions(self): """ Sets common named extensions to private attributes and creates a list of critical extensions """ self._critical_extensions = set() for extension in self['tbs_request']['request_extensions']: name = extension['extn_id'].native attribute_name = '_%s_value' % name if hasattr(self, attribute_name): setattr(self, attribute_name, extension['extn_value'].parsed) if extension['critical'].native: self._critical_extensions.add(name) self._processed_extensions = True @property def critical_extensions(self): """ Returns a set of the names (or OID if not a known extension) of the extensions marked as critical :return: A set of unicode strings """ if not self._processed_extensions: self._set_extensions() return self._critical_extensions @property def nonce_value(self): """ This extension is used to prevent replay attacks by including a unique, random value with each request/response pair :return: None or an OctetString object """ if self._processed_extensions is False: self._set_extensions() return self._nonce_value @property def acceptable_responses_value(self): """ This extension is used to allow the client and server to communicate with alternative response formats other than just basic_ocsp_response, although no other formats are defined in the standard. :return: None or an AcceptableResponses object """ if self._processed_extensions is False: self._set_extensions() return self._acceptable_responses_value @property def preferred_signature_algorithms_value(self): """ This extension is used by the client to define what signature algorithms are preferred, including both the hash algorithm and the public key algorithm, with a level of detail down to even the public key algorithm parameters, such as curve name. :return: None or a PreferredSignatureAlgorithms object """ if self._processed_extensions is False: self._set_extensions() return self._preferred_signature_algorithms_value class OCSPResponseStatus(Enumerated): _map = { 0: 'successful', 1: 'malformed_request', 2: 'internal_error', 3: 'try_later', 5: 'sign_required', 6: 'unauthorized', } class ResponderId(Choice): _alternatives = [ ('by_name', Name, {'explicit': 1}), ('by_key', OctetString, {'explicit': 2}), ] # Custom class to return a meaningful .native attribute from CertStatus() class StatusGood(Null): def set(self, value): """ Sets the value of the object :param value: None or 'good' """ if value is not None and value != 'good' and not isinstance(value, Null): raise ValueError(unwrap( ''' value must be one of None, "good", not %s ''', repr(value) )) self.contents = b'' @property def native(self): return 'good' # Custom class to return a meaningful .native attribute from CertStatus() class StatusUnknown(Null): def set(self, value): """ Sets the value of the object :param value: None or 'unknown' """ if value is not None and value != 'unknown' and not isinstance(value, Null): raise ValueError(unwrap( ''' value must be one of None, "unknown", not %s ''', repr(value) )) self.contents = b'' @property def native(self): return 'unknown' class RevokedInfo(Sequence): _fields = [ ('revocation_time', GeneralizedTime), ('revocation_reason', CRLReason, {'explicit': 0, 'optional': True}), ] class CertStatus(Choice): _alternatives = [ ('good', StatusGood, {'implicit': 0}), ('revoked', RevokedInfo, {'implicit': 1}), ('unknown', StatusUnknown, {'implicit': 2}), ] class CrlId(Sequence): _fields = [ ('crl_url', IA5String, {'explicit': 0, 'optional': True}), ('crl_num', Integer, {'explicit': 1, 'optional': True}), ('crl_time', GeneralizedTime, {'explicit': 2, 'optional': True}), ] class SingleResponseExtensionId(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.48.1.3': 'crl', '1.3.6.1.5.5.7.48.1.6': 'archive_cutoff', # These are CRLEntryExtension values from # https://tools.ietf.org/html/rfc5280 '2.5.29.21': 'crl_reason', '2.5.29.24': 'invalidity_date', '2.5.29.29': 'certificate_issuer', # https://tools.ietf.org/html/rfc6962.html#page-13 '1.3.6.1.4.1.11129.2.4.5': 'signed_certificate_timestamp_list', } class SingleResponseExtension(Sequence): _fields = [ ('extn_id', SingleResponseExtensionId), ('critical', Boolean, {'default': False}), ('extn_value', ParsableOctetString), ] _oid_pair = ('extn_id', 'extn_value') _oid_specs = { 'crl': CrlId, 'archive_cutoff': GeneralizedTime, 'crl_reason': CRLReason, 'invalidity_date': GeneralizedTime, 'certificate_issuer': GeneralNames, 'signed_certificate_timestamp_list': OctetString, } class SingleResponseExtensions(SequenceOf): _child_spec = SingleResponseExtension class SingleResponse(Sequence): _fields = [ ('cert_id', CertId), ('cert_status', CertStatus), ('this_update', GeneralizedTime), ('next_update', GeneralizedTime, {'explicit': 0, 'optional': True}), ('single_extensions', SingleResponseExtensions, {'explicit': 1, 'optional': True}), ] _processed_extensions = False _critical_extensions = None _crl_value = None _archive_cutoff_value = None _crl_reason_value = None _invalidity_date_value = None _certificate_issuer_value = None def _set_extensions(self): """ Sets common named extensions to private attributes and creates a list of critical extensions """ self._critical_extensions = set() for extension in self['single_extensions']: name = extension['extn_id'].native attribute_name = '_%s_value' % name if hasattr(self, attribute_name): setattr(self, attribute_name, extension['extn_value'].parsed) if extension['critical'].native: self._critical_extensions.add(name) self._processed_extensions = True @property def critical_extensions(self): """ Returns a set of the names (or OID if not a known extension) of the extensions marked as critical :return: A set of unicode strings """ if not self._processed_extensions: self._set_extensions() return self._critical_extensions @property def crl_value(self): """ This extension is used to locate the CRL that a certificate's revocation is contained within. :return: None or a CrlId object """ if self._processed_extensions is False: self._set_extensions() return self._crl_value @property def archive_cutoff_value(self): """ This extension is used to indicate the date at which an archived (historical) certificate status entry will no longer be available. :return: None or a GeneralizedTime object """ if self._processed_extensions is False: self._set_extensions() return self._archive_cutoff_value @property def crl_reason_value(self): """ This extension indicates the reason that a certificate was revoked. :return: None or a CRLReason object """ if self._processed_extensions is False: self._set_extensions() return self._crl_reason_value @property def invalidity_date_value(self): """ This extension indicates the suspected date/time the private key was compromised or the certificate became invalid. This would usually be before the revocation date, which is when the CA processed the revocation. :return: None or a GeneralizedTime object """ if self._processed_extensions is False: self._set_extensions() return self._invalidity_date_value @property def certificate_issuer_value(self): """ This extension indicates the issuer of the certificate in question. :return: None or an x509.GeneralNames object """ if self._processed_extensions is False: self._set_extensions() return self._certificate_issuer_value class Responses(SequenceOf): _child_spec = SingleResponse class ResponseDataExtensionId(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.48.1.2': 'nonce', '1.3.6.1.5.5.7.48.1.9': 'extended_revoke', } class ResponseDataExtension(Sequence): _fields = [ ('extn_id', ResponseDataExtensionId), ('critical', Boolean, {'default': False}), ('extn_value', ParsableOctetString), ] _oid_pair = ('extn_id', 'extn_value') _oid_specs = { 'nonce': OctetString, 'extended_revoke': Null, } class ResponseDataExtensions(SequenceOf): _child_spec = ResponseDataExtension class ResponseData(Sequence): _fields = [ ('version', Version, {'explicit': 0, 'default': 'v1'}), ('responder_id', ResponderId), ('produced_at', GeneralizedTime), ('responses', Responses), ('response_extensions', ResponseDataExtensions, {'explicit': 1, 'optional': True}), ] class BasicOCSPResponse(Sequence): _fields = [ ('tbs_response_data', ResponseData), ('signature_algorithm', SignedDigestAlgorithm), ('signature', OctetBitString), ('certs', Certificates, {'explicit': 0, 'optional': True}), ] class ResponseBytes(Sequence): _fields = [ ('response_type', ResponseType), ('response', ParsableOctetString), ] _oid_pair = ('response_type', 'response') _oid_specs = { 'basic_ocsp_response': BasicOCSPResponse, } class OCSPResponse(Sequence): _fields = [ ('response_status', OCSPResponseStatus), ('response_bytes', ResponseBytes, {'explicit': 0, 'optional': True}), ] _processed_extensions = False _critical_extensions = None _nonce_value = None _extended_revoke_value = None def _set_extensions(self): """ Sets common named extensions to private attributes and creates a list of critical extensions """ self._critical_extensions = set() for extension in self['response_bytes']['response'].parsed['tbs_response_data']['response_extensions']: name = extension['extn_id'].native attribute_name = '_%s_value' % name if hasattr(self, attribute_name): setattr(self, attribute_name, extension['extn_value'].parsed) if extension['critical'].native: self._critical_extensions.add(name) self._processed_extensions = True @property def critical_extensions(self): """ Returns a set of the names (or OID if not a known extension) of the extensions marked as critical :return: A set of unicode strings """ if not self._processed_extensions: self._set_extensions() return self._critical_extensions @property def nonce_value(self): """ This extension is used to prevent replay attacks on the request/response exchange :return: None or an OctetString object """ if self._processed_extensions is False: self._set_extensions() return self._nonce_value @property def extended_revoke_value(self): """ This extension is used to signal that the responder will return a "revoked" status for non-issued certificates. :return: None or a Null object (if present) """ if self._processed_extensions is False: self._set_extensions() return self._extended_revoke_value @property def basic_ocsp_response(self): """ A shortcut into the BasicOCSPResponse sequence :return: None or an asn1crypto.ocsp.BasicOCSPResponse object """ return self['response_bytes']['response'].parsed @property def response_data(self): """ A shortcut into the parsed, ResponseData sequence :return: None or an asn1crypto.ocsp.ResponseData object """ return self['response_bytes']['response'].parsed['tbs_response_data'] ================================================ FILE: libs/asn1crypto/parser.py ================================================ # coding: utf-8 """ Functions for parsing and dumping using the ASN.1 DER encoding. Exports the following items: - emit() - parse() - peek() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function import sys from ._types import byte_cls, chr_cls, type_name from .util import int_from_bytes, int_to_bytes _PY2 = sys.version_info <= (3,) _INSUFFICIENT_DATA_MESSAGE = 'Insufficient data - %s bytes requested but only %s available' _MAX_DEPTH = 10 def emit(class_, method, tag, contents): """ Constructs a byte string of an ASN.1 DER-encoded value This is typically not useful. Instead, use one of the standard classes from asn1crypto.core, or construct a new class with specific fields, and call the .dump() method. :param class_: An integer ASN.1 class value: 0 (universal), 1 (application), 2 (context), 3 (private) :param method: An integer ASN.1 method value: 0 (primitive), 1 (constructed) :param tag: An integer ASN.1 tag value :param contents: A byte string of the encoded byte contents :return: A byte string of the ASN.1 DER value (header and contents) """ if not isinstance(class_, int): raise TypeError('class_ must be an integer, not %s' % type_name(class_)) if class_ < 0 or class_ > 3: raise ValueError('class_ must be one of 0, 1, 2 or 3, not %s' % class_) if not isinstance(method, int): raise TypeError('method must be an integer, not %s' % type_name(method)) if method < 0 or method > 1: raise ValueError('method must be 0 or 1, not %s' % method) if not isinstance(tag, int): raise TypeError('tag must be an integer, not %s' % type_name(tag)) if tag < 0: raise ValueError('tag must be greater than zero, not %s' % tag) if not isinstance(contents, byte_cls): raise TypeError('contents must be a byte string, not %s' % type_name(contents)) return _dump_header(class_, method, tag, contents) + contents def parse(contents, strict=False): """ Parses a byte string of ASN.1 BER/DER-encoded data. This is typically not useful. Instead, use one of the standard classes from asn1crypto.core, or construct a new class with specific fields, and call the .load() class method. :param contents: A byte string of BER/DER-encoded data :param strict: A boolean indicating if trailing data should be forbidden - if so, a ValueError will be raised when trailing data exists :raises: ValueError - when the contents do not contain an ASN.1 header or are truncated in some way TypeError - when contents is not a byte string :return: A 6-element tuple: - 0: integer class (0 to 3) - 1: integer method - 2: integer tag - 3: byte string header - 4: byte string content - 5: byte string trailer """ if not isinstance(contents, byte_cls): raise TypeError('contents must be a byte string, not %s' % type_name(contents)) contents_len = len(contents) info, consumed = _parse(contents, contents_len) if strict and consumed != contents_len: raise ValueError('Extra data - %d bytes of trailing data were provided' % (contents_len - consumed)) return info def peek(contents): """ Parses a byte string of ASN.1 BER/DER-encoded data to find the length This is typically used to look into an encoded value to see how long the next chunk of ASN.1-encoded data is. Primarily it is useful when a value is a concatenation of multiple values. :param contents: A byte string of BER/DER-encoded data :raises: ValueError - when the contents do not contain an ASN.1 header or are truncated in some way TypeError - when contents is not a byte string :return: An integer with the number of bytes occupied by the ASN.1 value """ if not isinstance(contents, byte_cls): raise TypeError('contents must be a byte string, not %s' % type_name(contents)) info, consumed = _parse(contents, len(contents)) return consumed def _parse(encoded_data, data_len, pointer=0, lengths_only=False, depth=0): """ Parses a byte string into component parts :param encoded_data: A byte string that contains BER-encoded data :param data_len: The integer length of the encoded data :param pointer: The index in the byte string to parse from :param lengths_only: A boolean to cause the call to return a 2-element tuple of the integer number of bytes in the header and the integer number of bytes in the contents. Internal use only. :param depth: The recursion depth when evaluating indefinite-length encoding. :return: A 2-element tuple: - 0: A tuple of (class_, method, tag, header, content, trailer) - 1: An integer indicating how many bytes were consumed """ if depth > _MAX_DEPTH: raise ValueError('Indefinite-length recursion limit exceeded') start = pointer if data_len < pointer + 1: raise ValueError(_INSUFFICIENT_DATA_MESSAGE % (1, data_len - pointer)) first_octet = ord(encoded_data[pointer]) if _PY2 else encoded_data[pointer] pointer += 1 tag = first_octet & 31 constructed = (first_octet >> 5) & 1 # Base 128 length using 8th bit as continuation indicator if tag == 31: tag = 0 while True: if data_len < pointer + 1: raise ValueError(_INSUFFICIENT_DATA_MESSAGE % (1, data_len - pointer)) num = ord(encoded_data[pointer]) if _PY2 else encoded_data[pointer] pointer += 1 if num == 0x80 and tag == 0: raise ValueError('Non-minimal tag encoding') tag *= 128 tag += num & 127 if num >> 7 == 0: break if tag < 31: raise ValueError('Non-minimal tag encoding') if data_len < pointer + 1: raise ValueError(_INSUFFICIENT_DATA_MESSAGE % (1, data_len - pointer)) length_octet = ord(encoded_data[pointer]) if _PY2 else encoded_data[pointer] pointer += 1 trailer = b'' if length_octet >> 7 == 0: contents_end = pointer + (length_octet & 127) else: length_octets = length_octet & 127 if length_octets: if data_len < pointer + length_octets: raise ValueError(_INSUFFICIENT_DATA_MESSAGE % (length_octets, data_len - pointer)) pointer += length_octets contents_end = pointer + int_from_bytes(encoded_data[pointer - length_octets:pointer], signed=False) else: # To properly parse indefinite length values, we need to scan forward # parsing headers until we find a value with a length of zero. If we # just scanned looking for \x00\x00, nested indefinite length values # would not work. if not constructed: raise ValueError('Indefinite-length element must be constructed') contents_end = pointer while data_len < contents_end + 2 or encoded_data[contents_end:contents_end+2] != b'\x00\x00': _, contents_end = _parse(encoded_data, data_len, contents_end, lengths_only=True, depth=depth+1) contents_end += 2 trailer = b'\x00\x00' if contents_end > data_len: raise ValueError(_INSUFFICIENT_DATA_MESSAGE % (contents_end - pointer, data_len - pointer)) if lengths_only: return (pointer, contents_end) return ( ( first_octet >> 6, constructed, tag, encoded_data[start:pointer], encoded_data[pointer:contents_end-len(trailer)], trailer ), contents_end ) def _dump_header(class_, method, tag, contents): """ Constructs the header bytes for an ASN.1 object :param class_: An integer ASN.1 class value: 0 (universal), 1 (application), 2 (context), 3 (private) :param method: An integer ASN.1 method value: 0 (primitive), 1 (constructed) :param tag: An integer ASN.1 tag value :param contents: A byte string of the encoded byte contents :return: A byte string of the ASN.1 DER header """ header = b'' id_num = 0 id_num |= class_ << 6 id_num |= method << 5 if tag >= 31: cont_bit = 0 while tag > 0: header = chr_cls(cont_bit | (tag & 0x7f)) + header if not cont_bit: cont_bit = 0x80 tag = tag >> 7 header = chr_cls(id_num | 31) + header else: header += chr_cls(id_num | tag) length = len(contents) if length <= 127: header += chr_cls(length) else: length_bytes = int_to_bytes(length) header += chr_cls(0x80 | len(length_bytes)) header += length_bytes return header ================================================ FILE: libs/asn1crypto/pdf.py ================================================ # coding: utf-8 """ ASN.1 type classes for PDF signature structures. Adds extra oid mapping and value parsing to asn1crypto.x509.Extension() and asn1crypto.xms.CMSAttribute(). """ from __future__ import unicode_literals, division, absolute_import, print_function from .cms import CMSAttributeType, CMSAttribute from .core import ( Boolean, Integer, Null, ObjectIdentifier, OctetString, Sequence, SequenceOf, SetOf, ) from .crl import CertificateList from .ocsp import OCSPResponse from .x509 import ( Extension, ExtensionId, GeneralName, KeyPurposeId, ) class AdobeArchiveRevInfo(Sequence): _fields = [ ('version', Integer) ] class AdobeTimestamp(Sequence): _fields = [ ('version', Integer), ('location', GeneralName), ('requires_auth', Boolean, {'optional': True, 'default': False}), ] class OtherRevInfo(Sequence): _fields = [ ('type', ObjectIdentifier), ('value', OctetString), ] class SequenceOfCertificateList(SequenceOf): _child_spec = CertificateList class SequenceOfOCSPResponse(SequenceOf): _child_spec = OCSPResponse class SequenceOfOtherRevInfo(SequenceOf): _child_spec = OtherRevInfo class RevocationInfoArchival(Sequence): _fields = [ ('crl', SequenceOfCertificateList, {'explicit': 0, 'optional': True}), ('ocsp', SequenceOfOCSPResponse, {'explicit': 1, 'optional': True}), ('other_rev_info', SequenceOfOtherRevInfo, {'explicit': 2, 'optional': True}), ] class SetOfRevocationInfoArchival(SetOf): _child_spec = RevocationInfoArchival ExtensionId._map['1.2.840.113583.1.1.9.2'] = 'adobe_archive_rev_info' ExtensionId._map['1.2.840.113583.1.1.9.1'] = 'adobe_timestamp' ExtensionId._map['1.2.840.113583.1.1.10'] = 'adobe_ppklite_credential' Extension._oid_specs['adobe_archive_rev_info'] = AdobeArchiveRevInfo Extension._oid_specs['adobe_timestamp'] = AdobeTimestamp Extension._oid_specs['adobe_ppklite_credential'] = Null KeyPurposeId._map['1.2.840.113583.1.1.5'] = 'pdf_signing' CMSAttributeType._map['1.2.840.113583.1.1.8'] = 'adobe_revocation_info_archival' CMSAttribute._oid_specs['adobe_revocation_info_archival'] = SetOfRevocationInfoArchival ================================================ FILE: libs/asn1crypto/pem.py ================================================ # coding: utf-8 """ Encoding DER to PEM and decoding PEM to DER. Exports the following items: - armor() - detect() - unarmor() """ from __future__ import unicode_literals, division, absolute_import, print_function import base64 import re import sys from ._errors import unwrap from ._types import type_name as _type_name, str_cls, byte_cls if sys.version_info < (3,): from cStringIO import StringIO as BytesIO else: from io import BytesIO def detect(byte_string): """ Detect if a byte string seems to contain a PEM-encoded block :param byte_string: A byte string to look through :return: A boolean, indicating if a PEM-encoded block is contained in the byte string """ if not isinstance(byte_string, byte_cls): raise TypeError(unwrap( ''' byte_string must be a byte string, not %s ''', _type_name(byte_string) )) return byte_string.find(b'-----BEGIN') != -1 or byte_string.find(b'---- BEGIN') != -1 def armor(type_name, der_bytes, headers=None): """ Armors a DER-encoded byte string in PEM :param type_name: A unicode string that will be capitalized and placed in the header and footer of the block. E.g. "CERTIFICATE", "PRIVATE KEY", etc. This will appear as "-----BEGIN CERTIFICATE-----" and "-----END CERTIFICATE-----". :param der_bytes: A byte string to be armored :param headers: An OrderedDict of the header lines to write after the BEGIN line :return: A byte string of the PEM block """ if not isinstance(der_bytes, byte_cls): raise TypeError(unwrap( ''' der_bytes must be a byte string, not %s ''' % _type_name(der_bytes) )) if not isinstance(type_name, str_cls): raise TypeError(unwrap( ''' type_name must be a unicode string, not %s ''', _type_name(type_name) )) type_name = type_name.upper().encode('ascii') output = BytesIO() output.write(b'-----BEGIN ') output.write(type_name) output.write(b'-----\n') if headers: for key in headers: output.write(key.encode('ascii')) output.write(b': ') output.write(headers[key].encode('ascii')) output.write(b'\n') output.write(b'\n') b64_bytes = base64.b64encode(der_bytes) b64_len = len(b64_bytes) i = 0 while i < b64_len: output.write(b64_bytes[i:i + 64]) output.write(b'\n') i += 64 output.write(b'-----END ') output.write(type_name) output.write(b'-----\n') return output.getvalue() def _unarmor(pem_bytes): """ Convert a PEM-encoded byte string into one or more DER-encoded byte strings :param pem_bytes: A byte string of the PEM-encoded data :raises: ValueError - when the pem_bytes do not appear to be PEM-encoded bytes :return: A generator of 3-element tuples in the format: (object_type, headers, der_bytes). The object_type is a unicode string of what is between "-----BEGIN " and "-----". Examples include: "CERTIFICATE", "PUBLIC KEY", "PRIVATE KEY". The headers is a dict containing any lines in the form "Name: Value" that are right after the begin line. """ if not isinstance(pem_bytes, byte_cls): raise TypeError(unwrap( ''' pem_bytes must be a byte string, not %s ''', _type_name(pem_bytes) )) # Valid states include: "trash", "headers", "body" state = 'trash' headers = {} base64_data = b'' object_type = None found_start = False found_end = False for line in pem_bytes.splitlines(False): if line == b'': continue if state == "trash": # Look for a starting line since some CA cert bundle show the cert # into in a parsed format above each PEM block type_name_match = re.match(b'^(?:---- |-----)BEGIN ([A-Z0-9 ]+)(?: ----|-----)', line) if not type_name_match: continue object_type = type_name_match.group(1).decode('ascii') found_start = True state = 'headers' continue if state == 'headers': if line.find(b':') == -1: state = 'body' else: decoded_line = line.decode('ascii') name, value = decoded_line.split(':', 1) headers[name] = value.strip() continue if state == 'body': if line[0:5] in (b'-----', b'---- '): der_bytes = base64.b64decode(base64_data) yield (object_type, headers, der_bytes) state = 'trash' headers = {} base64_data = b'' object_type = None found_end = True continue base64_data += line if not found_start or not found_end: raise ValueError(unwrap( ''' pem_bytes does not appear to contain PEM-encoded data - no BEGIN/END combination found ''' )) def unarmor(pem_bytes, multiple=False): """ Convert a PEM-encoded byte string into a DER-encoded byte string :param pem_bytes: A byte string of the PEM-encoded data :param multiple: If True, function will return a generator :raises: ValueError - when the pem_bytes do not appear to be PEM-encoded bytes :return: A 3-element tuple (object_name, headers, der_bytes). The object_name is a unicode string of what is between "-----BEGIN " and "-----". Examples include: "CERTIFICATE", "PUBLIC KEY", "PRIVATE KEY". The headers is a dict containing any lines in the form "Name: Value" that are right after the begin line. """ generator = _unarmor(pem_bytes) if not multiple: return next(generator) return generator ================================================ FILE: libs/asn1crypto/pkcs12.py ================================================ # coding: utf-8 """ ASN.1 type classes for PKCS#12 files. Exports the following items: - CertBag() - CrlBag() - Pfx() - SafeBag() - SecretBag() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function from .algos import DigestInfo from .cms import ContentInfo, SignedData from .core import ( Any, BMPString, Integer, ObjectIdentifier, OctetString, ParsableOctetString, Sequence, SequenceOf, SetOf, ) from .keys import PrivateKeyInfo, EncryptedPrivateKeyInfo from .x509 import Certificate, KeyPurposeId # The structures in this file are taken from https://tools.ietf.org/html/rfc7292 class MacData(Sequence): _fields = [ ('mac', DigestInfo), ('mac_salt', OctetString), ('iterations', Integer, {'default': 1}), ] class Version(Integer): _map = { 3: 'v3' } class AttributeType(ObjectIdentifier): _map = { # https://tools.ietf.org/html/rfc2985#page-18 '1.2.840.113549.1.9.20': 'friendly_name', '1.2.840.113549.1.9.21': 'local_key_id', # https://support.microsoft.com/en-us/kb/287547 '1.3.6.1.4.1.311.17.1': 'microsoft_local_machine_keyset', # https://github.com/frohoff/jdk8u-dev-jdk/blob/master/src/share/classes/sun/security/pkcs12/PKCS12KeyStore.java # this is a set of OIDs, representing key usage, the usual value is a SET of one element OID 2.5.29.37.0 '2.16.840.1.113894.746875.1.1': 'trusted_key_usage', } class SetOfAny(SetOf): _child_spec = Any class SetOfBMPString(SetOf): _child_spec = BMPString class SetOfOctetString(SetOf): _child_spec = OctetString class SetOfKeyPurposeId(SetOf): _child_spec = KeyPurposeId class Attribute(Sequence): _fields = [ ('type', AttributeType), ('values', None), ] _oid_specs = { 'friendly_name': SetOfBMPString, 'local_key_id': SetOfOctetString, 'microsoft_csp_name': SetOfBMPString, 'trusted_key_usage': SetOfKeyPurposeId, } def _values_spec(self): return self._oid_specs.get(self['type'].native, SetOfAny) _spec_callbacks = { 'values': _values_spec } class Attributes(SetOf): _child_spec = Attribute class Pfx(Sequence): _fields = [ ('version', Version), ('auth_safe', ContentInfo), ('mac_data', MacData, {'optional': True}) ] _authenticated_safe = None @property def authenticated_safe(self): if self._authenticated_safe is None: content = self['auth_safe']['content'] if isinstance(content, SignedData): content = content['content_info']['content'] self._authenticated_safe = AuthenticatedSafe.load(content.native) return self._authenticated_safe class AuthenticatedSafe(SequenceOf): _child_spec = ContentInfo class BagId(ObjectIdentifier): _map = { '1.2.840.113549.1.12.10.1.1': 'key_bag', '1.2.840.113549.1.12.10.1.2': 'pkcs8_shrouded_key_bag', '1.2.840.113549.1.12.10.1.3': 'cert_bag', '1.2.840.113549.1.12.10.1.4': 'crl_bag', '1.2.840.113549.1.12.10.1.5': 'secret_bag', '1.2.840.113549.1.12.10.1.6': 'safe_contents', } class CertId(ObjectIdentifier): _map = { '1.2.840.113549.1.9.22.1': 'x509', '1.2.840.113549.1.9.22.2': 'sdsi', } class CertBag(Sequence): _fields = [ ('cert_id', CertId), ('cert_value', ParsableOctetString, {'explicit': 0}), ] _oid_pair = ('cert_id', 'cert_value') _oid_specs = { 'x509': Certificate, } class CrlBag(Sequence): _fields = [ ('crl_id', ObjectIdentifier), ('crl_value', OctetString, {'explicit': 0}), ] class SecretBag(Sequence): _fields = [ ('secret_type_id', ObjectIdentifier), ('secret_value', OctetString, {'explicit': 0}), ] class SafeContents(SequenceOf): pass class SafeBag(Sequence): _fields = [ ('bag_id', BagId), ('bag_value', Any, {'explicit': 0}), ('bag_attributes', Attributes, {'optional': True}), ] _oid_pair = ('bag_id', 'bag_value') _oid_specs = { 'key_bag': PrivateKeyInfo, 'pkcs8_shrouded_key_bag': EncryptedPrivateKeyInfo, 'cert_bag': CertBag, 'crl_bag': CrlBag, 'secret_bag': SecretBag, 'safe_contents': SafeContents } SafeContents._child_spec = SafeBag ================================================ FILE: libs/asn1crypto/tsp.py ================================================ # coding: utf-8 """ ASN.1 type classes for the time stamp protocol (TSP). Exports the following items: - TimeStampReq() - TimeStampResp() Also adds TimeStampedData() support to asn1crypto.cms.ContentInfo(), TimeStampedData() and TSTInfo() support to asn1crypto.cms.EncapsulatedContentInfo() and some oids and value parsers to asn1crypto.cms.CMSAttribute(). Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function from .algos import DigestAlgorithm from .cms import ( CMSAttribute, CMSAttributeType, ContentInfo, ContentType, EncapsulatedContentInfo, ) from .core import ( Any, BitString, Boolean, Choice, GeneralizedTime, IA5String, Integer, ObjectIdentifier, OctetString, Sequence, SequenceOf, SetOf, UTF8String, ) from .crl import CertificateList from .x509 import ( Attributes, CertificatePolicies, GeneralName, GeneralNames, ) # The structures in this file are based on https://tools.ietf.org/html/rfc3161, # https://tools.ietf.org/html/rfc4998, https://tools.ietf.org/html/rfc5544, # https://tools.ietf.org/html/rfc5035, https://tools.ietf.org/html/rfc2634 class Version(Integer): _map = { 0: 'v0', 1: 'v1', 2: 'v2', 3: 'v3', 4: 'v4', 5: 'v5', } class MessageImprint(Sequence): _fields = [ ('hash_algorithm', DigestAlgorithm), ('hashed_message', OctetString), ] class Accuracy(Sequence): _fields = [ ('seconds', Integer, {'optional': True}), ('millis', Integer, {'implicit': 0, 'optional': True}), ('micros', Integer, {'implicit': 1, 'optional': True}), ] class Extension(Sequence): _fields = [ ('extn_id', ObjectIdentifier), ('critical', Boolean, {'default': False}), ('extn_value', OctetString), ] class Extensions(SequenceOf): _child_spec = Extension class TSTInfo(Sequence): _fields = [ ('version', Version), ('policy', ObjectIdentifier), ('message_imprint', MessageImprint), ('serial_number', Integer), ('gen_time', GeneralizedTime), ('accuracy', Accuracy, {'optional': True}), ('ordering', Boolean, {'default': False}), ('nonce', Integer, {'optional': True}), ('tsa', GeneralName, {'explicit': 0, 'optional': True}), ('extensions', Extensions, {'implicit': 1, 'optional': True}), ] class TimeStampReq(Sequence): _fields = [ ('version', Version), ('message_imprint', MessageImprint), ('req_policy', ObjectIdentifier, {'optional': True}), ('nonce', Integer, {'optional': True}), ('cert_req', Boolean, {'default': False}), ('extensions', Extensions, {'implicit': 0, 'optional': True}), ] class PKIStatus(Integer): _map = { 0: 'granted', 1: 'granted_with_mods', 2: 'rejection', 3: 'waiting', 4: 'revocation_warning', 5: 'revocation_notification', } class PKIFreeText(SequenceOf): _child_spec = UTF8String class PKIFailureInfo(BitString): _map = { 0: 'bad_alg', 2: 'bad_request', 5: 'bad_data_format', 14: 'time_not_available', 15: 'unaccepted_policy', 16: 'unaccepted_extensions', 17: 'add_info_not_available', 25: 'system_failure', } class PKIStatusInfo(Sequence): _fields = [ ('status', PKIStatus), ('status_string', PKIFreeText, {'optional': True}), ('fail_info', PKIFailureInfo, {'optional': True}), ] class TimeStampResp(Sequence): _fields = [ ('status', PKIStatusInfo), ('time_stamp_token', ContentInfo), ] class MetaData(Sequence): _fields = [ ('hash_protected', Boolean), ('file_name', UTF8String, {'optional': True}), ('media_type', IA5String, {'optional': True}), ('other_meta_data', Attributes, {'optional': True}), ] class TimeStampAndCRL(Sequence): _fields = [ ('time_stamp', EncapsulatedContentInfo), ('crl', CertificateList, {'optional': True}), ] class TimeStampTokenEvidence(SequenceOf): _child_spec = TimeStampAndCRL class DigestAlgorithms(SequenceOf): _child_spec = DigestAlgorithm class EncryptionInfo(Sequence): _fields = [ ('encryption_info_type', ObjectIdentifier), ('encryption_info_value', Any), ] class PartialHashtree(SequenceOf): _child_spec = OctetString class PartialHashtrees(SequenceOf): _child_spec = PartialHashtree class ArchiveTimeStamp(Sequence): _fields = [ ('digest_algorithm', DigestAlgorithm, {'implicit': 0, 'optional': True}), ('attributes', Attributes, {'implicit': 1, 'optional': True}), ('reduced_hashtree', PartialHashtrees, {'implicit': 2, 'optional': True}), ('time_stamp', ContentInfo), ] class ArchiveTimeStampSequence(SequenceOf): _child_spec = ArchiveTimeStamp class EvidenceRecord(Sequence): _fields = [ ('version', Version), ('digest_algorithms', DigestAlgorithms), ('crypto_infos', Attributes, {'implicit': 0, 'optional': True}), ('encryption_info', EncryptionInfo, {'implicit': 1, 'optional': True}), ('archive_time_stamp_sequence', ArchiveTimeStampSequence), ] class OtherEvidence(Sequence): _fields = [ ('oe_type', ObjectIdentifier), ('oe_value', Any), ] class Evidence(Choice): _alternatives = [ ('tst_evidence', TimeStampTokenEvidence, {'implicit': 0}), ('ers_evidence', EvidenceRecord, {'implicit': 1}), ('other_evidence', OtherEvidence, {'implicit': 2}), ] class TimeStampedData(Sequence): _fields = [ ('version', Version), ('data_uri', IA5String, {'optional': True}), ('meta_data', MetaData, {'optional': True}), ('content', OctetString, {'optional': True}), ('temporal_evidence', Evidence), ] class IssuerSerial(Sequence): _fields = [ ('issuer', GeneralNames), ('serial_number', Integer), ] class ESSCertID(Sequence): _fields = [ ('cert_hash', OctetString), ('issuer_serial', IssuerSerial, {'optional': True}), ] class ESSCertIDs(SequenceOf): _child_spec = ESSCertID class SigningCertificate(Sequence): _fields = [ ('certs', ESSCertIDs), ('policies', CertificatePolicies, {'optional': True}), ] class SetOfSigningCertificates(SetOf): _child_spec = SigningCertificate class ESSCertIDv2(Sequence): _fields = [ ('hash_algorithm', DigestAlgorithm, {'default': {'algorithm': 'sha256'}}), ('cert_hash', OctetString), ('issuer_serial', IssuerSerial, {'optional': True}), ] class ESSCertIDv2s(SequenceOf): _child_spec = ESSCertIDv2 class SigningCertificateV2(Sequence): _fields = [ ('certs', ESSCertIDv2s), ('policies', CertificatePolicies, {'optional': True}), ] class SetOfSigningCertificatesV2(SetOf): _child_spec = SigningCertificateV2 EncapsulatedContentInfo._oid_specs['tst_info'] = TSTInfo EncapsulatedContentInfo._oid_specs['timestamped_data'] = TimeStampedData ContentInfo._oid_specs['timestamped_data'] = TimeStampedData ContentType._map['1.2.840.113549.1.9.16.1.4'] = 'tst_info' ContentType._map['1.2.840.113549.1.9.16.1.31'] = 'timestamped_data' CMSAttributeType._map['1.2.840.113549.1.9.16.2.12'] = 'signing_certificate' CMSAttribute._oid_specs['signing_certificate'] = SetOfSigningCertificates CMSAttributeType._map['1.2.840.113549.1.9.16.2.47'] = 'signing_certificate_v2' CMSAttribute._oid_specs['signing_certificate_v2'] = SetOfSigningCertificatesV2 ================================================ FILE: libs/asn1crypto/util.py ================================================ # coding: utf-8 """ Miscellaneous data helpers, including functions for converting integers to and from bytes and UTC timezone. Exports the following items: - OrderedDict() - int_from_bytes() - int_to_bytes() - timezone.utc - utc_with_dst - create_timezone() - inet_ntop() - inet_pton() - uri_to_iri() - iri_to_uri() """ from __future__ import unicode_literals, division, absolute_import, print_function import math import sys from datetime import datetime, date, timedelta, tzinfo from ._errors import unwrap from ._iri import iri_to_uri, uri_to_iri # noqa from ._ordereddict import OrderedDict # noqa from ._types import type_name if sys.platform == 'win32': from ._inet import inet_ntop, inet_pton else: from socket import inet_ntop, inet_pton # noqa # Python 2 if sys.version_info <= (3,): def int_to_bytes(value, signed=False, width=None): """ Converts an integer to a byte string :param value: The integer to convert :param signed: If the byte string should be encoded using two's complement :param width: If None, the minimal possible size (but at least 1), otherwise an integer of the byte width for the return value :return: A byte string """ if value == 0 and width == 0: return b'' # Handle negatives in two's complement is_neg = False if signed and value < 0: is_neg = True bits = int(math.ceil(len('%x' % abs(value)) / 2.0) * 8) value = (value + (1 << bits)) % (1 << bits) hex_str = '%x' % value if len(hex_str) & 1: hex_str = '0' + hex_str output = hex_str.decode('hex') if signed and not is_neg and ord(output[0:1]) & 0x80: output = b'\x00' + output if width is not None: if len(output) > width: raise OverflowError('int too big to convert') if is_neg: pad_char = b'\xFF' else: pad_char = b'\x00' output = (pad_char * (width - len(output))) + output elif is_neg and ord(output[0:1]) & 0x80 == 0: output = b'\xFF' + output return output def int_from_bytes(value, signed=False): """ Converts a byte string to an integer :param value: The byte string to convert :param signed: If the byte string should be interpreted using two's complement :return: An integer """ if value == b'': return 0 num = long(value.encode("hex"), 16) # noqa if not signed: return num # Check for sign bit and handle two's complement if ord(value[0:1]) & 0x80: bit_len = len(value) * 8 return num - (1 << bit_len) return num class timezone(tzinfo): # noqa """ Implements datetime.timezone for py2. Only full minute offsets are supported. DST is not supported. """ def __init__(self, offset, name=None): """ :param offset: A timedelta with this timezone's offset from UTC :param name: Name of the timezone; if None, generate one. """ if not timedelta(hours=-24) < offset < timedelta(hours=24): raise ValueError('Offset must be in [-23:59, 23:59]') if offset.seconds % 60 or offset.microseconds: raise ValueError('Offset must be full minutes') self._offset = offset if name is not None: self._name = name elif not offset: self._name = 'UTC' else: self._name = 'UTC' + _format_offset(offset) def __eq__(self, other): """ Compare two timezones :param other: The other timezone to compare to :return: A boolean """ if type(other) != timezone: return False return self._offset == other._offset def __getinitargs__(self): """ Called by tzinfo.__reduce__ to support pickle and copy. :return: offset and name, to be used for __init__ """ return self._offset, self._name def tzname(self, dt): """ :param dt: A datetime object; ignored. :return: Name of this timezone """ return self._name def utcoffset(self, dt): """ :param dt: A datetime object; ignored. :return: A timedelta object with the offset from UTC """ return self._offset def dst(self, dt): """ :param dt: A datetime object; ignored. :return: Zero timedelta """ return timedelta(0) timezone.utc = timezone(timedelta(0)) # Python 3 else: from datetime import timezone # noqa def int_to_bytes(value, signed=False, width=None): """ Converts an integer to a byte string :param value: The integer to convert :param signed: If the byte string should be encoded using two's complement :param width: If None, the minimal possible size (but at least 1), otherwise an integer of the byte width for the return value :return: A byte string """ if width is None: if signed: if value < 0: bits_required = abs(value + 1).bit_length() else: bits_required = value.bit_length() if bits_required % 8 == 0: bits_required += 1 else: bits_required = value.bit_length() width = math.ceil(bits_required / 8) or 1 return value.to_bytes(width, byteorder='big', signed=signed) def int_from_bytes(value, signed=False): """ Converts a byte string to an integer :param value: The byte string to convert :param signed: If the byte string should be interpreted using two's complement :return: An integer """ return int.from_bytes(value, 'big', signed=signed) def _format_offset(off): """ Format a timedelta into "[+-]HH:MM" format or "" for None """ if off is None: return '' mins = off.days * 24 * 60 + off.seconds // 60 sign = '-' if mins < 0 else '+' return sign + '%02d:%02d' % divmod(abs(mins), 60) class _UtcWithDst(tzinfo): """ Utc class where dst does not return None; required for astimezone """ def tzname(self, dt): return 'UTC' def utcoffset(self, dt): return timedelta(0) def dst(self, dt): return timedelta(0) utc_with_dst = _UtcWithDst() _timezone_cache = {} def create_timezone(offset): """ Returns a new datetime.timezone object with the given offset. Uses cached objects if possible. :param offset: A datetime.timedelta object; It needs to be in full minutes and between -23:59 and +23:59. :return: A datetime.timezone object """ try: tz = _timezone_cache[offset] except KeyError: tz = _timezone_cache[offset] = timezone(offset) return tz class extended_date(object): """ A datetime.datetime-like object that represents the year 0. This is just to handle 0000-01-01 found in some certificates. Python's datetime does not support year 0. The proleptic gregorian calendar repeats itself every 400 years. Therefore, the simplest way to format is to substitute year 2000. """ def __init__(self, year, month, day): """ :param year: The integer 0 :param month: An integer from 1 to 12 :param day: An integer from 1 to 31 """ if year != 0: raise ValueError('year must be 0') self._y2k = date(2000, month, day) @property def year(self): """ :return: The integer 0 """ return 0 @property def month(self): """ :return: An integer from 1 to 12 """ return self._y2k.month @property def day(self): """ :return: An integer from 1 to 31 """ return self._y2k.day def strftime(self, format): """ Formats the date using strftime() :param format: A strftime() format string :return: A str, the formatted date as a unicode string in Python 3 and a byte string in Python 2 """ # Format the date twice, once with year 2000, once with year 4000. # The only differences in the result will be in the millennium. Find them and replace by zeros. y2k = self._y2k.strftime(format) y4k = self._y2k.replace(year=4000).strftime(format) return ''.join('0' if (c2, c4) == ('2', '4') else c2 for c2, c4 in zip(y2k, y4k)) def isoformat(self): """ Formats the date as %Y-%m-%d :return: The date formatted to %Y-%m-%d as a unicode string in Python 3 and a byte string in Python 2 """ return self.strftime('0000-%m-%d') def replace(self, year=None, month=None, day=None): """ Returns a new datetime.date or asn1crypto.util.extended_date object with the specified components replaced :return: A datetime.date or asn1crypto.util.extended_date object """ if year is None: year = self.year if month is None: month = self.month if day is None: day = self.day if year > 0: cls = date else: cls = extended_date return cls( year, month, day ) def __str__(self): """ :return: A str representing this extended_date, e.g. "0000-01-01" """ return self.strftime('%Y-%m-%d') def __eq__(self, other): """ Compare two extended_date objects :param other: The other extended_date to compare to :return: A boolean """ # datetime.date object wouldn't compare equal because it can't be year 0 if not isinstance(other, self.__class__): return False return self.__cmp__(other) == 0 def __ne__(self, other): """ Compare two extended_date objects :param other: The other extended_date to compare to :return: A boolean """ return not self.__eq__(other) def _comparison_error(self, other): raise TypeError(unwrap( ''' An asn1crypto.util.extended_date object can only be compared to an asn1crypto.util.extended_date or datetime.date object, not %s ''', type_name(other) )) def __cmp__(self, other): """ Compare two extended_date or datetime.date objects :param other: The other extended_date object to compare to :return: An integer smaller than, equal to, or larger than 0 """ # self is year 0, other is >= year 1 if isinstance(other, date): return -1 if not isinstance(other, self.__class__): self._comparison_error(other) if self._y2k < other._y2k: return -1 if self._y2k > other._y2k: return 1 return 0 def __lt__(self, other): return self.__cmp__(other) < 0 def __le__(self, other): return self.__cmp__(other) <= 0 def __gt__(self, other): return self.__cmp__(other) > 0 def __ge__(self, other): return self.__cmp__(other) >= 0 class extended_datetime(object): """ A datetime.datetime-like object that represents the year 0. This is just to handle 0000-01-01 found in some certificates. Python's datetime does not support year 0. The proleptic gregorian calendar repeats itself every 400 years. Therefore, the simplest way to format is to substitute year 2000. """ # There are 97 leap days during 400 years. DAYS_IN_400_YEARS = 400 * 365 + 97 DAYS_IN_2000_YEARS = 5 * DAYS_IN_400_YEARS def __init__(self, year, *args, **kwargs): """ :param year: The integer 0 :param args: Other positional arguments; see datetime.datetime. :param kwargs: Other keyword arguments; see datetime.datetime. """ if year != 0: raise ValueError('year must be 0') self._y2k = datetime(2000, *args, **kwargs) @property def year(self): """ :return: The integer 0 """ return 0 @property def month(self): """ :return: An integer from 1 to 12 """ return self._y2k.month @property def day(self): """ :return: An integer from 1 to 31 """ return self._y2k.day @property def hour(self): """ :return: An integer from 1 to 24 """ return self._y2k.hour @property def minute(self): """ :return: An integer from 1 to 60 """ return self._y2k.minute @property def second(self): """ :return: An integer from 1 to 60 """ return self._y2k.second @property def microsecond(self): """ :return: An integer from 0 to 999999 """ return self._y2k.microsecond @property def tzinfo(self): """ :return: If object is timezone aware, a datetime.tzinfo object, else None. """ return self._y2k.tzinfo def utcoffset(self): """ :return: If object is timezone aware, a datetime.timedelta object, else None. """ return self._y2k.utcoffset() def time(self): """ :return: A datetime.time object """ return self._y2k.time() def date(self): """ :return: An asn1crypto.util.extended_date of the date """ return extended_date(0, self.month, self.day) def strftime(self, format): """ Performs strftime(), always returning a str :param format: A strftime() format string :return: A str of the formatted datetime """ # Format the datetime twice, once with year 2000, once with year 4000. # The only differences in the result will be in the millennium. Find them and replace by zeros. y2k = self._y2k.strftime(format) y4k = self._y2k.replace(year=4000).strftime(format) return ''.join('0' if (c2, c4) == ('2', '4') else c2 for c2, c4 in zip(y2k, y4k)) def isoformat(self, sep='T'): """ Formats the date as "%Y-%m-%d %H:%M:%S" with the sep param between the date and time portions :param set: A single character of the separator to place between the date and time :return: The formatted datetime as a unicode string in Python 3 and a byte string in Python 2 """ s = '0000-%02d-%02d%c%02d:%02d:%02d' % (self.month, self.day, sep, self.hour, self.minute, self.second) if self.microsecond: s += '.%06d' % self.microsecond return s + _format_offset(self.utcoffset()) def replace(self, year=None, *args, **kwargs): """ Returns a new datetime.datetime or asn1crypto.util.extended_datetime object with the specified components replaced :param year: The new year to substitute. None to keep it. :param args: Other positional arguments; see datetime.datetime.replace. :param kwargs: Other keyword arguments; see datetime.datetime.replace. :return: A datetime.datetime or asn1crypto.util.extended_datetime object """ if year: return self._y2k.replace(year, *args, **kwargs) return extended_datetime.from_y2k(self._y2k.replace(2000, *args, **kwargs)) def astimezone(self, tz): """ Convert this extended_datetime to another timezone. :param tz: A datetime.tzinfo object. :return: A new extended_datetime or datetime.datetime object """ return extended_datetime.from_y2k(self._y2k.astimezone(tz)) def timestamp(self): """ Return POSIX timestamp. Only supported in python >= 3.3 :return: A float representing the seconds since 1970-01-01 UTC. This will be a negative value. """ return self._y2k.timestamp() - self.DAYS_IN_2000_YEARS * 86400 def __str__(self): """ :return: A str representing this extended_datetime, e.g. "0000-01-01 00:00:00.000001-10:00" """ return self.isoformat(sep=' ') def __eq__(self, other): """ Compare two extended_datetime objects :param other: The other extended_datetime to compare to :return: A boolean """ # Only compare against other datetime or extended_datetime objects if not isinstance(other, (self.__class__, datetime)): return False # Offset-naive and offset-aware datetimes are never the same if (self.tzinfo is None) != (other.tzinfo is None): return False return self.__cmp__(other) == 0 def __ne__(self, other): """ Compare two extended_datetime objects :param other: The other extended_datetime to compare to :return: A boolean """ return not self.__eq__(other) def _comparison_error(self, other): """ Raises a TypeError about the other object not being suitable for comparison :param other: The object being compared to """ raise TypeError(unwrap( ''' An asn1crypto.util.extended_datetime object can only be compared to an asn1crypto.util.extended_datetime or datetime.datetime object, not %s ''', type_name(other) )) def __cmp__(self, other): """ Compare two extended_datetime or datetime.datetime objects :param other: The other extended_datetime or datetime.datetime object to compare to :return: An integer smaller than, equal to, or larger than 0 """ if not isinstance(other, (self.__class__, datetime)): self._comparison_error(other) if (self.tzinfo is None) != (other.tzinfo is None): raise TypeError("can't compare offset-naive and offset-aware datetimes") diff = self - other zero = timedelta(0) if diff < zero: return -1 if diff > zero: return 1 return 0 def __lt__(self, other): return self.__cmp__(other) < 0 def __le__(self, other): return self.__cmp__(other) <= 0 def __gt__(self, other): return self.__cmp__(other) > 0 def __ge__(self, other): return self.__cmp__(other) >= 0 def __add__(self, other): """ Adds a timedelta :param other: A datetime.timedelta object to add. :return: A new extended_datetime or datetime.datetime object. """ return extended_datetime.from_y2k(self._y2k + other) def __sub__(self, other): """ Subtracts a timedelta or another datetime. :param other: A datetime.timedelta or datetime.datetime or extended_datetime object to subtract. :return: If a timedelta is passed, a new extended_datetime or datetime.datetime object. Else a datetime.timedelta object. """ if isinstance(other, timedelta): return extended_datetime.from_y2k(self._y2k - other) if isinstance(other, extended_datetime): return self._y2k - other._y2k if isinstance(other, datetime): return self._y2k - other - timedelta(days=self.DAYS_IN_2000_YEARS) return NotImplemented def __rsub__(self, other): return -(self - other) @classmethod def from_y2k(cls, value): """ Revert substitution of year 2000. :param value: A datetime.datetime object which is 2000 years in the future. :return: A new extended_datetime or datetime.datetime object. """ year = value.year - 2000 if year > 0: new_cls = datetime else: new_cls = cls return new_cls( year, value.month, value.day, value.hour, value.minute, value.second, value.microsecond, value.tzinfo ) ================================================ FILE: libs/asn1crypto/version.py ================================================ # coding: utf-8 from __future__ import unicode_literals, division, absolute_import, print_function __version__ = '1.5.1' __version_info__ = (1, 5, 1) ================================================ FILE: libs/asn1crypto/x509.py ================================================ # coding: utf-8 """ ASN.1 type classes for X.509 certificates. Exports the following items: - Attributes() - Certificate() - Extensions() - GeneralName() - GeneralNames() - Name() Other type classes are defined that help compose the types listed above. """ from __future__ import unicode_literals, division, absolute_import, print_function from contextlib import contextmanager from encodings import idna # noqa import hashlib import re import socket import stringprep import sys import unicodedata from ._errors import unwrap from ._iri import iri_to_uri, uri_to_iri from ._ordereddict import OrderedDict from ._types import type_name, str_cls, bytes_to_list from .algos import AlgorithmIdentifier, AnyAlgorithmIdentifier, DigestAlgorithm, SignedDigestAlgorithm from .core import ( Any, BitString, BMPString, Boolean, Choice, Concat, Enumerated, GeneralizedTime, GeneralString, IA5String, Integer, Null, NumericString, ObjectIdentifier, OctetBitString, OctetString, ParsableOctetString, PrintableString, Sequence, SequenceOf, Set, SetOf, TeletexString, UniversalString, UTCTime, UTF8String, VisibleString, VOID, ) from .keys import PublicKeyInfo from .util import int_to_bytes, int_from_bytes, inet_ntop, inet_pton # The structures in this file are taken from https://tools.ietf.org/html/rfc5280 # and a few other supplementary sources, mostly due to extra supported # extension and name OIDs class DNSName(IA5String): _encoding = 'idna' _bad_tag = (12, 19) def __ne__(self, other): return not self == other def __eq__(self, other): """ Equality as defined by https://tools.ietf.org/html/rfc5280#section-7.2 :param other: Another DNSName object :return: A boolean """ if not isinstance(other, DNSName): return False return self.__unicode__().lower() == other.__unicode__().lower() def set(self, value): """ Sets the value of the DNS name :param value: A unicode string """ if not isinstance(value, str_cls): raise TypeError(unwrap( ''' %s value must be a unicode string, not %s ''', type_name(self), type_name(value) )) if value.startswith('.'): encoded_value = b'.' + value[1:].encode(self._encoding) else: encoded_value = value.encode(self._encoding) self._unicode = value self.contents = encoded_value self._header = None if self._trailer != b'': self._trailer = b'' class URI(IA5String): def set(self, value): """ Sets the value of the string :param value: A unicode string """ if not isinstance(value, str_cls): raise TypeError(unwrap( ''' %s value must be a unicode string, not %s ''', type_name(self), type_name(value) )) self._unicode = value self.contents = iri_to_uri(value) self._header = None if self._trailer != b'': self._trailer = b'' def __ne__(self, other): return not self == other def __eq__(self, other): """ Equality as defined by https://tools.ietf.org/html/rfc5280#section-7.4 :param other: Another URI object :return: A boolean """ if not isinstance(other, URI): return False return iri_to_uri(self.native, True) == iri_to_uri(other.native, True) def __unicode__(self): """ :return: A unicode string """ if self.contents is None: return '' if self._unicode is None: self._unicode = uri_to_iri(self._merge_chunks()) return self._unicode class EmailAddress(IA5String): _contents = None # If the value has gone through the .set() method, thus normalizing it _normalized = False # In the wild we've seen this encoded as a UTF8String and PrintableString _bad_tag = (12, 19) @property def contents(self): """ :return: A byte string of the DER-encoded contents of the sequence """ return self._contents @contents.setter def contents(self, value): """ :param value: A byte string of the DER-encoded contents of the sequence """ self._normalized = False self._contents = value def set(self, value): """ Sets the value of the string :param value: A unicode string """ if not isinstance(value, str_cls): raise TypeError(unwrap( ''' %s value must be a unicode string, not %s ''', type_name(self), type_name(value) )) if value.find('@') != -1: mailbox, hostname = value.rsplit('@', 1) encoded_value = mailbox.encode('ascii') + b'@' + hostname.encode('idna') else: encoded_value = value.encode('ascii') self._normalized = True self._unicode = value self.contents = encoded_value self._header = None if self._trailer != b'': self._trailer = b'' def __unicode__(self): """ :return: A unicode string """ # We've seen this in the wild as a PrintableString, and since ascii is a # subset of cp1252, we use the later for decoding to be more user friendly if self._unicode is None: contents = self._merge_chunks() if contents.find(b'@') == -1: self._unicode = contents.decode('cp1252') else: mailbox, hostname = contents.rsplit(b'@', 1) self._unicode = mailbox.decode('cp1252') + '@' + hostname.decode('idna') return self._unicode def __ne__(self, other): return not self == other def __eq__(self, other): """ Equality as defined by https://tools.ietf.org/html/rfc5280#section-7.5 :param other: Another EmailAddress object :return: A boolean """ if not isinstance(other, EmailAddress): return False if not self._normalized: self.set(self.native) if not other._normalized: other.set(other.native) if self._contents.find(b'@') == -1 or other._contents.find(b'@') == -1: return self._contents == other._contents other_mailbox, other_hostname = other._contents.rsplit(b'@', 1) mailbox, hostname = self._contents.rsplit(b'@', 1) if mailbox != other_mailbox: return False if hostname.lower() != other_hostname.lower(): return False return True class IPAddress(OctetString): def parse(self, spec=None, spec_params=None): """ This method is not applicable to IP addresses """ raise ValueError(unwrap( ''' IP address values can not be parsed ''' )) def set(self, value): """ Sets the value of the object :param value: A unicode string containing an IPv4 address, IPv4 address with CIDR, an IPv6 address or IPv6 address with CIDR """ if not isinstance(value, str_cls): raise TypeError(unwrap( ''' %s value must be a unicode string, not %s ''', type_name(self), type_name(value) )) original_value = value has_cidr = value.find('/') != -1 cidr = 0 if has_cidr: parts = value.split('/', 1) value = parts[0] cidr = int(parts[1]) if cidr < 0: raise ValueError(unwrap( ''' %s value contains a CIDR range less than 0 ''', type_name(self) )) if value.find(':') != -1: family = socket.AF_INET6 if cidr > 128: raise ValueError(unwrap( ''' %s value contains a CIDR range bigger than 128, the maximum value for an IPv6 address ''', type_name(self) )) cidr_size = 128 else: family = socket.AF_INET if cidr > 32: raise ValueError(unwrap( ''' %s value contains a CIDR range bigger than 32, the maximum value for an IPv4 address ''', type_name(self) )) cidr_size = 32 cidr_bytes = b'' if has_cidr: cidr_mask = '1' * cidr cidr_mask += '0' * (cidr_size - len(cidr_mask)) cidr_bytes = int_to_bytes(int(cidr_mask, 2)) cidr_bytes = (b'\x00' * ((cidr_size // 8) - len(cidr_bytes))) + cidr_bytes self._native = original_value self.contents = inet_pton(family, value) + cidr_bytes self._bytes = self.contents self._header = None if self._trailer != b'': self._trailer = b'' @property def native(self): """ The native Python datatype representation of this value :return: A unicode string or None """ if self.contents is None: return None if self._native is None: byte_string = self.__bytes__() byte_len = len(byte_string) value = None cidr_int = None if byte_len in set([32, 16]): value = inet_ntop(socket.AF_INET6, byte_string[0:16]) if byte_len > 16: cidr_int = int_from_bytes(byte_string[16:]) elif byte_len in set([8, 4]): value = inet_ntop(socket.AF_INET, byte_string[0:4]) if byte_len > 4: cidr_int = int_from_bytes(byte_string[4:]) if cidr_int is not None: cidr_bits = '{0:b}'.format(cidr_int) cidr = len(cidr_bits.rstrip('0')) value = value + '/' + str_cls(cidr) self._native = value return self._native def __ne__(self, other): return not self == other def __eq__(self, other): """ :param other: Another IPAddress object :return: A boolean """ if not isinstance(other, IPAddress): return False return self.__bytes__() == other.__bytes__() class Attribute(Sequence): _fields = [ ('type', ObjectIdentifier), ('values', SetOf, {'spec': Any}), ] class Attributes(SequenceOf): _child_spec = Attribute class KeyUsage(BitString): _map = { 0: 'digital_signature', 1: 'non_repudiation', 2: 'key_encipherment', 3: 'data_encipherment', 4: 'key_agreement', 5: 'key_cert_sign', 6: 'crl_sign', 7: 'encipher_only', 8: 'decipher_only', } class PrivateKeyUsagePeriod(Sequence): _fields = [ ('not_before', GeneralizedTime, {'implicit': 0, 'optional': True}), ('not_after', GeneralizedTime, {'implicit': 1, 'optional': True}), ] class NotReallyTeletexString(TeletexString): """ OpenSSL (and probably some other libraries) puts ISO-8859-1 into TeletexString instead of ITU T.61. We use Windows-1252 when decoding since it is a superset of ISO-8859-1, and less likely to cause encoding issues, but we stay strict with encoding to prevent us from creating bad data. """ _decoding_encoding = 'cp1252' def __unicode__(self): """ :return: A unicode string """ if self.contents is None: return '' if self._unicode is None: self._unicode = self._merge_chunks().decode(self._decoding_encoding) return self._unicode @contextmanager def strict_teletex(): try: NotReallyTeletexString._decoding_encoding = 'teletex' yield finally: NotReallyTeletexString._decoding_encoding = 'cp1252' class DirectoryString(Choice): _alternatives = [ ('teletex_string', NotReallyTeletexString), ('printable_string', PrintableString), ('universal_string', UniversalString), ('utf8_string', UTF8String), ('bmp_string', BMPString), # This is an invalid/bad alternative, but some broken certs use it ('ia5_string', IA5String), ] class NameType(ObjectIdentifier): _map = { '2.5.4.3': 'common_name', '2.5.4.4': 'surname', '2.5.4.5': 'serial_number', '2.5.4.6': 'country_name', '2.5.4.7': 'locality_name', '2.5.4.8': 'state_or_province_name', '2.5.4.9': 'street_address', '2.5.4.10': 'organization_name', '2.5.4.11': 'organizational_unit_name', '2.5.4.12': 'title', '2.5.4.15': 'business_category', '2.5.4.17': 'postal_code', '2.5.4.20': 'telephone_number', '2.5.4.41': 'name', '2.5.4.42': 'given_name', '2.5.4.43': 'initials', '2.5.4.44': 'generation_qualifier', '2.5.4.45': 'unique_identifier', '2.5.4.46': 'dn_qualifier', '2.5.4.65': 'pseudonym', '2.5.4.97': 'organization_identifier', # https://www.trustedcomputinggroup.org/wp-content/uploads/Credential_Profile_EK_V2.0_R14_published.pdf '2.23.133.2.1': 'tpm_manufacturer', '2.23.133.2.2': 'tpm_model', '2.23.133.2.3': 'tpm_version', '2.23.133.2.4': 'platform_manufacturer', '2.23.133.2.5': 'platform_model', '2.23.133.2.6': 'platform_version', # https://tools.ietf.org/html/rfc2985#page-26 '1.2.840.113549.1.9.1': 'email_address', # Page 10 of https://cabforum.org/wp-content/uploads/EV-V1_5_5.pdf '1.3.6.1.4.1.311.60.2.1.1': 'incorporation_locality', '1.3.6.1.4.1.311.60.2.1.2': 'incorporation_state_or_province', '1.3.6.1.4.1.311.60.2.1.3': 'incorporation_country', # https://tools.ietf.org/html/rfc4519#section-2.39 '0.9.2342.19200300.100.1.1': 'user_id', # https://tools.ietf.org/html/rfc2247#section-4 '0.9.2342.19200300.100.1.25': 'domain_component', # http://www.alvestrand.no/objectid/0.2.262.1.10.7.20.html '0.2.262.1.10.7.20': 'name_distinguisher', } # This order is largely based on observed order seen in EV certs from # Symantec and DigiCert. Some of the uncommon name-related fields are # just placed in what seems like a reasonable order. preferred_order = [ 'incorporation_country', 'incorporation_state_or_province', 'incorporation_locality', 'business_category', 'serial_number', 'country_name', 'postal_code', 'state_or_province_name', 'locality_name', 'street_address', 'organization_name', 'organizational_unit_name', 'title', 'common_name', 'user_id', 'initials', 'generation_qualifier', 'surname', 'given_name', 'name', 'pseudonym', 'dn_qualifier', 'telephone_number', 'email_address', 'domain_component', 'name_distinguisher', 'organization_identifier', 'tpm_manufacturer', 'tpm_model', 'tpm_version', 'platform_manufacturer', 'platform_model', 'platform_version', ] @classmethod def preferred_ordinal(cls, attr_name): """ Returns an ordering value for a particular attribute key. Unrecognized attributes and OIDs will be sorted lexically at the end. :return: An orderable value. """ attr_name = cls.map(attr_name) if attr_name in cls.preferred_order: ordinal = cls.preferred_order.index(attr_name) else: ordinal = len(cls.preferred_order) return (ordinal, attr_name) @property def human_friendly(self): """ :return: A human-friendly unicode string to display to users """ return { 'common_name': 'Common Name', 'surname': 'Surname', 'serial_number': 'Serial Number', 'country_name': 'Country', 'locality_name': 'Locality', 'state_or_province_name': 'State/Province', 'street_address': 'Street Address', 'organization_name': 'Organization', 'organizational_unit_name': 'Organizational Unit', 'title': 'Title', 'business_category': 'Business Category', 'postal_code': 'Postal Code', 'telephone_number': 'Telephone Number', 'name': 'Name', 'given_name': 'Given Name', 'initials': 'Initials', 'generation_qualifier': 'Generation Qualifier', 'unique_identifier': 'Unique Identifier', 'dn_qualifier': 'DN Qualifier', 'pseudonym': 'Pseudonym', 'email_address': 'Email Address', 'incorporation_locality': 'Incorporation Locality', 'incorporation_state_or_province': 'Incorporation State/Province', 'incorporation_country': 'Incorporation Country', 'domain_component': 'Domain Component', 'name_distinguisher': 'Name Distinguisher', 'organization_identifier': 'Organization Identifier', 'tpm_manufacturer': 'TPM Manufacturer', 'tpm_model': 'TPM Model', 'tpm_version': 'TPM Version', 'platform_manufacturer': 'Platform Manufacturer', 'platform_model': 'Platform Model', 'platform_version': 'Platform Version', 'user_id': 'User ID', }.get(self.native, self.native) class NameTypeAndValue(Sequence): _fields = [ ('type', NameType), ('value', Any), ] _oid_pair = ('type', 'value') _oid_specs = { 'common_name': DirectoryString, 'surname': DirectoryString, 'serial_number': DirectoryString, 'country_name': DirectoryString, 'locality_name': DirectoryString, 'state_or_province_name': DirectoryString, 'street_address': DirectoryString, 'organization_name': DirectoryString, 'organizational_unit_name': DirectoryString, 'title': DirectoryString, 'business_category': DirectoryString, 'postal_code': DirectoryString, 'telephone_number': PrintableString, 'name': DirectoryString, 'given_name': DirectoryString, 'initials': DirectoryString, 'generation_qualifier': DirectoryString, 'unique_identifier': OctetBitString, 'dn_qualifier': DirectoryString, 'pseudonym': DirectoryString, # https://tools.ietf.org/html/rfc2985#page-26 'email_address': EmailAddress, # Page 10 of https://cabforum.org/wp-content/uploads/EV-V1_5_5.pdf 'incorporation_locality': DirectoryString, 'incorporation_state_or_province': DirectoryString, 'incorporation_country': DirectoryString, 'domain_component': DNSName, 'name_distinguisher': DirectoryString, 'organization_identifier': DirectoryString, 'tpm_manufacturer': UTF8String, 'tpm_model': UTF8String, 'tpm_version': UTF8String, 'platform_manufacturer': UTF8String, 'platform_model': UTF8String, 'platform_version': UTF8String, 'user_id': DirectoryString, } _prepped = None @property def prepped_value(self): """ Returns the value after being processed by the internationalized string preparation as specified by RFC 5280 :return: A unicode string """ if self._prepped is None: self._prepped = self._ldap_string_prep(self['value'].native) return self._prepped def __ne__(self, other): return not self == other def __eq__(self, other): """ Equality as defined by https://tools.ietf.org/html/rfc5280#section-7.1 :param other: Another NameTypeAndValue object :return: A boolean """ if not isinstance(other, NameTypeAndValue): return False if other['type'].native != self['type'].native: return False return other.prepped_value == self.prepped_value def _ldap_string_prep(self, string): """ Implements the internationalized string preparation algorithm from RFC 4518. https://tools.ietf.org/html/rfc4518#section-2 :param string: A unicode string to prepare :return: A prepared unicode string, ready for comparison """ # Map step string = re.sub('[\u00ad\u1806\u034f\u180b-\u180d\ufe0f-\uff00\ufffc]+', '', string) string = re.sub('[\u0009\u000a\u000b\u000c\u000d\u0085]', ' ', string) if sys.maxunicode == 0xffff: # Some installs of Python 2.7 don't support 8-digit unicode escape # ranges, so we have to break them into pieces # Original was: \U0001D173-\U0001D17A and \U000E0020-\U000E007F string = re.sub('\ud834[\udd73-\udd7a]|\udb40[\udc20-\udc7f]|\U000e0001', '', string) else: string = re.sub('[\U0001D173-\U0001D17A\U000E0020-\U000E007F\U000e0001]', '', string) string = re.sub( '[\u0000-\u0008\u000e-\u001f\u007f-\u0084\u0086-\u009f\u06dd\u070f\u180e\u200c-\u200f' '\u202a-\u202e\u2060-\u2063\u206a-\u206f\ufeff\ufff9-\ufffb]+', '', string ) string = string.replace('\u200b', '') string = re.sub('[\u00a0\u1680\u2000-\u200a\u2028-\u2029\u202f\u205f\u3000]', ' ', string) string = ''.join(map(stringprep.map_table_b2, string)) # Normalize step string = unicodedata.normalize('NFKC', string) # Prohibit step for char in string: if stringprep.in_table_a1(char): raise ValueError(unwrap( ''' X.509 Name objects may not contain unassigned code points ''' )) if stringprep.in_table_c8(char): raise ValueError(unwrap( ''' X.509 Name objects may not contain change display or zzzzdeprecated characters ''' )) if stringprep.in_table_c3(char): raise ValueError(unwrap( ''' X.509 Name objects may not contain private use characters ''' )) if stringprep.in_table_c4(char): raise ValueError(unwrap( ''' X.509 Name objects may not contain non-character code points ''' )) if stringprep.in_table_c5(char): raise ValueError(unwrap( ''' X.509 Name objects may not contain surrogate code points ''' )) if char == '\ufffd': raise ValueError(unwrap( ''' X.509 Name objects may not contain the replacement character ''' )) # Check bidirectional step - here we ensure that we are not mixing # left-to-right and right-to-left text in the string has_r_and_al_cat = False has_l_cat = False for char in string: if stringprep.in_table_d1(char): has_r_and_al_cat = True elif stringprep.in_table_d2(char): has_l_cat = True if has_r_and_al_cat: first_is_r_and_al = stringprep.in_table_d1(string[0]) last_is_r_and_al = stringprep.in_table_d1(string[-1]) if has_l_cat or not first_is_r_and_al or not last_is_r_and_al: raise ValueError(unwrap( ''' X.509 Name object contains a malformed bidirectional sequence ''' )) # Insignificant space handling step string = ' ' + re.sub(' +', ' ', string).strip() + ' ' return string class RelativeDistinguishedName(SetOf): _child_spec = NameTypeAndValue @property def hashable(self): """ :return: A unicode string that can be used as a dict key or in a set """ output = [] values = self._get_values(self) for key in sorted(values.keys()): output.append('%s: %s' % (key, values[key])) # Unit separator is used here since the normalization process for # values moves any such character, and the keys are all dotted integers # or under_score_words return '\x1F'.join(output) def __ne__(self, other): return not self == other def __eq__(self, other): """ Equality as defined by https://tools.ietf.org/html/rfc5280#section-7.1 :param other: Another RelativeDistinguishedName object :return: A boolean """ if not isinstance(other, RelativeDistinguishedName): return False if len(self) != len(other): return False self_types = self._get_types(self) other_types = self._get_types(other) if self_types != other_types: return False self_values = self._get_values(self) other_values = self._get_values(other) for type_name_ in self_types: if self_values[type_name_] != other_values[type_name_]: return False return True def _get_types(self, rdn): """ Returns a set of types contained in an RDN :param rdn: A RelativeDistinguishedName object :return: A set object with unicode strings of NameTypeAndValue type field values """ return set([ntv['type'].native for ntv in rdn]) def _get_values(self, rdn): """ Returns a dict of prepped values contained in an RDN :param rdn: A RelativeDistinguishedName object :return: A dict object with unicode strings of NameTypeAndValue value field values that have been prepped for comparison """ output = {} [output.update([(ntv['type'].native, ntv.prepped_value)]) for ntv in rdn] return output class RDNSequence(SequenceOf): _child_spec = RelativeDistinguishedName @property def hashable(self): """ :return: A unicode string that can be used as a dict key or in a set """ # Record separator is used here since the normalization process for # values moves any such character, and the keys are all dotted integers # or under_score_words return '\x1E'.join(rdn.hashable for rdn in self) def __ne__(self, other): return not self == other def __eq__(self, other): """ Equality as defined by https://tools.ietf.org/html/rfc5280#section-7.1 :param other: Another RDNSequence object :return: A boolean """ if not isinstance(other, RDNSequence): return False if len(self) != len(other): return False for index, self_rdn in enumerate(self): if other[index] != self_rdn: return False return True class Name(Choice): _alternatives = [ ('', RDNSequence), ] _human_friendly = None _sha1 = None _sha256 = None @classmethod def build(cls, name_dict, use_printable=False): """ Creates a Name object from a dict of unicode string keys and values. The keys should be from NameType._map, or a dotted-integer OID unicode string. :param name_dict: A dict of name information, e.g. {"common_name": "Will Bond", "country_name": "US", "organization_name": "Codex Non Sufficit LC"} :param use_printable: A bool - if PrintableString should be used for encoding instead of UTF8String. This is for backwards compatibility with old software. :return: An x509.Name object """ rdns = [] if not use_printable: encoding_name = 'utf8_string' encoding_class = UTF8String else: encoding_name = 'printable_string' encoding_class = PrintableString # Sort the attributes according to NameType.preferred_order name_dict = OrderedDict( sorted( name_dict.items(), key=lambda item: NameType.preferred_ordinal(item[0]) ) ) for attribute_name, attribute_value in name_dict.items(): attribute_name = NameType.map(attribute_name) if attribute_name == 'email_address': value = EmailAddress(attribute_value) elif attribute_name == 'domain_component': value = DNSName(attribute_value) elif attribute_name in set(['dn_qualifier', 'country_name', 'serial_number']): value = DirectoryString( name='printable_string', value=PrintableString(attribute_value) ) else: value = DirectoryString( name=encoding_name, value=encoding_class(attribute_value) ) rdns.append(RelativeDistinguishedName([ NameTypeAndValue({ 'type': attribute_name, 'value': value }) ])) return cls(name='', value=RDNSequence(rdns)) @property def hashable(self): """ :return: A unicode string that can be used as a dict key or in a set """ return self.chosen.hashable def __len__(self): return len(self.chosen) def __ne__(self, other): return not self == other def __eq__(self, other): """ Equality as defined by https://tools.ietf.org/html/rfc5280#section-7.1 :param other: Another Name object :return: A boolean """ if not isinstance(other, Name): return False return self.chosen == other.chosen @property def native(self): if self._native is None: self._native = OrderedDict() for rdn in self.chosen.native: for type_val in rdn: field_name = type_val['type'] if field_name in self._native: existing = self._native[field_name] if not isinstance(existing, list): existing = self._native[field_name] = [existing] existing.append(type_val['value']) else: self._native[field_name] = type_val['value'] return self._native @property def human_friendly(self): """ :return: A human-friendly unicode string containing the parts of the name """ if self._human_friendly is None: data = OrderedDict() last_field = None for rdn in self.chosen: for type_val in rdn: field_name = type_val['type'].human_friendly last_field = field_name if field_name in data: data[field_name] = [data[field_name]] data[field_name].append(type_val['value']) else: data[field_name] = type_val['value'] to_join = [] keys = data.keys() if last_field == 'Country': keys = reversed(list(keys)) for key in keys: value = data[key] native_value = self._recursive_humanize(value) to_join.append('%s: %s' % (key, native_value)) has_comma = False for element in to_join: if element.find(',') != -1: has_comma = True break separator = ', ' if not has_comma else '; ' self._human_friendly = separator.join(to_join[::-1]) return self._human_friendly def _recursive_humanize(self, value): """ Recursively serializes data compiled from the RDNSequence :param value: An Asn1Value object, or a list of Asn1Value objects :return: A unicode string """ if isinstance(value, list): return ', '.join( reversed([self._recursive_humanize(sub_value) for sub_value in value]) ) return value.native @property def sha1(self): """ :return: The SHA1 hash of the DER-encoded bytes of this name """ if self._sha1 is None: self._sha1 = hashlib.sha1(self.dump()).digest() return self._sha1 @property def sha256(self): """ :return: The SHA-256 hash of the DER-encoded bytes of this name """ if self._sha256 is None: self._sha256 = hashlib.sha256(self.dump()).digest() return self._sha256 class AnotherName(Sequence): _fields = [ ('type_id', ObjectIdentifier), ('value', Any, {'explicit': 0}), ] class CountryName(Choice): class_ = 1 tag = 1 _alternatives = [ ('x121_dcc_code', NumericString), ('iso_3166_alpha2_code', PrintableString), ] class AdministrationDomainName(Choice): class_ = 1 tag = 2 _alternatives = [ ('numeric', NumericString), ('printable', PrintableString), ] class PrivateDomainName(Choice): _alternatives = [ ('numeric', NumericString), ('printable', PrintableString), ] class PersonalName(Set): _fields = [ ('surname', PrintableString, {'implicit': 0}), ('given_name', PrintableString, {'implicit': 1, 'optional': True}), ('initials', PrintableString, {'implicit': 2, 'optional': True}), ('generation_qualifier', PrintableString, {'implicit': 3, 'optional': True}), ] class TeletexPersonalName(Set): _fields = [ ('surname', TeletexString, {'implicit': 0}), ('given_name', TeletexString, {'implicit': 1, 'optional': True}), ('initials', TeletexString, {'implicit': 2, 'optional': True}), ('generation_qualifier', TeletexString, {'implicit': 3, 'optional': True}), ] class OrganizationalUnitNames(SequenceOf): _child_spec = PrintableString class TeletexOrganizationalUnitNames(SequenceOf): _child_spec = TeletexString class BuiltInStandardAttributes(Sequence): _fields = [ ('country_name', CountryName, {'optional': True}), ('administration_domain_name', AdministrationDomainName, {'optional': True}), ('network_address', NumericString, {'implicit': 0, 'optional': True}), ('terminal_identifier', PrintableString, {'implicit': 1, 'optional': True}), ('private_domain_name', PrivateDomainName, {'explicit': 2, 'optional': True}), ('organization_name', PrintableString, {'implicit': 3, 'optional': True}), ('numeric_user_identifier', NumericString, {'implicit': 4, 'optional': True}), ('personal_name', PersonalName, {'implicit': 5, 'optional': True}), ('organizational_unit_names', OrganizationalUnitNames, {'implicit': 6, 'optional': True}), ] class BuiltInDomainDefinedAttribute(Sequence): _fields = [ ('type', PrintableString), ('value', PrintableString), ] class BuiltInDomainDefinedAttributes(SequenceOf): _child_spec = BuiltInDomainDefinedAttribute class TeletexDomainDefinedAttribute(Sequence): _fields = [ ('type', TeletexString), ('value', TeletexString), ] class TeletexDomainDefinedAttributes(SequenceOf): _child_spec = TeletexDomainDefinedAttribute class PhysicalDeliveryCountryName(Choice): _alternatives = [ ('x121_dcc_code', NumericString), ('iso_3166_alpha2_code', PrintableString), ] class PostalCode(Choice): _alternatives = [ ('numeric_code', NumericString), ('printable_code', PrintableString), ] class PDSParameter(Set): _fields = [ ('printable_string', PrintableString, {'optional': True}), ('teletex_string', TeletexString, {'optional': True}), ] class PrintableAddress(SequenceOf): _child_spec = PrintableString class UnformattedPostalAddress(Set): _fields = [ ('printable_address', PrintableAddress, {'optional': True}), ('teletex_string', TeletexString, {'optional': True}), ] class E1634Address(Sequence): _fields = [ ('number', NumericString, {'implicit': 0}), ('sub_address', NumericString, {'implicit': 1, 'optional': True}), ] class NAddresses(SetOf): _child_spec = OctetString class PresentationAddress(Sequence): _fields = [ ('p_selector', OctetString, {'explicit': 0, 'optional': True}), ('s_selector', OctetString, {'explicit': 1, 'optional': True}), ('t_selector', OctetString, {'explicit': 2, 'optional': True}), ('n_addresses', NAddresses, {'explicit': 3}), ] class ExtendedNetworkAddress(Choice): _alternatives = [ ('e163_4_address', E1634Address), ('psap_address', PresentationAddress, {'implicit': 0}) ] class TerminalType(Integer): _map = { 3: 'telex', 4: 'teletex', 5: 'g3_facsimile', 6: 'g4_facsimile', 7: 'ia5_terminal', 8: 'videotex', } class ExtensionAttributeType(Integer): _map = { 1: 'common_name', 2: 'teletex_common_name', 3: 'teletex_organization_name', 4: 'teletex_personal_name', 5: 'teletex_organization_unit_names', 6: 'teletex_domain_defined_attributes', 7: 'pds_name', 8: 'physical_delivery_country_name', 9: 'postal_code', 10: 'physical_delivery_office_name', 11: 'physical_delivery_office_number', 12: 'extension_of_address_components', 13: 'physical_delivery_personal_name', 14: 'physical_delivery_organization_name', 15: 'extension_physical_delivery_address_components', 16: 'unformatted_postal_address', 17: 'street_address', 18: 'post_office_box_address', 19: 'poste_restante_address', 20: 'unique_postal_name', 21: 'local_postal_attributes', 22: 'extended_network_address', 23: 'terminal_type', } class ExtensionAttribute(Sequence): _fields = [ ('extension_attribute_type', ExtensionAttributeType, {'implicit': 0}), ('extension_attribute_value', Any, {'explicit': 1}), ] _oid_pair = ('extension_attribute_type', 'extension_attribute_value') _oid_specs = { 'common_name': PrintableString, 'teletex_common_name': TeletexString, 'teletex_organization_name': TeletexString, 'teletex_personal_name': TeletexPersonalName, 'teletex_organization_unit_names': TeletexOrganizationalUnitNames, 'teletex_domain_defined_attributes': TeletexDomainDefinedAttributes, 'pds_name': PrintableString, 'physical_delivery_country_name': PhysicalDeliveryCountryName, 'postal_code': PostalCode, 'physical_delivery_office_name': PDSParameter, 'physical_delivery_office_number': PDSParameter, 'extension_of_address_components': PDSParameter, 'physical_delivery_personal_name': PDSParameter, 'physical_delivery_organization_name': PDSParameter, 'extension_physical_delivery_address_components': PDSParameter, 'unformatted_postal_address': UnformattedPostalAddress, 'street_address': PDSParameter, 'post_office_box_address': PDSParameter, 'poste_restante_address': PDSParameter, 'unique_postal_name': PDSParameter, 'local_postal_attributes': PDSParameter, 'extended_network_address': ExtendedNetworkAddress, 'terminal_type': TerminalType, } class ExtensionAttributes(SequenceOf): _child_spec = ExtensionAttribute class ORAddress(Sequence): _fields = [ ('built_in_standard_attributes', BuiltInStandardAttributes), ('built_in_domain_defined_attributes', BuiltInDomainDefinedAttributes, {'optional': True}), ('extension_attributes', ExtensionAttributes, {'optional': True}), ] class EDIPartyName(Sequence): _fields = [ ('name_assigner', DirectoryString, {'implicit': 0, 'optional': True}), ('party_name', DirectoryString, {'implicit': 1}), ] class GeneralName(Choice): _alternatives = [ ('other_name', AnotherName, {'implicit': 0}), ('rfc822_name', EmailAddress, {'implicit': 1}), ('dns_name', DNSName, {'implicit': 2}), ('x400_address', ORAddress, {'implicit': 3}), ('directory_name', Name, {'explicit': 4}), ('edi_party_name', EDIPartyName, {'implicit': 5}), ('uniform_resource_identifier', URI, {'implicit': 6}), ('ip_address', IPAddress, {'implicit': 7}), ('registered_id', ObjectIdentifier, {'implicit': 8}), ] def __ne__(self, other): return not self == other def __eq__(self, other): """ Does not support other_name, x400_address or edi_party_name :param other: The other GeneralName to compare to :return: A boolean """ if self.name in ('other_name', 'x400_address', 'edi_party_name'): raise ValueError(unwrap( ''' Comparison is not supported for GeneralName objects of choice %s ''', self.name )) if other.name in ('other_name', 'x400_address', 'edi_party_name'): raise ValueError(unwrap( ''' Comparison is not supported for GeneralName objects of choice %s''', other.name )) if self.name != other.name: return False return self.chosen == other.chosen class GeneralNames(SequenceOf): _child_spec = GeneralName class Time(Choice): _alternatives = [ ('utc_time', UTCTime), ('general_time', GeneralizedTime), ] class Validity(Sequence): _fields = [ ('not_before', Time), ('not_after', Time), ] class BasicConstraints(Sequence): _fields = [ ('ca', Boolean, {'default': False}), ('path_len_constraint', Integer, {'optional': True}), ] class AuthorityKeyIdentifier(Sequence): _fields = [ ('key_identifier', OctetString, {'implicit': 0, 'optional': True}), ('authority_cert_issuer', GeneralNames, {'implicit': 1, 'optional': True}), ('authority_cert_serial_number', Integer, {'implicit': 2, 'optional': True}), ] class DistributionPointName(Choice): _alternatives = [ ('full_name', GeneralNames, {'implicit': 0}), ('name_relative_to_crl_issuer', RelativeDistinguishedName, {'implicit': 1}), ] class ReasonFlags(BitString): _map = { 0: 'unused', 1: 'key_compromise', 2: 'ca_compromise', 3: 'affiliation_changed', 4: 'superseded', 5: 'cessation_of_operation', 6: 'certificate_hold', 7: 'privilege_withdrawn', 8: 'aa_compromise', } class GeneralSubtree(Sequence): _fields = [ ('base', GeneralName), ('minimum', Integer, {'implicit': 0, 'default': 0}), ('maximum', Integer, {'implicit': 1, 'optional': True}), ] class GeneralSubtrees(SequenceOf): _child_spec = GeneralSubtree class NameConstraints(Sequence): _fields = [ ('permitted_subtrees', GeneralSubtrees, {'implicit': 0, 'optional': True}), ('excluded_subtrees', GeneralSubtrees, {'implicit': 1, 'optional': True}), ] class DistributionPoint(Sequence): _fields = [ ('distribution_point', DistributionPointName, {'explicit': 0, 'optional': True}), ('reasons', ReasonFlags, {'implicit': 1, 'optional': True}), ('crl_issuer', GeneralNames, {'implicit': 2, 'optional': True}), ] _url = False @property def url(self): """ :return: None or a unicode string of the distribution point's URL """ if self._url is False: self._url = None name = self['distribution_point'] if name.name != 'full_name': raise ValueError(unwrap( ''' CRL distribution points that are relative to the issuer are not supported ''' )) for general_name in name.chosen: if general_name.name == 'uniform_resource_identifier': url = general_name.native if url.lower().startswith(('http://', 'https://', 'ldap://', 'ldaps://')): self._url = url break return self._url class CRLDistributionPoints(SequenceOf): _child_spec = DistributionPoint class DisplayText(Choice): _alternatives = [ ('ia5_string', IA5String), ('visible_string', VisibleString), ('bmp_string', BMPString), ('utf8_string', UTF8String), ] class NoticeNumbers(SequenceOf): _child_spec = Integer class NoticeReference(Sequence): _fields = [ ('organization', DisplayText), ('notice_numbers', NoticeNumbers), ] class UserNotice(Sequence): _fields = [ ('notice_ref', NoticeReference, {'optional': True}), ('explicit_text', DisplayText, {'optional': True}), ] class PolicyQualifierId(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.2.1': 'certification_practice_statement', '1.3.6.1.5.5.7.2.2': 'user_notice', } class PolicyQualifierInfo(Sequence): _fields = [ ('policy_qualifier_id', PolicyQualifierId), ('qualifier', Any), ] _oid_pair = ('policy_qualifier_id', 'qualifier') _oid_specs = { 'certification_practice_statement': IA5String, 'user_notice': UserNotice, } class PolicyQualifierInfos(SequenceOf): _child_spec = PolicyQualifierInfo class PolicyIdentifier(ObjectIdentifier): _map = { '2.5.29.32.0': 'any_policy', } class PolicyInformation(Sequence): _fields = [ ('policy_identifier', PolicyIdentifier), ('policy_qualifiers', PolicyQualifierInfos, {'optional': True}) ] class CertificatePolicies(SequenceOf): _child_spec = PolicyInformation class PolicyMapping(Sequence): _fields = [ ('issuer_domain_policy', PolicyIdentifier), ('subject_domain_policy', PolicyIdentifier), ] class PolicyMappings(SequenceOf): _child_spec = PolicyMapping class PolicyConstraints(Sequence): _fields = [ ('require_explicit_policy', Integer, {'implicit': 0, 'optional': True}), ('inhibit_policy_mapping', Integer, {'implicit': 1, 'optional': True}), ] class KeyPurposeId(ObjectIdentifier): _map = { # https://tools.ietf.org/html/rfc5280#page-45 '2.5.29.37.0': 'any_extended_key_usage', '1.3.6.1.5.5.7.3.1': 'server_auth', '1.3.6.1.5.5.7.3.2': 'client_auth', '1.3.6.1.5.5.7.3.3': 'code_signing', '1.3.6.1.5.5.7.3.4': 'email_protection', '1.3.6.1.5.5.7.3.5': 'ipsec_end_system', '1.3.6.1.5.5.7.3.6': 'ipsec_tunnel', '1.3.6.1.5.5.7.3.7': 'ipsec_user', '1.3.6.1.5.5.7.3.8': 'time_stamping', '1.3.6.1.5.5.7.3.9': 'ocsp_signing', # http://tools.ietf.org/html/rfc3029.html#page-9 '1.3.6.1.5.5.7.3.10': 'dvcs', # http://tools.ietf.org/html/rfc6268.html#page-16 '1.3.6.1.5.5.7.3.13': 'eap_over_ppp', '1.3.6.1.5.5.7.3.14': 'eap_over_lan', # https://tools.ietf.org/html/rfc5055#page-76 '1.3.6.1.5.5.7.3.15': 'scvp_server', '1.3.6.1.5.5.7.3.16': 'scvp_client', # https://tools.ietf.org/html/rfc4945#page-31 '1.3.6.1.5.5.7.3.17': 'ipsec_ike', # https://tools.ietf.org/html/rfc5415#page-38 '1.3.6.1.5.5.7.3.18': 'capwap_ac', '1.3.6.1.5.5.7.3.19': 'capwap_wtp', # https://tools.ietf.org/html/rfc5924#page-8 '1.3.6.1.5.5.7.3.20': 'sip_domain', # https://tools.ietf.org/html/rfc6187#page-7 '1.3.6.1.5.5.7.3.21': 'secure_shell_client', '1.3.6.1.5.5.7.3.22': 'secure_shell_server', # https://tools.ietf.org/html/rfc6494#page-7 '1.3.6.1.5.5.7.3.23': 'send_router', '1.3.6.1.5.5.7.3.24': 'send_proxied_router', '1.3.6.1.5.5.7.3.25': 'send_owner', '1.3.6.1.5.5.7.3.26': 'send_proxied_owner', # https://tools.ietf.org/html/rfc6402#page-10 '1.3.6.1.5.5.7.3.27': 'cmc_ca', '1.3.6.1.5.5.7.3.28': 'cmc_ra', '1.3.6.1.5.5.7.3.29': 'cmc_archive', # https://tools.ietf.org/html/draft-ietf-sidr-bgpsec-pki-profiles-15#page-6 '1.3.6.1.5.5.7.3.30': 'bgpspec_router', # https://www.ietf.org/proceedings/44/I-D/draft-ietf-ipsec-pki-req-01.txt '1.3.6.1.5.5.8.2.2': 'ike_intermediate', # https://msdn.microsoft.com/en-us/library/windows/desktop/aa378132(v=vs.85).aspx # and https://support.microsoft.com/en-us/kb/287547 '1.3.6.1.4.1.311.10.3.1': 'microsoft_trust_list_signing', '1.3.6.1.4.1.311.10.3.2': 'microsoft_time_stamp_signing', '1.3.6.1.4.1.311.10.3.3': 'microsoft_server_gated', '1.3.6.1.4.1.311.10.3.3.1': 'microsoft_serialized', '1.3.6.1.4.1.311.10.3.4': 'microsoft_efs', '1.3.6.1.4.1.311.10.3.4.1': 'microsoft_efs_recovery', '1.3.6.1.4.1.311.10.3.5': 'microsoft_whql', '1.3.6.1.4.1.311.10.3.6': 'microsoft_nt5', '1.3.6.1.4.1.311.10.3.7': 'microsoft_oem_whql', '1.3.6.1.4.1.311.10.3.8': 'microsoft_embedded_nt', '1.3.6.1.4.1.311.10.3.9': 'microsoft_root_list_signer', '1.3.6.1.4.1.311.10.3.10': 'microsoft_qualified_subordination', '1.3.6.1.4.1.311.10.3.11': 'microsoft_key_recovery', '1.3.6.1.4.1.311.10.3.12': 'microsoft_document_signing', '1.3.6.1.4.1.311.10.3.13': 'microsoft_lifetime_signing', '1.3.6.1.4.1.311.10.3.14': 'microsoft_mobile_device_software', # https://support.microsoft.com/en-us/help/287547/object-ids-associated-with-microsoft-cryptography '1.3.6.1.4.1.311.20.2.2': 'microsoft_smart_card_logon', # https://opensource.apple.com/source # - /Security/Security-57031.40.6/Security/libsecurity_keychain/lib/SecPolicy.cpp # - /libsecurity_cssm/libsecurity_cssm-36064/lib/oidsalg.c '1.2.840.113635.100.1.2': 'apple_x509_basic', '1.2.840.113635.100.1.3': 'apple_ssl', '1.2.840.113635.100.1.4': 'apple_local_cert_gen', '1.2.840.113635.100.1.5': 'apple_csr_gen', '1.2.840.113635.100.1.6': 'apple_revocation_crl', '1.2.840.113635.100.1.7': 'apple_revocation_ocsp', '1.2.840.113635.100.1.8': 'apple_smime', '1.2.840.113635.100.1.9': 'apple_eap', '1.2.840.113635.100.1.10': 'apple_software_update_signing', '1.2.840.113635.100.1.11': 'apple_ipsec', '1.2.840.113635.100.1.12': 'apple_ichat', '1.2.840.113635.100.1.13': 'apple_resource_signing', '1.2.840.113635.100.1.14': 'apple_pkinit_client', '1.2.840.113635.100.1.15': 'apple_pkinit_server', '1.2.840.113635.100.1.16': 'apple_code_signing', '1.2.840.113635.100.1.17': 'apple_package_signing', '1.2.840.113635.100.1.18': 'apple_id_validation', '1.2.840.113635.100.1.20': 'apple_time_stamping', '1.2.840.113635.100.1.21': 'apple_revocation', '1.2.840.113635.100.1.22': 'apple_passbook_signing', '1.2.840.113635.100.1.23': 'apple_mobile_store', '1.2.840.113635.100.1.24': 'apple_escrow_service', '1.2.840.113635.100.1.25': 'apple_profile_signer', '1.2.840.113635.100.1.26': 'apple_qa_profile_signer', '1.2.840.113635.100.1.27': 'apple_test_mobile_store', '1.2.840.113635.100.1.28': 'apple_otapki_signer', '1.2.840.113635.100.1.29': 'apple_test_otapki_signer', '1.2.840.113625.100.1.30': 'apple_id_validation_record_signing_policy', '1.2.840.113625.100.1.31': 'apple_smp_encryption', '1.2.840.113625.100.1.32': 'apple_test_smp_encryption', '1.2.840.113635.100.1.33': 'apple_server_authentication', '1.2.840.113635.100.1.34': 'apple_pcs_escrow_service', # http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.201-2.pdf '2.16.840.1.101.3.6.8': 'piv_card_authentication', '2.16.840.1.101.3.6.7': 'piv_content_signing', # https://tools.ietf.org/html/rfc4556.html '1.3.6.1.5.2.3.4': 'pkinit_kpclientauth', '1.3.6.1.5.2.3.5': 'pkinit_kpkdc', # https://www.adobe.com/devnet-docs/acrobatetk/tools/DigSig/changes.html '1.2.840.113583.1.1.5': 'adobe_authentic_documents_trust', # https://www.idmanagement.gov/wp-content/uploads/sites/1171/uploads/fpki-pivi-cert-profiles.pdf '2.16.840.1.101.3.8.7': 'fpki_pivi_content_signing' } class ExtKeyUsageSyntax(SequenceOf): _child_spec = KeyPurposeId class AccessMethod(ObjectIdentifier): _map = { '1.3.6.1.5.5.7.48.1': 'ocsp', '1.3.6.1.5.5.7.48.2': 'ca_issuers', '1.3.6.1.5.5.7.48.3': 'time_stamping', '1.3.6.1.5.5.7.48.5': 'ca_repository', } class AccessDescription(Sequence): _fields = [ ('access_method', AccessMethod), ('access_location', GeneralName), ] class AuthorityInfoAccessSyntax(SequenceOf): _child_spec = AccessDescription class SubjectInfoAccessSyntax(SequenceOf): _child_spec = AccessDescription # https://tools.ietf.org/html/rfc7633 class Features(SequenceOf): _child_spec = Integer class EntrustVersionInfo(Sequence): _fields = [ ('entrust_vers', GeneralString), ('entrust_info_flags', BitString) ] class NetscapeCertificateType(BitString): _map = { 0: 'ssl_client', 1: 'ssl_server', 2: 'email', 3: 'object_signing', 4: 'reserved', 5: 'ssl_ca', 6: 'email_ca', 7: 'object_signing_ca', } class Version(Integer): _map = { 0: 'v1', 1: 'v2', 2: 'v3', } class TPMSpecification(Sequence): _fields = [ ('family', UTF8String), ('level', Integer), ('revision', Integer), ] class SetOfTPMSpecification(SetOf): _child_spec = TPMSpecification class TCGSpecificationVersion(Sequence): _fields = [ ('major_version', Integer), ('minor_version', Integer), ('revision', Integer), ] class TCGPlatformSpecification(Sequence): _fields = [ ('version', TCGSpecificationVersion), ('platform_class', OctetString), ] class SetOfTCGPlatformSpecification(SetOf): _child_spec = TCGPlatformSpecification class EKGenerationType(Enumerated): _map = { 0: 'internal', 1: 'injected', 2: 'internal_revocable', 3: 'injected_revocable', } class EKGenerationLocation(Enumerated): _map = { 0: 'tpm_manufacturer', 1: 'platform_manufacturer', 2: 'ek_cert_signer', } class EKCertificateGenerationLocation(Enumerated): _map = { 0: 'tpm_manufacturer', 1: 'platform_manufacturer', 2: 'ek_cert_signer', } class EvaluationAssuranceLevel(Enumerated): _map = { 1: 'level1', 2: 'level2', 3: 'level3', 4: 'level4', 5: 'level5', 6: 'level6', 7: 'level7', } class EvaluationStatus(Enumerated): _map = { 0: 'designed_to_meet', 1: 'evaluation_in_progress', 2: 'evaluation_completed', } class StrengthOfFunction(Enumerated): _map = { 0: 'basic', 1: 'medium', 2: 'high', } class URIReference(Sequence): _fields = [ ('uniform_resource_identifier', IA5String), ('hash_algorithm', DigestAlgorithm, {'optional': True}), ('hash_value', BitString, {'optional': True}), ] class CommonCriteriaMeasures(Sequence): _fields = [ ('version', IA5String), ('assurance_level', EvaluationAssuranceLevel), ('evaluation_status', EvaluationStatus), ('plus', Boolean, {'default': False}), ('strengh_of_function', StrengthOfFunction, {'implicit': 0, 'optional': True}), ('profile_oid', ObjectIdentifier, {'implicit': 1, 'optional': True}), ('profile_url', URIReference, {'implicit': 2, 'optional': True}), ('target_oid', ObjectIdentifier, {'implicit': 3, 'optional': True}), ('target_uri', URIReference, {'implicit': 4, 'optional': True}), ] class SecurityLevel(Enumerated): _map = { 1: 'level1', 2: 'level2', 3: 'level3', 4: 'level4', } class FIPSLevel(Sequence): _fields = [ ('version', IA5String), ('level', SecurityLevel), ('plus', Boolean, {'default': False}), ] class TPMSecurityAssertions(Sequence): _fields = [ ('version', Version, {'default': 'v1'}), ('field_upgradable', Boolean, {'default': False}), ('ek_generation_type', EKGenerationType, {'implicit': 0, 'optional': True}), ('ek_generation_location', EKGenerationLocation, {'implicit': 1, 'optional': True}), ('ek_certificate_generation_location', EKCertificateGenerationLocation, {'implicit': 2, 'optional': True}), ('cc_info', CommonCriteriaMeasures, {'implicit': 3, 'optional': True}), ('fips_level', FIPSLevel, {'implicit': 4, 'optional': True}), ('iso_9000_certified', Boolean, {'implicit': 5, 'default': False}), ('iso_9000_uri', IA5String, {'optional': True}), ] class SetOfTPMSecurityAssertions(SetOf): _child_spec = TPMSecurityAssertions class SubjectDirectoryAttributeId(ObjectIdentifier): _map = { # https://tools.ietf.org/html/rfc2256#page-11 '2.5.4.52': 'supported_algorithms', # https://www.trustedcomputinggroup.org/wp-content/uploads/Credential_Profile_EK_V2.0_R14_published.pdf '2.23.133.2.16': 'tpm_specification', '2.23.133.2.17': 'tcg_platform_specification', '2.23.133.2.18': 'tpm_security_assertions', # https://tools.ietf.org/html/rfc3739#page-18 '1.3.6.1.5.5.7.9.1': 'pda_date_of_birth', '1.3.6.1.5.5.7.9.2': 'pda_place_of_birth', '1.3.6.1.5.5.7.9.3': 'pda_gender', '1.3.6.1.5.5.7.9.4': 'pda_country_of_citizenship', '1.3.6.1.5.5.7.9.5': 'pda_country_of_residence', # https://holtstrom.com/michael/tools/asn1decoder.php '1.2.840.113533.7.68.29': 'entrust_user_role', } class SetOfGeneralizedTime(SetOf): _child_spec = GeneralizedTime class SetOfDirectoryString(SetOf): _child_spec = DirectoryString class SetOfPrintableString(SetOf): _child_spec = PrintableString class SupportedAlgorithm(Sequence): _fields = [ ('algorithm_identifier', AnyAlgorithmIdentifier), ('intended_usage', KeyUsage, {'explicit': 0, 'optional': True}), ('intended_certificate_policies', CertificatePolicies, {'explicit': 1, 'optional': True}), ] class SetOfSupportedAlgorithm(SetOf): _child_spec = SupportedAlgorithm class SubjectDirectoryAttribute(Sequence): _fields = [ ('type', SubjectDirectoryAttributeId), ('values', Any), ] _oid_pair = ('type', 'values') _oid_specs = { 'supported_algorithms': SetOfSupportedAlgorithm, 'tpm_specification': SetOfTPMSpecification, 'tcg_platform_specification': SetOfTCGPlatformSpecification, 'tpm_security_assertions': SetOfTPMSecurityAssertions, 'pda_date_of_birth': SetOfGeneralizedTime, 'pda_place_of_birth': SetOfDirectoryString, 'pda_gender': SetOfPrintableString, 'pda_country_of_citizenship': SetOfPrintableString, 'pda_country_of_residence': SetOfPrintableString, } def _values_spec(self): type_ = self['type'].native if type_ in self._oid_specs: return self._oid_specs[type_] return SetOf _spec_callbacks = { 'values': _values_spec } class SubjectDirectoryAttributes(SequenceOf): _child_spec = SubjectDirectoryAttribute class ExtensionId(ObjectIdentifier): _map = { '2.5.29.9': 'subject_directory_attributes', '2.5.29.14': 'key_identifier', '2.5.29.15': 'key_usage', '2.5.29.16': 'private_key_usage_period', '2.5.29.17': 'subject_alt_name', '2.5.29.18': 'issuer_alt_name', '2.5.29.19': 'basic_constraints', '2.5.29.30': 'name_constraints', '2.5.29.31': 'crl_distribution_points', '2.5.29.32': 'certificate_policies', '2.5.29.33': 'policy_mappings', '2.5.29.35': 'authority_key_identifier', '2.5.29.36': 'policy_constraints', '2.5.29.37': 'extended_key_usage', '2.5.29.46': 'freshest_crl', '2.5.29.54': 'inhibit_any_policy', '1.3.6.1.5.5.7.1.1': 'authority_information_access', '1.3.6.1.5.5.7.1.11': 'subject_information_access', # https://tools.ietf.org/html/rfc7633 '1.3.6.1.5.5.7.1.24': 'tls_feature', '1.3.6.1.5.5.7.48.1.5': 'ocsp_no_check', '1.2.840.113533.7.65.0': 'entrust_version_extension', '2.16.840.1.113730.1.1': 'netscape_certificate_type', # https://tools.ietf.org/html/rfc6962.html#page-14 '1.3.6.1.4.1.11129.2.4.2': 'signed_certificate_timestamp_list', # https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wcce/3aec3e50-511a-42f9-a5d5-240af503e470 '1.3.6.1.4.1.311.20.2': 'microsoft_enroll_certtype', } class Extension(Sequence): _fields = [ ('extn_id', ExtensionId), ('critical', Boolean, {'default': False}), ('extn_value', ParsableOctetString), ] _oid_pair = ('extn_id', 'extn_value') _oid_specs = { 'subject_directory_attributes': SubjectDirectoryAttributes, 'key_identifier': OctetString, 'key_usage': KeyUsage, 'private_key_usage_period': PrivateKeyUsagePeriod, 'subject_alt_name': GeneralNames, 'issuer_alt_name': GeneralNames, 'basic_constraints': BasicConstraints, 'name_constraints': NameConstraints, 'crl_distribution_points': CRLDistributionPoints, 'certificate_policies': CertificatePolicies, 'policy_mappings': PolicyMappings, 'authority_key_identifier': AuthorityKeyIdentifier, 'policy_constraints': PolicyConstraints, 'extended_key_usage': ExtKeyUsageSyntax, 'freshest_crl': CRLDistributionPoints, 'inhibit_any_policy': Integer, 'authority_information_access': AuthorityInfoAccessSyntax, 'subject_information_access': SubjectInfoAccessSyntax, 'tls_feature': Features, 'ocsp_no_check': Null, 'entrust_version_extension': EntrustVersionInfo, 'netscape_certificate_type': NetscapeCertificateType, 'signed_certificate_timestamp_list': OctetString, # Not UTF8String as Microsofts docs claim, see: # https://www.alvestrand.no/objectid/1.3.6.1.4.1.311.20.2.html 'microsoft_enroll_certtype': BMPString, } class Extensions(SequenceOf): _child_spec = Extension class TbsCertificate(Sequence): _fields = [ ('version', Version, {'explicit': 0, 'default': 'v1'}), ('serial_number', Integer), ('signature', SignedDigestAlgorithm), ('issuer', Name), ('validity', Validity), ('subject', Name), ('subject_public_key_info', PublicKeyInfo), ('issuer_unique_id', OctetBitString, {'implicit': 1, 'optional': True}), ('subject_unique_id', OctetBitString, {'implicit': 2, 'optional': True}), ('extensions', Extensions, {'explicit': 3, 'optional': True}), ] class Certificate(Sequence): _fields = [ ('tbs_certificate', TbsCertificate), ('signature_algorithm', SignedDigestAlgorithm), ('signature_value', OctetBitString), ] _processed_extensions = False _critical_extensions = None _subject_directory_attributes_value = None _key_identifier_value = None _key_usage_value = None _subject_alt_name_value = None _issuer_alt_name_value = None _basic_constraints_value = None _name_constraints_value = None _crl_distribution_points_value = None _certificate_policies_value = None _policy_mappings_value = None _authority_key_identifier_value = None _policy_constraints_value = None _freshest_crl_value = None _inhibit_any_policy_value = None _extended_key_usage_value = None _authority_information_access_value = None _subject_information_access_value = None _private_key_usage_period_value = None _tls_feature_value = None _ocsp_no_check_value = None _issuer_serial = None _authority_issuer_serial = False _crl_distribution_points = None _delta_crl_distribution_points = None _valid_domains = None _valid_ips = None _self_issued = None _self_signed = None _sha1 = None _sha256 = None def _set_extensions(self): """ Sets common named extensions to private attributes and creates a list of critical extensions """ self._critical_extensions = set() for extension in self['tbs_certificate']['extensions']: name = extension['extn_id'].native attribute_name = '_%s_value' % name if hasattr(self, attribute_name): setattr(self, attribute_name, extension['extn_value'].parsed) if extension['critical'].native: self._critical_extensions.add(name) self._processed_extensions = True @property def critical_extensions(self): """ Returns a set of the names (or OID if not a known extension) of the extensions marked as critical :return: A set of unicode strings """ if not self._processed_extensions: self._set_extensions() return self._critical_extensions @property def private_key_usage_period_value(self): """ This extension is used to constrain the period over which the subject private key may be used :return: None or a PrivateKeyUsagePeriod object """ if not self._processed_extensions: self._set_extensions() return self._private_key_usage_period_value @property def subject_directory_attributes_value(self): """ This extension is used to contain additional identification attributes about the subject. :return: None or a SubjectDirectoryAttributes object """ if not self._processed_extensions: self._set_extensions() return self._subject_directory_attributes_value @property def key_identifier_value(self): """ This extension is used to help in creating certificate validation paths. It contains an identifier that should generally, but is not guaranteed to, be unique. :return: None or an OctetString object """ if not self._processed_extensions: self._set_extensions() return self._key_identifier_value @property def key_usage_value(self): """ This extension is used to define the purpose of the public key contained within the certificate. :return: None or a KeyUsage """ if not self._processed_extensions: self._set_extensions() return self._key_usage_value @property def subject_alt_name_value(self): """ This extension allows for additional names to be associate with the subject of the certificate. While it may contain a whole host of possible names, it is usually used to allow certificates to be used with multiple different domain names. :return: None or a GeneralNames object """ if not self._processed_extensions: self._set_extensions() return self._subject_alt_name_value @property def issuer_alt_name_value(self): """ This extension allows associating one or more alternative names with the issuer of the certificate. :return: None or an x509.GeneralNames object """ if not self._processed_extensions: self._set_extensions() return self._issuer_alt_name_value @property def basic_constraints_value(self): """ This extension is used to determine if the subject of the certificate is a CA, and if so, what the maximum number of intermediate CA certs after this are, before an end-entity certificate is found. :return: None or a BasicConstraints object """ if not self._processed_extensions: self._set_extensions() return self._basic_constraints_value @property def name_constraints_value(self): """ This extension is used in CA certificates, and is used to limit the possible names of certificates issued. :return: None or a NameConstraints object """ if not self._processed_extensions: self._set_extensions() return self._name_constraints_value @property def crl_distribution_points_value(self): """ This extension is used to help in locating the CRL for this certificate. :return: None or a CRLDistributionPoints object extension """ if not self._processed_extensions: self._set_extensions() return self._crl_distribution_points_value @property def certificate_policies_value(self): """ This extension defines policies in CA certificates under which certificates may be issued. In end-entity certificates, the inclusion of a policy indicates the issuance of the certificate follows the policy. :return: None or a CertificatePolicies object """ if not self._processed_extensions: self._set_extensions() return self._certificate_policies_value @property def policy_mappings_value(self): """ This extension allows mapping policy OIDs to other OIDs. This is used to allow different policies to be treated as equivalent in the process of validation. :return: None or a PolicyMappings object """ if not self._processed_extensions: self._set_extensions() return self._policy_mappings_value @property def authority_key_identifier_value(self): """ This extension helps in identifying the public key with which to validate the authenticity of the certificate. :return: None or an AuthorityKeyIdentifier object """ if not self._processed_extensions: self._set_extensions() return self._authority_key_identifier_value @property def policy_constraints_value(self): """ This extension is used to control if policy mapping is allowed and when policies are required. :return: None or a PolicyConstraints object """ if not self._processed_extensions: self._set_extensions() return self._policy_constraints_value @property def freshest_crl_value(self): """ This extension is used to help locate any available delta CRLs :return: None or an CRLDistributionPoints object """ if not self._processed_extensions: self._set_extensions() return self._freshest_crl_value @property def inhibit_any_policy_value(self): """ This extension is used to prevent mapping of the any policy to specific requirements :return: None or a Integer object """ if not self._processed_extensions: self._set_extensions() return self._inhibit_any_policy_value @property def extended_key_usage_value(self): """ This extension is used to define additional purposes for the public key beyond what is contained in the basic constraints. :return: None or an ExtKeyUsageSyntax object """ if not self._processed_extensions: self._set_extensions() return self._extended_key_usage_value @property def authority_information_access_value(self): """ This extension is used to locate the CA certificate used to sign this certificate, or the OCSP responder for this certificate. :return: None or an AuthorityInfoAccessSyntax object """ if not self._processed_extensions: self._set_extensions() return self._authority_information_access_value @property def subject_information_access_value(self): """ This extension is used to access information about the subject of this certificate. :return: None or a SubjectInfoAccessSyntax object """ if not self._processed_extensions: self._set_extensions() return self._subject_information_access_value @property def tls_feature_value(self): """ This extension is used to list the TLS features a server must respond with if a client initiates a request supporting them. :return: None or a Features object """ if not self._processed_extensions: self._set_extensions() return self._tls_feature_value @property def ocsp_no_check_value(self): """ This extension is used on certificates of OCSP responders, indicating that revocation information for the certificate should never need to be verified, thus preventing possible loops in path validation. :return: None or a Null object (if present) """ if not self._processed_extensions: self._set_extensions() return self._ocsp_no_check_value @property def signature(self): """ :return: A byte string of the signature """ return self['signature_value'].native @property def signature_algo(self): """ :return: A unicode string of "rsassa_pkcs1v15", "rsassa_pss", "dsa", "ecdsa" """ return self['signature_algorithm'].signature_algo @property def hash_algo(self): """ :return: A unicode string of "md2", "md5", "sha1", "sha224", "sha256", "sha384", "sha512", "sha512_224", "sha512_256" """ return self['signature_algorithm'].hash_algo @property def public_key(self): """ :return: The PublicKeyInfo object for this certificate """ return self['tbs_certificate']['subject_public_key_info'] @property def subject(self): """ :return: The Name object for the subject of this certificate """ return self['tbs_certificate']['subject'] @property def issuer(self): """ :return: The Name object for the issuer of this certificate """ return self['tbs_certificate']['issuer'] @property def serial_number(self): """ :return: An integer of the certificate's serial number """ return self['tbs_certificate']['serial_number'].native @property def key_identifier(self): """ :return: None or a byte string of the certificate's key identifier from the key identifier extension """ if not self.key_identifier_value: return None return self.key_identifier_value.native @property def issuer_serial(self): """ :return: A byte string of the SHA-256 hash of the issuer concatenated with the ascii character ":", concatenated with the serial number as an ascii string """ if self._issuer_serial is None: self._issuer_serial = self.issuer.sha256 + b':' + str_cls(self.serial_number).encode('ascii') return self._issuer_serial @property def not_valid_after(self): """ :return: A datetime of latest time when the certificate is still valid """ return self['tbs_certificate']['validity']['not_after'].native @property def not_valid_before(self): """ :return: A datetime of the earliest time when the certificate is valid """ return self['tbs_certificate']['validity']['not_before'].native @property def authority_key_identifier(self): """ :return: None or a byte string of the key_identifier from the authority key identifier extension """ if not self.authority_key_identifier_value: return None return self.authority_key_identifier_value['key_identifier'].native @property def authority_issuer_serial(self): """ :return: None or a byte string of the SHA-256 hash of the isser from the authority key identifier extension concatenated with the ascii character ":", concatenated with the serial number from the authority key identifier extension as an ascii string """ if self._authority_issuer_serial is False: akiv = self.authority_key_identifier_value if akiv and akiv['authority_cert_issuer'].native: issuer = self.authority_key_identifier_value['authority_cert_issuer'][0].chosen # We untag the element since it is tagged via being a choice from GeneralName issuer = issuer.untag() authority_serial = self.authority_key_identifier_value['authority_cert_serial_number'].native self._authority_issuer_serial = issuer.sha256 + b':' + str_cls(authority_serial).encode('ascii') else: self._authority_issuer_serial = None return self._authority_issuer_serial @property def crl_distribution_points(self): """ Returns complete CRL URLs - does not include delta CRLs :return: A list of zero or more DistributionPoint objects """ if self._crl_distribution_points is None: self._crl_distribution_points = self._get_http_crl_distribution_points(self.crl_distribution_points_value) return self._crl_distribution_points @property def delta_crl_distribution_points(self): """ Returns delta CRL URLs - does not include complete CRLs :return: A list of zero or more DistributionPoint objects """ if self._delta_crl_distribution_points is None: self._delta_crl_distribution_points = self._get_http_crl_distribution_points(self.freshest_crl_value) return self._delta_crl_distribution_points def _get_http_crl_distribution_points(self, crl_distribution_points): """ Fetches the DistributionPoint object for non-relative, HTTP CRLs referenced by the certificate :param crl_distribution_points: A CRLDistributionPoints object to grab the DistributionPoints from :return: A list of zero or more DistributionPoint objects """ output = [] if crl_distribution_points is None: return [] for distribution_point in crl_distribution_points: distribution_point_name = distribution_point['distribution_point'] if distribution_point_name is VOID: continue # RFC 5280 indicates conforming CA should not use the relative form if distribution_point_name.name == 'name_relative_to_crl_issuer': continue # This library is currently only concerned with HTTP-based CRLs for general_name in distribution_point_name.chosen: if general_name.name == 'uniform_resource_identifier': output.append(distribution_point) return output @property def ocsp_urls(self): """ :return: A list of zero or more unicode strings of the OCSP URLs for this cert """ if not self.authority_information_access_value: return [] output = [] for entry in self.authority_information_access_value: if entry['access_method'].native == 'ocsp': location = entry['access_location'] if location.name != 'uniform_resource_identifier': continue url = location.native if url.lower().startswith(('http://', 'https://', 'ldap://', 'ldaps://')): output.append(url) return output @property def valid_domains(self): """ :return: A list of unicode strings of valid domain names for the certificate. Wildcard certificates will have a domain in the form: *.example.com """ if self._valid_domains is None: self._valid_domains = [] # For the subject alt name extension, we can look at the name of # the choice selected since it distinguishes between domain names, # email addresses, IPs, etc if self.subject_alt_name_value: for general_name in self.subject_alt_name_value: if general_name.name == 'dns_name' and general_name.native not in self._valid_domains: self._valid_domains.append(general_name.native) # If there was no subject alt name extension, and the common name # in the subject looks like a domain, that is considered the valid # list. This is done because according to # https://tools.ietf.org/html/rfc6125#section-6.4.4, the common # name should not be used if the subject alt name is present. else: pattern = re.compile('^(\\*\\.)?(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-]*[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$') for rdn in self.subject.chosen: for name_type_value in rdn: if name_type_value['type'].native == 'common_name': value = name_type_value['value'].native if pattern.match(value): self._valid_domains.append(value) return self._valid_domains @property def valid_ips(self): """ :return: A list of unicode strings of valid IP addresses for the certificate """ if self._valid_ips is None: self._valid_ips = [] if self.subject_alt_name_value: for general_name in self.subject_alt_name_value: if general_name.name == 'ip_address': self._valid_ips.append(general_name.native) return self._valid_ips @property def ca(self): """ :return; A boolean - if the certificate is marked as a CA """ return self.basic_constraints_value and self.basic_constraints_value['ca'].native @property def max_path_length(self): """ :return; None or an integer of the maximum path length """ if not self.ca: return None return self.basic_constraints_value['path_len_constraint'].native @property def self_issued(self): """ :return: A boolean - if the certificate is self-issued, as defined by RFC 5280 """ if self._self_issued is None: self._self_issued = self.subject == self.issuer return self._self_issued @property def self_signed(self): """ :return: A unicode string of "no" or "maybe". The "maybe" result will be returned if the certificate issuer and subject are the same. If a key identifier and authority key identifier are present, they will need to match otherwise "no" will be returned. To verify is a certificate is truly self-signed, the signature will need to be verified. See the certvalidator package for one possible solution. """ if self._self_signed is None: self._self_signed = 'no' if self.self_issued: if self.key_identifier: if not self.authority_key_identifier: self._self_signed = 'maybe' elif self.authority_key_identifier == self.key_identifier: self._self_signed = 'maybe' else: self._self_signed = 'maybe' return self._self_signed @property def sha1(self): """ :return: The SHA-1 hash of the DER-encoded bytes of this complete certificate """ if self._sha1 is None: self._sha1 = hashlib.sha1(self.dump()).digest() return self._sha1 @property def sha1_fingerprint(self): """ :return: A unicode string of the SHA-1 hash, formatted using hex encoding with a space between each pair of characters, all uppercase """ return ' '.join('%02X' % c for c in bytes_to_list(self.sha1)) @property def sha256(self): """ :return: The SHA-256 hash of the DER-encoded bytes of this complete certificate """ if self._sha256 is None: self._sha256 = hashlib.sha256(self.dump()).digest() return self._sha256 @property def sha256_fingerprint(self): """ :return: A unicode string of the SHA-256 hash, formatted using hex encoding with a space between each pair of characters, all uppercase """ return ' '.join('%02X' % c for c in bytes_to_list(self.sha256)) def is_valid_domain_ip(self, domain_ip): """ Check if a domain name or IP address is valid according to the certificate :param domain_ip: A unicode string of a domain name or IP address :return: A boolean - if the domain or IP is valid for the certificate """ if not isinstance(domain_ip, str_cls): raise TypeError(unwrap( ''' domain_ip must be a unicode string, not %s ''', type_name(domain_ip) )) encoded_domain_ip = domain_ip.encode('idna').decode('ascii').lower() is_ipv6 = encoded_domain_ip.find(':') != -1 is_ipv4 = not is_ipv6 and re.match('^\\d+\\.\\d+\\.\\d+\\.\\d+$', encoded_domain_ip) is_domain = not is_ipv6 and not is_ipv4 # Handle domain name checks if is_domain: if not self.valid_domains: return False domain_labels = encoded_domain_ip.split('.') for valid_domain in self.valid_domains: encoded_valid_domain = valid_domain.encode('idna').decode('ascii').lower() valid_domain_labels = encoded_valid_domain.split('.') # The domain must be equal in label length to match if len(valid_domain_labels) != len(domain_labels): continue if valid_domain_labels == domain_labels: return True is_wildcard = self._is_wildcard_domain(encoded_valid_domain) if is_wildcard and self._is_wildcard_match(domain_labels, valid_domain_labels): return True return False # Handle IP address checks if not self.valid_ips: return False family = socket.AF_INET if is_ipv4 else socket.AF_INET6 normalized_ip = inet_pton(family, encoded_domain_ip) for valid_ip in self.valid_ips: valid_family = socket.AF_INET if valid_ip.find('.') != -1 else socket.AF_INET6 normalized_valid_ip = inet_pton(valid_family, valid_ip) if normalized_valid_ip == normalized_ip: return True return False def _is_wildcard_domain(self, domain): """ Checks if a domain is a valid wildcard according to https://tools.ietf.org/html/rfc6125#section-6.4.3 :param domain: A unicode string of the domain name, where any U-labels from an IDN have been converted to A-labels :return: A boolean - if the domain is a valid wildcard domain """ # The * character must be present for a wildcard match, and if there is # most than one, it is an invalid wildcard specification if domain.count('*') != 1: return False labels = domain.lower().split('.') if not labels: return False # Wildcards may only appear in the left-most label if labels[0].find('*') == -1: return False # Wildcards may not be embedded in an A-label from an IDN if labels[0][0:4] == 'xn--': return False return True def _is_wildcard_match(self, domain_labels, valid_domain_labels): """ Determines if the labels in a domain are a match for labels from a wildcard valid domain name :param domain_labels: A list of unicode strings, with A-label form for IDNs, of the labels in the domain name to check :param valid_domain_labels: A list of unicode strings, with A-label form for IDNs, of the labels in a wildcard domain pattern :return: A boolean - if the domain matches the valid domain """ first_domain_label = domain_labels[0] other_domain_labels = domain_labels[1:] wildcard_label = valid_domain_labels[0] other_valid_domain_labels = valid_domain_labels[1:] # The wildcard is only allowed in the first label, so if # The subsequent labels are not equal, there is no match if other_domain_labels != other_valid_domain_labels: return False if wildcard_label == '*': return True wildcard_regex = re.compile('^' + wildcard_label.replace('*', '.*') + '$') if wildcard_regex.match(first_domain_label): return True return False # The structures are taken from the OpenSSL source file x_x509a.c, and specify # extra information that is added to X.509 certificates to store trust # information about the certificate. class KeyPurposeIdentifiers(SequenceOf): _child_spec = KeyPurposeId class SequenceOfAlgorithmIdentifiers(SequenceOf): _child_spec = AlgorithmIdentifier class CertificateAux(Sequence): _fields = [ ('trust', KeyPurposeIdentifiers, {'optional': True}), ('reject', KeyPurposeIdentifiers, {'implicit': 0, 'optional': True}), ('alias', UTF8String, {'optional': True}), ('keyid', OctetString, {'optional': True}), ('other', SequenceOfAlgorithmIdentifiers, {'implicit': 1, 'optional': True}), ] class TrustedCertificate(Concat): _child_specs = [Certificate, CertificateAux] ================================================ FILE: libs/asn1crypto-1.5.1.dist-info/LICENSE ================================================ Copyright (c) 2015-2022 Will Bond Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: libs/asn1crypto-1.5.1.dist-info/METADATA ================================================ Metadata-Version: 2.1 Name: asn1crypto Version: 1.5.1 Summary: Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP Home-page: https://github.com/wbond/asn1crypto Author: wbond Author-email: will@wbond.net License: MIT Keywords: asn1 crypto pki x509 certificate rsa dsa ec dh Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Security :: Cryptography Description-Content-Type: text/markdown # asn1crypto A fast, pure Python library for parsing and serializing ASN.1 structures. - [Features](#features) - [Why Another Python ASN.1 Library?](#why-another-python-asn1-library) - [Related Crypto Libraries](#related-crypto-libraries) - [Current Release](#current-release) - [Dependencies](#dependencies) - [Installation](#installation) - [License](#license) - [Security Policy](#security-policy) - [Documentation](#documentation) - [Continuous Integration](#continuous-integration) - [Testing](#testing) - [Development](#development) - [CI Tasks](#ci-tasks) [![GitHub Actions CI](https://github.com/wbond/asn1crypto/workflows/CI/badge.svg)](https://github.com/wbond/asn1crypto/actions?workflow=CI) [![CircleCI](https://circleci.com/gh/wbond/asn1crypto.svg?style=shield)](https://circleci.com/gh/wbond/asn1crypto) [![PyPI](https://img.shields.io/pypi/v/asn1crypto.svg)](https://pypi.org/project/asn1crypto/) ## Features In addition to an ASN.1 BER/DER decoder and DER serializer, the project includes a bunch of ASN.1 structures for use with various common cryptography standards: | Standard | Module | Source | | ---------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | X.509 | [`asn1crypto.x509`](asn1crypto/x509.py) | [RFC 5280](https://tools.ietf.org/html/rfc5280) | | CRL | [`asn1crypto.crl`](asn1crypto/crl.py) | [RFC 5280](https://tools.ietf.org/html/rfc5280) | | CSR | [`asn1crypto.csr`](asn1crypto/csr.py) | [RFC 2986](https://tools.ietf.org/html/rfc2986), [RFC 2985](https://tools.ietf.org/html/rfc2985) | | OCSP | [`asn1crypto.ocsp`](asn1crypto/ocsp.py) | [RFC 6960](https://tools.ietf.org/html/rfc6960) | | PKCS#12 | [`asn1crypto.pkcs12`](asn1crypto/pkcs12.py) | [RFC 7292](https://tools.ietf.org/html/rfc7292) | | PKCS#8 | [`asn1crypto.keys`](asn1crypto/keys.py) | [RFC 5208](https://tools.ietf.org/html/rfc5208) | | PKCS#1 v2.1 (RSA keys) | [`asn1crypto.keys`](asn1crypto/keys.py) | [RFC 3447](https://tools.ietf.org/html/rfc3447) | | DSA keys | [`asn1crypto.keys`](asn1crypto/keys.py) | [RFC 3279](https://tools.ietf.org/html/rfc3279) | | Elliptic curve keys | [`asn1crypto.keys`](asn1crypto/keys.py) | [SECG SEC1 V2](http://www.secg.org/sec1-v2.pdf) | | PKCS#3 v1.4 | [`asn1crypto.algos`](asn1crypto/algos.py) | [PKCS#3 v1.4](ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-3.asc) | | PKCS#5 v2.1 | [`asn1crypto.algos`](asn1crypto/algos.py) | [PKCS#5 v2.1](http://www.emc.com/collateral/white-papers/h11302-pkcs5v2-1-password-based-cryptography-standard-wp.pdf) | | CMS (and PKCS#7) | [`asn1crypto.cms`](asn1crypto/cms.py) | [RFC 5652](https://tools.ietf.org/html/rfc5652), [RFC 2315](https://tools.ietf.org/html/rfc2315) | | TSP | [`asn1crypto.tsp`](asn1crypto/tsp.py) | [RFC 3161](https://tools.ietf.org/html/rfc3161) | | PDF signatures | [`asn1crypto.pdf`](asn1crypto/pdf.py) | [PDF 1.7](http://wwwimages.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf) | ## Why Another Python ASN.1 Library? Python has long had the [pyasn1](https://pypi.org/project/pyasn1/) and [pyasn1_modules](https://pypi.org/project/pyasn1-modules/) available for parsing and serializing ASN.1 structures. While the project does include a comprehensive set of tools for parsing and serializing, the performance of the library can be very poor, especially when dealing with bit fields and parsing large structures such as CRLs. After spending extensive time using *pyasn1*, the following issues were identified: 1. Poor performance 2. Verbose, non-pythonic API 3. Out-dated and incomplete definitions in *pyasn1-modules* 4. No simple way to map data to native Python data structures 5. No mechanism for overridden universal ASN.1 types The *pyasn1* API is largely method driven, and uses extensive configuration objects and lowerCamelCase names. There were no consistent options for converting types of native Python data structures. Since the project supports out-dated versions of Python, many newer language features are unavailable for use. Time was spent trying to profile issues with the performance, however the architecture made it hard to pin down the primary source of the poor performance. Attempts were made to improve performance by utilizing unreleased patches and delaying parsing using the `Any` type. Even with such changes, the performance was still unacceptably slow. Finally, a number of structures in the cryptographic space use universal data types such as `BitString` and `OctetString`, but interpret the data as other types. For instance, signatures are really byte strings, but are encoded as `BitString`. Elliptic curve keys use both `BitString` and `OctetString` to represent integers. Parsing these structures as the base universal types and then re-interpreting them wastes computation. *asn1crypto* uses the following techniques to improve performance, especially when extracting one or two fields from large, complex structures: - Delayed parsing of byte string values - Persistence of original ASN.1 encoded data until a value is changed - Lazy loading of child fields - Utilization of high-level Python stdlib modules While there is no extensive performance test suite, the `CRLTests.test_parse_crl` test case was used to parse a 21MB CRL file on a late 2013 rMBP. *asn1crypto* parsed the certificate serial numbers in just under 8 seconds. With *pyasn1*, using definitions from *pyasn1-modules*, the same parsing took over 4,100 seconds. For smaller structures the performance difference can range from a few times faster to an order of magnitude or more. ## Related Crypto Libraries *asn1crypto* is part of the modularcrypto family of Python packages: - [asn1crypto](https://github.com/wbond/asn1crypto) - [oscrypto](https://github.com/wbond/oscrypto) - [csrbuilder](https://github.com/wbond/csrbuilder) - [certbuilder](https://github.com/wbond/certbuilder) - [crlbuilder](https://github.com/wbond/crlbuilder) - [ocspbuilder](https://github.com/wbond/ocspbuilder) - [certvalidator](https://github.com/wbond/certvalidator) ## Current Release 1.5.0 - [changelog](changelog.md) ## Dependencies Python 2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10 or pypy. *No third-party packages required.* ## Installation ```bash pip install asn1crypto ``` ## License *asn1crypto* is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file for the exact license text. ## Security Policy The security policies for this project are covered in [SECURITY.md](https://github.com/wbond/asn1crypto/blob/master/SECURITY.md). ## Documentation The documentation for *asn1crypto* is composed of tutorials on basic usage and links to the source for the various pre-defined type classes. ### Tutorials - [Universal Types with BER/DER Decoder and DER Encoder](docs/universal_types.md) - [PEM Encoder and Decoder](docs/pem.md) ### Reference - [Universal types](asn1crypto/core.py), `asn1crypto.core` - [Digest, HMAC, signed digest and encryption algorithms](asn1crypto/algos.py), `asn1crypto.algos` - [Private and public keys](asn1crypto/keys.py), `asn1crypto.keys` - [X509 certificates](asn1crypto/x509.py), `asn1crypto.x509` - [Certificate revocation lists (CRLs)](asn1crypto/crl.py), `asn1crypto.crl` - [Online certificate status protocol (OCSP)](asn1crypto/ocsp.py), `asn1crypto.ocsp` - [Certificate signing requests (CSRs)](asn1crypto/csr.py), `asn1crypto.csr` - [Private key/certificate containers (PKCS#12)](asn1crypto/pkcs12.py), `asn1crypto.pkcs12` - [Cryptographic message syntax (CMS, PKCS#7)](asn1crypto/cms.py), `asn1crypto.cms` - [Time stamp protocol (TSP)](asn1crypto/tsp.py), `asn1crypto.tsp` - [PDF signatures](asn1crypto/pdf.py), `asn1crypto.pdf` ## Continuous Integration Various combinations of platforms and versions of Python are tested via: - [macOS, Linux, Windows](https://github.com/wbond/asn1crypto/actions/workflows/ci.yml) via GitHub Actions - [arm64](https://circleci.com/gh/wbond/asn1crypto) via CircleCI ## Testing Tests are written using `unittest` and require no third-party packages. Depending on what type of source is available for the package, the following commands can be used to run the test suite. ### Git Repository When working within a Git working copy, or an archive of the Git repository, the full test suite is run via: ```bash python run.py tests ``` To run only some tests, pass a regular expression as a parameter to `tests`. ```bash python run.py tests ocsp ``` ### PyPi Source Distribution When working within an extracted source distribution (aka `.tar.gz`) from PyPi, the full test suite is run via: ```bash python setup.py test ``` ### Package When the package has been installed via pip (or another method), the package `asn1crypto_tests` may be installed and invoked to run the full test suite: ```bash pip install asn1crypto_tests python -m asn1crypto_tests ``` ## Development To install the package used for linting, execute: ```bash pip install --user -r requires/lint ``` The following command will run the linter: ```bash python run.py lint ``` Support for code coverage can be installed via: ```bash pip install --user -r requires/coverage ``` Coverage is measured by running: ```bash python run.py coverage ``` To change the version number of the package, run: ```bash python run.py version {pep440_version} ``` To install the necessary packages for releasing a new version on PyPI, run: ```bash pip install --user -r requires/release ``` Releases are created by: - Making a git tag in [PEP 440](https://www.python.org/dev/peps/pep-0440/#examples-of-compliant-version-schemes) format - Running the command: ```bash python run.py release ``` Existing releases can be found at https://pypi.org/project/asn1crypto/. ## CI Tasks A task named `deps` exists to download and stage all necessary testing dependencies. On posix platforms, `curl` is used for downloads and on Windows PowerShell with `Net.WebClient` is used. This configuration sidesteps issues related to getting pip to work properly and messing with `site-packages` for the version of Python being used. The `ci` task runs `lint` (if flake8 is available for the version of Python) and `coverage` (or `tests` if coverage is not available for the version of Python). If the current directory is a clean git working copy, the coverage data is submitted to codecov.io. ```bash python run.py deps python run.py ci ``` ================================================ FILE: libs/asn1crypto-1.5.1.dist-info/RECORD ================================================ asn1crypto/__init__.py,sha256=a-8VLJazcxfecOBlxWH1IX4Crm6NvR-Lhko9GTpvnP0,1219 asn1crypto/_errors.py,sha256=v1vyVWdO49tLugVLnKvtjr9ZddLpeKoB-yrBODOw0tg,1070 asn1crypto/_inet.py,sha256=z2K8CKxSfEQ3d0UMIIgXw5NugKLZyRS__Cn10ivbiGM,4661 asn1crypto/_int.py,sha256=oe3cxich5zj3gQkECl6ZnAOCn-PyYTHkG117bAl21TY,494 asn1crypto/_iri.py,sha256=2kIP8gGIh8BXt1q_0S5KhnMzUUQIvuT0FDAYNyKeqbY,8733 asn1crypto/_ordereddict.py,sha256=5VAYLbxxEtfdZGKgjzINxlmNkYg9d_7JmZAFfr0EcAk,4533 asn1crypto/_teletex_codec.py,sha256=LhDpkTprPaoc7UJ9i9uwnP-5Am00SVbHSQizPpCLpqE,5053 asn1crypto/_types.py,sha256=OwsX30epv-ETI9eGrLW9GLqv0KeoiSRnJcjN92roqhQ,939 asn1crypto/algos.py,sha256=xCk-jnAaSwQ7a6ngsKkXVClxez0v8FuPrXjttb0sl_A,35867 asn1crypto/cms.py,sha256=lpzlcTJ97g8dq1RPhYsOSbpQIgWkI8E0ZybQskl39hY,27776 asn1crypto/core.py,sha256=18yPagBXGAtsmCFTuqRbWKnIy1apwoiAEj_i2Zwc9F0,170716 asn1crypto/crl.py,sha256=KJLuEn1IDJO19X4eLYhRyaM-ACnxKkimoGsyAnzGdgA,16104 asn1crypto/csr.py,sha256=arnYGru9S2PYCmBUXBZGKpOXiGRbh4vxONNdLOi97nU,3542 asn1crypto/keys.py,sha256=WOiO9_KoglPron1x3FUgRmb0Eohpj40si7LOTCI2iLQ,37863 asn1crypto/ocsp.py,sha256=2qxDGgCp2XKJ5xFHEx0jlLFkHYWdKvrtUBdGLrUVPbE,19024 asn1crypto/parser.py,sha256=gB7P_tp4GqJjgQv5zKkVOmgdmim5cJfxyIid-TIID1I,9171 asn1crypto/pdf.py,sha256=HNybnna5WG2ftmb8Nx_T5reyLJ0E7hJXoj37DuLbpX0,2250 asn1crypto/pem.py,sha256=s46r_KCQ9h1HENXMh4AGKTXesivQrKnWzU3-gok75uI,6145 asn1crypto/pkcs12.py,sha256=q-KGfvaO72B8AfvolwsqhAQpjuqnkEczPddXYLBFUSE,4566 asn1crypto/tsp.py,sha256=DjKeZE413ukBGTfYVLnOYhsM5mNGBSN52p2puxlPapk,7825 asn1crypto/util.py,sha256=shMpHDvcOYyDcSrlFoGqTLUhHpsTHam45u4KdRO3yww,21873 asn1crypto/version.py,sha256=qWgDOm1ayD-9GJ1Qds22S3bBgyQAFPU5eVPg1pP8FCY,152 asn1crypto/x509.py,sha256=ocNR41Y-C50-55oStOGnbVbtcbh3kJ6dvnyFO-cSr-0,93778 asn1crypto-1.5.1.dist-info/LICENSE,sha256=KcNCXl2lOrhCJz5fLy8GjOLjXfQmD3-hVqoaxr7QJDM,1075 asn1crypto-1.5.1.dist-info/METADATA,sha256=KREr_KuD0K8uSUpd5OleccUeERMlXX-CU2FgNmVQ8ZQ,13184 asn1crypto-1.5.1.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110 asn1crypto-1.5.1.dist-info/top_level.txt,sha256=z8-jF_Q-jgzGox7T2XYian3-yeptLS2I7MjoJLBaq1Y,11 asn1crypto-1.5.1.dist-info/RECORD,, ================================================ FILE: libs/asn1crypto-1.5.1.dist-info/WHEEL ================================================ Wheel-Version: 1.0 Generator: bdist_wheel (0.37.1) Root-Is-Purelib: true Tag: py2-none-any Tag: py3-none-any ================================================ FILE: libs/asn1crypto-1.5.1.dist-info/top_level.txt ================================================ asn1crypto ================================================ FILE: libs/click/__init__.py ================================================ """ Click is a simple Python module inspired by the stdlib optparse to make writing command line scripts fun. Unlike other modules, it's based around a simple API that does not come with too much magic and is composable. """ from .core import Argument as Argument from .core import BaseCommand as BaseCommand from .core import Command as Command from .core import CommandCollection as CommandCollection from .core import Context as Context from .core import Group as Group from .core import MultiCommand as MultiCommand from .core import Option as Option from .core import Parameter as Parameter from .decorators import argument as argument from .decorators import command as command from .decorators import confirmation_option as confirmation_option from .decorators import group as group from .decorators import help_option as help_option from .decorators import HelpOption as HelpOption from .decorators import make_pass_decorator as make_pass_decorator from .decorators import option as option from .decorators import pass_context as pass_context from .decorators import pass_obj as pass_obj from .decorators import password_option as password_option from .decorators import version_option as version_option from .exceptions import Abort as Abort from .exceptions import BadArgumentUsage as BadArgumentUsage from .exceptions import BadOptionUsage as BadOptionUsage from .exceptions import BadParameter as BadParameter from .exceptions import ClickException as ClickException from .exceptions import FileError as FileError from .exceptions import MissingParameter as MissingParameter from .exceptions import NoSuchOption as NoSuchOption from .exceptions import UsageError as UsageError from .formatting import HelpFormatter as HelpFormatter from .formatting import wrap_text as wrap_text from .globals import get_current_context as get_current_context from .parser import OptionParser as OptionParser from .termui import clear as clear from .termui import confirm as confirm from .termui import echo_via_pager as echo_via_pager from .termui import edit as edit from .termui import getchar as getchar from .termui import launch as launch from .termui import pause as pause from .termui import progressbar as progressbar from .termui import prompt as prompt from .termui import secho as secho from .termui import style as style from .termui import unstyle as unstyle from .types import BOOL as BOOL from .types import Choice as Choice from .types import DateTime as DateTime from .types import File as File from .types import FLOAT as FLOAT from .types import FloatRange as FloatRange from .types import INT as INT from .types import IntRange as IntRange from .types import ParamType as ParamType from .types import Path as Path from .types import STRING as STRING from .types import Tuple as Tuple from .types import UNPROCESSED as UNPROCESSED from .types import UUID as UUID from .utils import echo as echo from .utils import format_filename as format_filename from .utils import get_app_dir as get_app_dir from .utils import get_binary_stream as get_binary_stream from .utils import get_text_stream as get_text_stream from .utils import open_file as open_file __version__ = "8.1.8" ================================================ FILE: libs/click/_compat.py ================================================ import codecs import io import os import re import sys import typing as t from weakref import WeakKeyDictionary CYGWIN = sys.platform.startswith("cygwin") WIN = sys.platform.startswith("win") auto_wrap_for_ansi: t.Optional[t.Callable[[t.TextIO], t.TextIO]] = None _ansi_re = re.compile(r"\033\[[;?0-9]*[a-zA-Z]") def _make_text_stream( stream: t.BinaryIO, encoding: t.Optional[str], errors: t.Optional[str], force_readable: bool = False, force_writable: bool = False, ) -> t.TextIO: if encoding is None: encoding = get_best_encoding(stream) if errors is None: errors = "replace" return _NonClosingTextIOWrapper( stream, encoding, errors, line_buffering=True, force_readable=force_readable, force_writable=force_writable, ) def is_ascii_encoding(encoding: str) -> bool: """Checks if a given encoding is ascii.""" try: return codecs.lookup(encoding).name == "ascii" except LookupError: return False def get_best_encoding(stream: t.IO[t.Any]) -> str: """Returns the default stream encoding if not found.""" rv = getattr(stream, "encoding", None) or sys.getdefaultencoding() if is_ascii_encoding(rv): return "utf-8" return rv class _NonClosingTextIOWrapper(io.TextIOWrapper): def __init__( self, stream: t.BinaryIO, encoding: t.Optional[str], errors: t.Optional[str], force_readable: bool = False, force_writable: bool = False, **extra: t.Any, ) -> None: self._stream = stream = t.cast( t.BinaryIO, _FixupStream(stream, force_readable, force_writable) ) super().__init__(stream, encoding, errors, **extra) def __del__(self) -> None: try: self.detach() except Exception: pass def isatty(self) -> bool: # https://bitbucket.org/pypy/pypy/issue/1803 return self._stream.isatty() class _FixupStream: """The new io interface needs more from streams than streams traditionally implement. As such, this fix-up code is necessary in some circumstances. The forcing of readable and writable flags are there because some tools put badly patched objects on sys (one such offender are certain version of jupyter notebook). """ def __init__( self, stream: t.BinaryIO, force_readable: bool = False, force_writable: bool = False, ): self._stream = stream self._force_readable = force_readable self._force_writable = force_writable def __getattr__(self, name: str) -> t.Any: return getattr(self._stream, name) def read1(self, size: int) -> bytes: f = getattr(self._stream, "read1", None) if f is not None: return t.cast(bytes, f(size)) return self._stream.read(size) def readable(self) -> bool: if self._force_readable: return True x = getattr(self._stream, "readable", None) if x is not None: return t.cast(bool, x()) try: self._stream.read(0) except Exception: return False return True def writable(self) -> bool: if self._force_writable: return True x = getattr(self._stream, "writable", None) if x is not None: return t.cast(bool, x()) try: self._stream.write("") # type: ignore except Exception: try: self._stream.write(b"") except Exception: return False return True def seekable(self) -> bool: x = getattr(self._stream, "seekable", None) if x is not None: return t.cast(bool, x()) try: self._stream.seek(self._stream.tell()) except Exception: return False return True def _is_binary_reader(stream: t.IO[t.Any], default: bool = False) -> bool: try: return isinstance(stream.read(0), bytes) except Exception: return default # This happens in some cases where the stream was already # closed. In this case, we assume the default. def _is_binary_writer(stream: t.IO[t.Any], default: bool = False) -> bool: try: stream.write(b"") except Exception: try: stream.write("") return False except Exception: pass return default return True def _find_binary_reader(stream: t.IO[t.Any]) -> t.Optional[t.BinaryIO]: # We need to figure out if the given stream is already binary. # This can happen because the official docs recommend detaching # the streams to get binary streams. Some code might do this, so # we need to deal with this case explicitly. if _is_binary_reader(stream, False): return t.cast(t.BinaryIO, stream) buf = getattr(stream, "buffer", None) # Same situation here; this time we assume that the buffer is # actually binary in case it's closed. if buf is not None and _is_binary_reader(buf, True): return t.cast(t.BinaryIO, buf) return None def _find_binary_writer(stream: t.IO[t.Any]) -> t.Optional[t.BinaryIO]: # We need to figure out if the given stream is already binary. # This can happen because the official docs recommend detaching # the streams to get binary streams. Some code might do this, so # we need to deal with this case explicitly. if _is_binary_writer(stream, False): return t.cast(t.BinaryIO, stream) buf = getattr(stream, "buffer", None) # Same situation here; this time we assume that the buffer is # actually binary in case it's closed. if buf is not None and _is_binary_writer(buf, True): return t.cast(t.BinaryIO, buf) return None def _stream_is_misconfigured(stream: t.TextIO) -> bool: """A stream is misconfigured if its encoding is ASCII.""" # If the stream does not have an encoding set, we assume it's set # to ASCII. This appears to happen in certain unittest # environments. It's not quite clear what the correct behavior is # but this at least will force Click to recover somehow. return is_ascii_encoding(getattr(stream, "encoding", None) or "ascii") def _is_compat_stream_attr(stream: t.TextIO, attr: str, value: t.Optional[str]) -> bool: """A stream attribute is compatible if it is equal to the desired value or the desired value is unset and the attribute has a value. """ stream_value = getattr(stream, attr, None) return stream_value == value or (value is None and stream_value is not None) def _is_compatible_text_stream( stream: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] ) -> bool: """Check if a stream's encoding and errors attributes are compatible with the desired values. """ return _is_compat_stream_attr( stream, "encoding", encoding ) and _is_compat_stream_attr(stream, "errors", errors) def _force_correct_text_stream( text_stream: t.IO[t.Any], encoding: t.Optional[str], errors: t.Optional[str], is_binary: t.Callable[[t.IO[t.Any], bool], bool], find_binary: t.Callable[[t.IO[t.Any]], t.Optional[t.BinaryIO]], force_readable: bool = False, force_writable: bool = False, ) -> t.TextIO: if is_binary(text_stream, False): binary_reader = t.cast(t.BinaryIO, text_stream) else: text_stream = t.cast(t.TextIO, text_stream) # If the stream looks compatible, and won't default to a # misconfigured ascii encoding, return it as-is. if _is_compatible_text_stream(text_stream, encoding, errors) and not ( encoding is None and _stream_is_misconfigured(text_stream) ): return text_stream # Otherwise, get the underlying binary reader. possible_binary_reader = find_binary(text_stream) # If that's not possible, silently use the original reader # and get mojibake instead of exceptions. if possible_binary_reader is None: return text_stream binary_reader = possible_binary_reader # Default errors to replace instead of strict in order to get # something that works. if errors is None: errors = "replace" # Wrap the binary stream in a text stream with the correct # encoding parameters. return _make_text_stream( binary_reader, encoding, errors, force_readable=force_readable, force_writable=force_writable, ) def _force_correct_text_reader( text_reader: t.IO[t.Any], encoding: t.Optional[str], errors: t.Optional[str], force_readable: bool = False, ) -> t.TextIO: return _force_correct_text_stream( text_reader, encoding, errors, _is_binary_reader, _find_binary_reader, force_readable=force_readable, ) def _force_correct_text_writer( text_writer: t.IO[t.Any], encoding: t.Optional[str], errors: t.Optional[str], force_writable: bool = False, ) -> t.TextIO: return _force_correct_text_stream( text_writer, encoding, errors, _is_binary_writer, _find_binary_writer, force_writable=force_writable, ) def get_binary_stdin() -> t.BinaryIO: reader = _find_binary_reader(sys.stdin) if reader is None: raise RuntimeError("Was not able to determine binary stream for sys.stdin.") return reader def get_binary_stdout() -> t.BinaryIO: writer = _find_binary_writer(sys.stdout) if writer is None: raise RuntimeError("Was not able to determine binary stream for sys.stdout.") return writer def get_binary_stderr() -> t.BinaryIO: writer = _find_binary_writer(sys.stderr) if writer is None: raise RuntimeError("Was not able to determine binary stream for sys.stderr.") return writer def get_text_stdin( encoding: t.Optional[str] = None, errors: t.Optional[str] = None ) -> t.TextIO: rv = _get_windows_console_stream(sys.stdin, encoding, errors) if rv is not None: return rv return _force_correct_text_reader(sys.stdin, encoding, errors, force_readable=True) def get_text_stdout( encoding: t.Optional[str] = None, errors: t.Optional[str] = None ) -> t.TextIO: rv = _get_windows_console_stream(sys.stdout, encoding, errors) if rv is not None: return rv return _force_correct_text_writer(sys.stdout, encoding, errors, force_writable=True) def get_text_stderr( encoding: t.Optional[str] = None, errors: t.Optional[str] = None ) -> t.TextIO: rv = _get_windows_console_stream(sys.stderr, encoding, errors) if rv is not None: return rv return _force_correct_text_writer(sys.stderr, encoding, errors, force_writable=True) def _wrap_io_open( file: t.Union[str, "os.PathLike[str]", int], mode: str, encoding: t.Optional[str], errors: t.Optional[str], ) -> t.IO[t.Any]: """Handles not passing ``encoding`` and ``errors`` in binary mode.""" if "b" in mode: return open(file, mode) return open(file, mode, encoding=encoding, errors=errors) def open_stream( filename: "t.Union[str, os.PathLike[str]]", mode: str = "r", encoding: t.Optional[str] = None, errors: t.Optional[str] = "strict", atomic: bool = False, ) -> t.Tuple[t.IO[t.Any], bool]: binary = "b" in mode filename = os.fspath(filename) # Standard streams first. These are simple because they ignore the # atomic flag. Use fsdecode to handle Path("-"). if os.fsdecode(filename) == "-": if any(m in mode for m in ["w", "a", "x"]): if binary: return get_binary_stdout(), False return get_text_stdout(encoding=encoding, errors=errors), False if binary: return get_binary_stdin(), False return get_text_stdin(encoding=encoding, errors=errors), False # Non-atomic writes directly go out through the regular open functions. if not atomic: return _wrap_io_open(filename, mode, encoding, errors), True # Some usability stuff for atomic writes if "a" in mode: raise ValueError( "Appending to an existing file is not supported, because that" " would involve an expensive `copy`-operation to a temporary" " file. Open the file in normal `w`-mode and copy explicitly" " if that's what you're after." ) if "x" in mode: raise ValueError("Use the `overwrite`-parameter instead.") if "w" not in mode: raise ValueError("Atomic writes only make sense with `w`-mode.") # Atomic writes are more complicated. They work by opening a file # as a proxy in the same folder and then using the fdopen # functionality to wrap it in a Python file. Then we wrap it in an # atomic file that moves the file over on close. import errno import random try: perm: t.Optional[int] = os.stat(filename).st_mode except OSError: perm = None flags = os.O_RDWR | os.O_CREAT | os.O_EXCL if binary: flags |= getattr(os, "O_BINARY", 0) while True: tmp_filename = os.path.join( os.path.dirname(filename), f".__atomic-write{random.randrange(1 << 32):08x}", ) try: fd = os.open(tmp_filename, flags, 0o666 if perm is None else perm) break except OSError as e: if e.errno == errno.EEXIST or ( os.name == "nt" and e.errno == errno.EACCES and os.path.isdir(e.filename) and os.access(e.filename, os.W_OK) ): continue raise if perm is not None: os.chmod(tmp_filename, perm) # in case perm includes bits in umask f = _wrap_io_open(fd, mode, encoding, errors) af = _AtomicFile(f, tmp_filename, os.path.realpath(filename)) return t.cast(t.IO[t.Any], af), True class _AtomicFile: def __init__(self, f: t.IO[t.Any], tmp_filename: str, real_filename: str) -> None: self._f = f self._tmp_filename = tmp_filename self._real_filename = real_filename self.closed = False @property def name(self) -> str: return self._real_filename def close(self, delete: bool = False) -> None: if self.closed: return self._f.close() os.replace(self._tmp_filename, self._real_filename) self.closed = True def __getattr__(self, name: str) -> t.Any: return getattr(self._f, name) def __enter__(self) -> "_AtomicFile": return self def __exit__(self, exc_type: t.Optional[t.Type[BaseException]], *_: t.Any) -> None: self.close(delete=exc_type is not None) def __repr__(self) -> str: return repr(self._f) def strip_ansi(value: str) -> str: return _ansi_re.sub("", value) def _is_jupyter_kernel_output(stream: t.IO[t.Any]) -> bool: while isinstance(stream, (_FixupStream, _NonClosingTextIOWrapper)): stream = stream._stream return stream.__class__.__module__.startswith("ipykernel.") def should_strip_ansi( stream: t.Optional[t.IO[t.Any]] = None, color: t.Optional[bool] = None ) -> bool: if color is None: if stream is None: stream = sys.stdin return not isatty(stream) and not _is_jupyter_kernel_output(stream) return not color # On Windows, wrap the output streams with colorama to support ANSI # color codes. # NOTE: double check is needed so mypy does not analyze this on Linux if sys.platform.startswith("win") and WIN: from ._winconsole import _get_windows_console_stream def _get_argv_encoding() -> str: import locale return locale.getpreferredencoding() _ansi_stream_wrappers: t.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() def auto_wrap_for_ansi( stream: t.TextIO, color: t.Optional[bool] = None ) -> t.TextIO: """Support ANSI color and style codes on Windows by wrapping a stream with colorama. """ try: cached = _ansi_stream_wrappers.get(stream) except Exception: cached = None if cached is not None: return cached import colorama strip = should_strip_ansi(stream, color) ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) rv = t.cast(t.TextIO, ansi_wrapper.stream) _write = rv.write def _safe_write(s): try: return _write(s) except BaseException: ansi_wrapper.reset_all() raise rv.write = _safe_write try: _ansi_stream_wrappers[stream] = rv except Exception: pass return rv else: def _get_argv_encoding() -> str: return getattr(sys.stdin, "encoding", None) or sys.getfilesystemencoding() def _get_windows_console_stream( f: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] ) -> t.Optional[t.TextIO]: return None def term_len(x: str) -> int: return len(strip_ansi(x)) def isatty(stream: t.IO[t.Any]) -> bool: try: return stream.isatty() except Exception: return False def _make_cached_stream_func( src_func: t.Callable[[], t.Optional[t.TextIO]], wrapper_func: t.Callable[[], t.TextIO], ) -> t.Callable[[], t.Optional[t.TextIO]]: cache: t.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() def func() -> t.Optional[t.TextIO]: stream = src_func() if stream is None: return None try: rv = cache.get(stream) except Exception: rv = None if rv is not None: return rv rv = wrapper_func() try: cache[stream] = rv except Exception: pass return rv return func _default_text_stdin = _make_cached_stream_func(lambda: sys.stdin, get_text_stdin) _default_text_stdout = _make_cached_stream_func(lambda: sys.stdout, get_text_stdout) _default_text_stderr = _make_cached_stream_func(lambda: sys.stderr, get_text_stderr) binary_streams: t.Mapping[str, t.Callable[[], t.BinaryIO]] = { "stdin": get_binary_stdin, "stdout": get_binary_stdout, "stderr": get_binary_stderr, } text_streams: t.Mapping[ str, t.Callable[[t.Optional[str], t.Optional[str]], t.TextIO] ] = { "stdin": get_text_stdin, "stdout": get_text_stdout, "stderr": get_text_stderr, } ================================================ FILE: libs/click/_termui_impl.py ================================================ """ This module contains implementations for the termui module. To keep the import time of Click down, some infrequently used functionality is placed in this module and only imported as needed. """ import contextlib import math import os import sys import time import typing as t from gettext import gettext as _ from io import StringIO from shutil import which from types import TracebackType from ._compat import _default_text_stdout from ._compat import CYGWIN from ._compat import get_best_encoding from ._compat import isatty from ._compat import open_stream from ._compat import strip_ansi from ._compat import term_len from ._compat import WIN from .exceptions import ClickException from .utils import echo V = t.TypeVar("V") if os.name == "nt": BEFORE_BAR = "\r" AFTER_BAR = "\n" else: BEFORE_BAR = "\r\033[?25l" AFTER_BAR = "\033[?25h\n" class ProgressBar(t.Generic[V]): def __init__( self, iterable: t.Optional[t.Iterable[V]], length: t.Optional[int] = None, fill_char: str = "#", empty_char: str = " ", bar_template: str = "%(bar)s", info_sep: str = " ", show_eta: bool = True, show_percent: t.Optional[bool] = None, show_pos: bool = False, item_show_func: t.Optional[t.Callable[[t.Optional[V]], t.Optional[str]]] = None, label: t.Optional[str] = None, file: t.Optional[t.TextIO] = None, color: t.Optional[bool] = None, update_min_steps: int = 1, width: int = 30, ) -> None: self.fill_char = fill_char self.empty_char = empty_char self.bar_template = bar_template self.info_sep = info_sep self.show_eta = show_eta self.show_percent = show_percent self.show_pos = show_pos self.item_show_func = item_show_func self.label: str = label or "" if file is None: file = _default_text_stdout() # There are no standard streams attached to write to. For example, # pythonw on Windows. if file is None: file = StringIO() self.file = file self.color = color self.update_min_steps = update_min_steps self._completed_intervals = 0 self.width: int = width self.autowidth: bool = width == 0 if length is None: from operator import length_hint length = length_hint(iterable, -1) if length == -1: length = None if iterable is None: if length is None: raise TypeError("iterable or length is required") iterable = t.cast(t.Iterable[V], range(length)) self.iter: t.Iterable[V] = iter(iterable) self.length = length self.pos = 0 self.avg: t.List[float] = [] self.last_eta: float self.start: float self.start = self.last_eta = time.time() self.eta_known: bool = False self.finished: bool = False self.max_width: t.Optional[int] = None self.entered: bool = False self.current_item: t.Optional[V] = None self.is_hidden: bool = not isatty(self.file) self._last_line: t.Optional[str] = None def __enter__(self) -> "ProgressBar[V]": self.entered = True self.render_progress() return self def __exit__( self, exc_type: t.Optional[t.Type[BaseException]], exc_value: t.Optional[BaseException], tb: t.Optional[TracebackType], ) -> None: self.render_finish() def __iter__(self) -> t.Iterator[V]: if not self.entered: raise RuntimeError("You need to use progress bars in a with block.") self.render_progress() return self.generator() def __next__(self) -> V: # Iteration is defined in terms of a generator function, # returned by iter(self); use that to define next(). This works # because `self.iter` is an iterable consumed by that generator, # so it is re-entry safe. Calling `next(self.generator())` # twice works and does "what you want". return next(iter(self)) def render_finish(self) -> None: if self.is_hidden: return self.file.write(AFTER_BAR) self.file.flush() @property def pct(self) -> float: if self.finished: return 1.0 return min(self.pos / (float(self.length or 1) or 1), 1.0) @property def time_per_iteration(self) -> float: if not self.avg: return 0.0 return sum(self.avg) / float(len(self.avg)) @property def eta(self) -> float: if self.length is not None and not self.finished: return self.time_per_iteration * (self.length - self.pos) return 0.0 def format_eta(self) -> str: if self.eta_known: t = int(self.eta) seconds = t % 60 t //= 60 minutes = t % 60 t //= 60 hours = t % 24 t //= 24 if t > 0: return f"{t}d {hours:02}:{minutes:02}:{seconds:02}" else: return f"{hours:02}:{minutes:02}:{seconds:02}" return "" def format_pos(self) -> str: pos = str(self.pos) if self.length is not None: pos += f"/{self.length}" return pos def format_pct(self) -> str: return f"{int(self.pct * 100): 4}%"[1:] def format_bar(self) -> str: if self.length is not None: bar_length = int(self.pct * self.width) bar = self.fill_char * bar_length bar += self.empty_char * (self.width - bar_length) elif self.finished: bar = self.fill_char * self.width else: chars = list(self.empty_char * (self.width or 1)) if self.time_per_iteration != 0: chars[ int( (math.cos(self.pos * self.time_per_iteration) / 2.0 + 0.5) * self.width ) ] = self.fill_char bar = "".join(chars) return bar def format_progress_line(self) -> str: show_percent = self.show_percent info_bits = [] if self.length is not None and show_percent is None: show_percent = not self.show_pos if self.show_pos: info_bits.append(self.format_pos()) if show_percent: info_bits.append(self.format_pct()) if self.show_eta and self.eta_known and not self.finished: info_bits.append(self.format_eta()) if self.item_show_func is not None: item_info = self.item_show_func(self.current_item) if item_info is not None: info_bits.append(item_info) return ( self.bar_template % { "label": self.label, "bar": self.format_bar(), "info": self.info_sep.join(info_bits), } ).rstrip() def render_progress(self) -> None: import shutil if self.is_hidden: # Only output the label as it changes if the output is not a # TTY. Use file=stderr if you expect to be piping stdout. if self._last_line != self.label: self._last_line = self.label echo(self.label, file=self.file, color=self.color) return buf = [] # Update width in case the terminal has been resized if self.autowidth: old_width = self.width self.width = 0 clutter_length = term_len(self.format_progress_line()) new_width = max(0, shutil.get_terminal_size().columns - clutter_length) if new_width < old_width: buf.append(BEFORE_BAR) buf.append(" " * self.max_width) # type: ignore self.max_width = new_width self.width = new_width clear_width = self.width if self.max_width is not None: clear_width = self.max_width buf.append(BEFORE_BAR) line = self.format_progress_line() line_len = term_len(line) if self.max_width is None or self.max_width < line_len: self.max_width = line_len buf.append(line) buf.append(" " * (clear_width - line_len)) line = "".join(buf) # Render the line only if it changed. if line != self._last_line: self._last_line = line echo(line, file=self.file, color=self.color, nl=False) self.file.flush() def make_step(self, n_steps: int) -> None: self.pos += n_steps if self.length is not None and self.pos >= self.length: self.finished = True if (time.time() - self.last_eta) < 1.0: return self.last_eta = time.time() # self.avg is a rolling list of length <= 7 of steps where steps are # defined as time elapsed divided by the total progress through # self.length. if self.pos: step = (time.time() - self.start) / self.pos else: step = time.time() - self.start self.avg = self.avg[-6:] + [step] self.eta_known = self.length is not None def update(self, n_steps: int, current_item: t.Optional[V] = None) -> None: """Update the progress bar by advancing a specified number of steps, and optionally set the ``current_item`` for this new position. :param n_steps: Number of steps to advance. :param current_item: Optional item to set as ``current_item`` for the updated position. .. versionchanged:: 8.0 Added the ``current_item`` optional parameter. .. versionchanged:: 8.0 Only render when the number of steps meets the ``update_min_steps`` threshold. """ if current_item is not None: self.current_item = current_item self._completed_intervals += n_steps if self._completed_intervals >= self.update_min_steps: self.make_step(self._completed_intervals) self.render_progress() self._completed_intervals = 0 def finish(self) -> None: self.eta_known = False self.current_item = None self.finished = True def generator(self) -> t.Iterator[V]: """Return a generator which yields the items added to the bar during construction, and updates the progress bar *after* the yielded block returns. """ # WARNING: the iterator interface for `ProgressBar` relies on # this and only works because this is a simple generator which # doesn't create or manage additional state. If this function # changes, the impact should be evaluated both against # `iter(bar)` and `next(bar)`. `next()` in particular may call # `self.generator()` repeatedly, and this must remain safe in # order for that interface to work. if not self.entered: raise RuntimeError("You need to use progress bars in a with block.") if self.is_hidden: yield from self.iter else: for rv in self.iter: self.current_item = rv # This allows show_item_func to be updated before the # item is processed. Only trigger at the beginning of # the update interval. if self._completed_intervals == 0: self.render_progress() yield rv self.update(1) self.finish() self.render_progress() def pager(generator: t.Iterable[str], color: t.Optional[bool] = None) -> None: """Decide what method to use for paging through text.""" stdout = _default_text_stdout() # There are no standard streams attached to write to. For example, # pythonw on Windows. if stdout is None: stdout = StringIO() if not isatty(sys.stdin) or not isatty(stdout): return _nullpager(stdout, generator, color) pager_cmd = (os.environ.get("PAGER", None) or "").strip() if pager_cmd: if WIN: if _tempfilepager(generator, pager_cmd, color): return elif _pipepager(generator, pager_cmd, color): return if os.environ.get("TERM") in ("dumb", "emacs"): return _nullpager(stdout, generator, color) if (WIN or sys.platform.startswith("os2")) and _tempfilepager( generator, "more", color ): return if _pipepager(generator, "less", color): return import tempfile fd, filename = tempfile.mkstemp() os.close(fd) try: if _pipepager(generator, "more", color): return return _nullpager(stdout, generator, color) finally: os.unlink(filename) def _pipepager(generator: t.Iterable[str], cmd: str, color: t.Optional[bool]) -> bool: """Page through text by feeding it to another program. Invoking a pager through this might support colors. Returns True if the command was found, False otherwise and thus another pager should be attempted. """ cmd_absolute = which(cmd) if cmd_absolute is None: return False import subprocess env = dict(os.environ) # If we're piping to less we might support colors under the # condition that cmd_detail = cmd.rsplit("/", 1)[-1].split() if color is None and cmd_detail[0] == "less": less_flags = f"{os.environ.get('LESS', '')}{' '.join(cmd_detail[1:])}" if not less_flags: env["LESS"] = "-R" color = True elif "r" in less_flags or "R" in less_flags: color = True c = subprocess.Popen( [cmd_absolute], shell=True, stdin=subprocess.PIPE, env=env, errors="replace", text=True, ) assert c.stdin is not None try: for text in generator: if not color: text = strip_ansi(text) c.stdin.write(text) except (OSError, KeyboardInterrupt): pass else: c.stdin.close() # Less doesn't respect ^C, but catches it for its own UI purposes (aborting # search or other commands inside less). # # That means when the user hits ^C, the parent process (click) terminates, # but less is still alive, paging the output and messing up the terminal. # # If the user wants to make the pager exit on ^C, they should set # `LESS='-K'`. It's not our decision to make. while True: try: c.wait() except KeyboardInterrupt: pass else: break return True def _tempfilepager( generator: t.Iterable[str], cmd: str, color: t.Optional[bool], ) -> bool: """Page through text by invoking a program on a temporary file. Returns True if the command was found, False otherwise and thus another pager should be attempted. """ # Which is necessary for Windows, it is also recommended in the Popen docs. cmd_absolute = which(cmd) if cmd_absolute is None: return False import subprocess import tempfile fd, filename = tempfile.mkstemp() # TODO: This never terminates if the passed generator never terminates. text = "".join(generator) if not color: text = strip_ansi(text) encoding = get_best_encoding(sys.stdout) with open_stream(filename, "wb")[0] as f: f.write(text.encode(encoding)) try: subprocess.call([cmd_absolute, filename]) except OSError: # Command not found pass finally: os.close(fd) os.unlink(filename) return True def _nullpager( stream: t.TextIO, generator: t.Iterable[str], color: t.Optional[bool] ) -> None: """Simply print unformatted text. This is the ultimate fallback.""" for text in generator: if not color: text = strip_ansi(text) stream.write(text) class Editor: def __init__( self, editor: t.Optional[str] = None, env: t.Optional[t.Mapping[str, str]] = None, require_save: bool = True, extension: str = ".txt", ) -> None: self.editor = editor self.env = env self.require_save = require_save self.extension = extension def get_editor(self) -> str: if self.editor is not None: return self.editor for key in "VISUAL", "EDITOR": rv = os.environ.get(key) if rv: return rv if WIN: return "notepad" for editor in "sensible-editor", "vim", "nano": if which(editor) is not None: return editor return "vi" def edit_file(self, filename: str) -> None: import subprocess editor = self.get_editor() environ: t.Optional[t.Dict[str, str]] = None if self.env: environ = os.environ.copy() environ.update(self.env) try: c = subprocess.Popen(f'{editor} "{filename}"', env=environ, shell=True) exit_code = c.wait() if exit_code != 0: raise ClickException( _("{editor}: Editing failed").format(editor=editor) ) except OSError as e: raise ClickException( _("{editor}: Editing failed: {e}").format(editor=editor, e=e) ) from e def edit(self, text: t.Optional[t.AnyStr]) -> t.Optional[t.AnyStr]: import tempfile if not text: data = b"" elif isinstance(text, (bytes, bytearray)): data = text else: if text and not text.endswith("\n"): text += "\n" if WIN: data = text.replace("\n", "\r\n").encode("utf-8-sig") else: data = text.encode("utf-8") fd, name = tempfile.mkstemp(prefix="editor-", suffix=self.extension) f: t.BinaryIO try: with os.fdopen(fd, "wb") as f: f.write(data) # If the filesystem resolution is 1 second, like Mac OS # 10.12 Extended, or 2 seconds, like FAT32, and the editor # closes very fast, require_save can fail. Set the modified # time to be 2 seconds in the past to work around this. os.utime(name, (os.path.getatime(name), os.path.getmtime(name) - 2)) # Depending on the resolution, the exact value might not be # recorded, so get the new recorded value. timestamp = os.path.getmtime(name) self.edit_file(name) if self.require_save and os.path.getmtime(name) == timestamp: return None with open(name, "rb") as f: rv = f.read() if isinstance(text, (bytes, bytearray)): return rv return rv.decode("utf-8-sig").replace("\r\n", "\n") # type: ignore finally: os.unlink(name) def open_url(url: str, wait: bool = False, locate: bool = False) -> int: import subprocess def _unquote_file(url: str) -> str: from urllib.parse import unquote if url.startswith("file://"): url = unquote(url[7:]) return url if sys.platform == "darwin": args = ["open"] if wait: args.append("-W") if locate: args.append("-R") args.append(_unquote_file(url)) null = open("/dev/null", "w") try: return subprocess.Popen(args, stderr=null).wait() finally: null.close() elif WIN: if locate: url = _unquote_file(url) args = ["explorer", f"/select,{url}"] else: args = ["start"] if wait: args.append("/WAIT") args.append("") args.append(url) try: return subprocess.call(args) except OSError: # Command not found return 127 elif CYGWIN: if locate: url = _unquote_file(url) args = ["cygstart", os.path.dirname(url)] else: args = ["cygstart"] if wait: args.append("-w") args.append(url) try: return subprocess.call(args) except OSError: # Command not found return 127 try: if locate: url = os.path.dirname(_unquote_file(url)) or "." else: url = _unquote_file(url) c = subprocess.Popen(["xdg-open", url]) if wait: return c.wait() return 0 except OSError: if url.startswith(("http://", "https://")) and not locate and not wait: import webbrowser webbrowser.open(url) return 0 return 1 def _translate_ch_to_exc(ch: str) -> t.Optional[BaseException]: if ch == "\x03": raise KeyboardInterrupt() if ch == "\x04" and not WIN: # Unix-like, Ctrl+D raise EOFError() if ch == "\x1a" and WIN: # Windows, Ctrl+Z raise EOFError() return None if WIN: import msvcrt @contextlib.contextmanager def raw_terminal() -> t.Iterator[int]: yield -1 def getchar(echo: bool) -> str: # The function `getch` will return a bytes object corresponding to # the pressed character. Since Windows 10 build 1803, it will also # return \x00 when called a second time after pressing a regular key. # # `getwch` does not share this probably-bugged behavior. Moreover, it # returns a Unicode object by default, which is what we want. # # Either of these functions will return \x00 or \xe0 to indicate # a special key, and you need to call the same function again to get # the "rest" of the code. The fun part is that \u00e0 is # "latin small letter a with grave", so if you type that on a French # keyboard, you _also_ get a \xe0. # E.g., consider the Up arrow. This returns \xe0 and then \x48. The # resulting Unicode string reads as "a with grave" + "capital H". # This is indistinguishable from when the user actually types # "a with grave" and then "capital H". # # When \xe0 is returned, we assume it's part of a special-key sequence # and call `getwch` again, but that means that when the user types # the \u00e0 character, `getchar` doesn't return until a second # character is typed. # The alternative is returning immediately, but that would mess up # cross-platform handling of arrow keys and others that start with # \xe0. Another option is using `getch`, but then we can't reliably # read non-ASCII characters, because return values of `getch` are # limited to the current 8-bit codepage. # # Anyway, Click doesn't claim to do this Right(tm), and using `getwch` # is doing the right thing in more situations than with `getch`. func: t.Callable[[], str] if echo: func = msvcrt.getwche # type: ignore else: func = msvcrt.getwch # type: ignore rv = func() if rv in ("\x00", "\xe0"): # \x00 and \xe0 are control characters that indicate special key, # see above. rv += func() _translate_ch_to_exc(rv) return rv else: import termios import tty @contextlib.contextmanager def raw_terminal() -> t.Iterator[int]: f: t.Optional[t.TextIO] fd: int if not isatty(sys.stdin): f = open("/dev/tty") fd = f.fileno() else: fd = sys.stdin.fileno() f = None try: old_settings = termios.tcgetattr(fd) try: tty.setraw(fd) yield fd finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) sys.stdout.flush() if f is not None: f.close() except termios.error: pass def getchar(echo: bool) -> str: with raw_terminal() as fd: ch = os.read(fd, 32).decode(get_best_encoding(sys.stdin), "replace") if echo and isatty(sys.stdout): sys.stdout.write(ch) _translate_ch_to_exc(ch) return ch ================================================ FILE: libs/click/_textwrap.py ================================================ import textwrap import typing as t from contextlib import contextmanager class TextWrapper(textwrap.TextWrapper): def _handle_long_word( self, reversed_chunks: t.List[str], cur_line: t.List[str], cur_len: int, width: int, ) -> None: space_left = max(width - cur_len, 1) if self.break_long_words: last = reversed_chunks[-1] cut = last[:space_left] res = last[space_left:] cur_line.append(cut) reversed_chunks[-1] = res elif not cur_line: cur_line.append(reversed_chunks.pop()) @contextmanager def extra_indent(self, indent: str) -> t.Iterator[None]: old_initial_indent = self.initial_indent old_subsequent_indent = self.subsequent_indent self.initial_indent += indent self.subsequent_indent += indent try: yield finally: self.initial_indent = old_initial_indent self.subsequent_indent = old_subsequent_indent def indent_only(self, text: str) -> str: rv = [] for idx, line in enumerate(text.splitlines()): indent = self.initial_indent if idx > 0: indent = self.subsequent_indent rv.append(f"{indent}{line}") return "\n".join(rv) ================================================ FILE: libs/click/_winconsole.py ================================================ # This module is based on the excellent work by Adam Bartoš who # provided a lot of what went into the implementation here in # the discussion to issue1602 in the Python bug tracker. # # There are some general differences in regards to how this works # compared to the original patches as we do not need to patch # the entire interpreter but just work in our little world of # echo and prompt. import io import sys import time import typing as t from ctypes import byref from ctypes import c_char from ctypes import c_char_p from ctypes import c_int from ctypes import c_ssize_t from ctypes import c_ulong from ctypes import c_void_p from ctypes import POINTER from ctypes import py_object from ctypes import Structure from ctypes.wintypes import DWORD from ctypes.wintypes import HANDLE from ctypes.wintypes import LPCWSTR from ctypes.wintypes import LPWSTR from ._compat import _NonClosingTextIOWrapper assert sys.platform == "win32" import msvcrt # noqa: E402 from ctypes import windll # noqa: E402 from ctypes import WINFUNCTYPE # noqa: E402 c_ssize_p = POINTER(c_ssize_t) kernel32 = windll.kernel32 GetStdHandle = kernel32.GetStdHandle ReadConsoleW = kernel32.ReadConsoleW WriteConsoleW = kernel32.WriteConsoleW GetConsoleMode = kernel32.GetConsoleMode GetLastError = kernel32.GetLastError GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32)) CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( ("CommandLineToArgvW", windll.shell32) ) LocalFree = WINFUNCTYPE(c_void_p, c_void_p)(("LocalFree", windll.kernel32)) STDIN_HANDLE = GetStdHandle(-10) STDOUT_HANDLE = GetStdHandle(-11) STDERR_HANDLE = GetStdHandle(-12) PyBUF_SIMPLE = 0 PyBUF_WRITABLE = 1 ERROR_SUCCESS = 0 ERROR_NOT_ENOUGH_MEMORY = 8 ERROR_OPERATION_ABORTED = 995 STDIN_FILENO = 0 STDOUT_FILENO = 1 STDERR_FILENO = 2 EOF = b"\x1a" MAX_BYTES_WRITTEN = 32767 try: from ctypes import pythonapi except ImportError: # On PyPy we cannot get buffers so our ability to operate here is # severely limited. get_buffer = None else: class Py_buffer(Structure): _fields_ = [ ("buf", c_void_p), ("obj", py_object), ("len", c_ssize_t), ("itemsize", c_ssize_t), ("readonly", c_int), ("ndim", c_int), ("format", c_char_p), ("shape", c_ssize_p), ("strides", c_ssize_p), ("suboffsets", c_ssize_p), ("internal", c_void_p), ] PyObject_GetBuffer = pythonapi.PyObject_GetBuffer PyBuffer_Release = pythonapi.PyBuffer_Release def get_buffer(obj, writable=False): buf = Py_buffer() flags = PyBUF_WRITABLE if writable else PyBUF_SIMPLE PyObject_GetBuffer(py_object(obj), byref(buf), flags) try: buffer_type = c_char * buf.len return buffer_type.from_address(buf.buf) finally: PyBuffer_Release(byref(buf)) class _WindowsConsoleRawIOBase(io.RawIOBase): def __init__(self, handle): self.handle = handle def isatty(self): super().isatty() return True class _WindowsConsoleReader(_WindowsConsoleRawIOBase): def readable(self): return True def readinto(self, b): bytes_to_be_read = len(b) if not bytes_to_be_read: return 0 elif bytes_to_be_read % 2: raise ValueError( "cannot read odd number of bytes from UTF-16-LE encoded console" ) buffer = get_buffer(b, writable=True) code_units_to_be_read = bytes_to_be_read // 2 code_units_read = c_ulong() rv = ReadConsoleW( HANDLE(self.handle), buffer, code_units_to_be_read, byref(code_units_read), None, ) if GetLastError() == ERROR_OPERATION_ABORTED: # wait for KeyboardInterrupt time.sleep(0.1) if not rv: raise OSError(f"Windows error: {GetLastError()}") if buffer[0] == EOF: return 0 return 2 * code_units_read.value class _WindowsConsoleWriter(_WindowsConsoleRawIOBase): def writable(self): return True @staticmethod def _get_error_message(errno): if errno == ERROR_SUCCESS: return "ERROR_SUCCESS" elif errno == ERROR_NOT_ENOUGH_MEMORY: return "ERROR_NOT_ENOUGH_MEMORY" return f"Windows error {errno}" def write(self, b): bytes_to_be_written = len(b) buf = get_buffer(b) code_units_to_be_written = min(bytes_to_be_written, MAX_BYTES_WRITTEN) // 2 code_units_written = c_ulong() WriteConsoleW( HANDLE(self.handle), buf, code_units_to_be_written, byref(code_units_written), None, ) bytes_written = 2 * code_units_written.value if bytes_written == 0 and bytes_to_be_written > 0: raise OSError(self._get_error_message(GetLastError())) return bytes_written class ConsoleStream: def __init__(self, text_stream: t.TextIO, byte_stream: t.BinaryIO) -> None: self._text_stream = text_stream self.buffer = byte_stream @property def name(self) -> str: return self.buffer.name def write(self, x: t.AnyStr) -> int: if isinstance(x, str): return self._text_stream.write(x) try: self.flush() except Exception: pass return self.buffer.write(x) def writelines(self, lines: t.Iterable[t.AnyStr]) -> None: for line in lines: self.write(line) def __getattr__(self, name: str) -> t.Any: return getattr(self._text_stream, name) def isatty(self) -> bool: return self.buffer.isatty() def __repr__(self): return f"" def _get_text_stdin(buffer_stream: t.BinaryIO) -> t.TextIO: text_stream = _NonClosingTextIOWrapper( io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), "utf-16-le", "strict", line_buffering=True, ) return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) def _get_text_stdout(buffer_stream: t.BinaryIO) -> t.TextIO: text_stream = _NonClosingTextIOWrapper( io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), "utf-16-le", "strict", line_buffering=True, ) return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) def _get_text_stderr(buffer_stream: t.BinaryIO) -> t.TextIO: text_stream = _NonClosingTextIOWrapper( io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), "utf-16-le", "strict", line_buffering=True, ) return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) _stream_factories: t.Mapping[int, t.Callable[[t.BinaryIO], t.TextIO]] = { 0: _get_text_stdin, 1: _get_text_stdout, 2: _get_text_stderr, } def _is_console(f: t.TextIO) -> bool: if not hasattr(f, "fileno"): return False try: fileno = f.fileno() except (OSError, io.UnsupportedOperation): return False handle = msvcrt.get_osfhandle(fileno) return bool(GetConsoleMode(handle, byref(DWORD()))) def _get_windows_console_stream( f: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] ) -> t.Optional[t.TextIO]: if ( get_buffer is not None and encoding in {"utf-16-le", None} and errors in {"strict", None} and _is_console(f) ): func = _stream_factories.get(f.fileno()) if func is not None: b = getattr(f, "buffer", None) if b is None: return None return func(b) ================================================ FILE: libs/click/core.py ================================================ import enum import errno import inspect import os import sys import typing as t from collections import abc from contextlib import contextmanager from contextlib import ExitStack from functools import update_wrapper from gettext import gettext as _ from gettext import ngettext from itertools import repeat from types import TracebackType from . import types from .exceptions import Abort from .exceptions import BadParameter from .exceptions import ClickException from .exceptions import Exit from .exceptions import MissingParameter from .exceptions import UsageError from .formatting import HelpFormatter from .formatting import join_options from .globals import pop_context from .globals import push_context from .parser import _flag_needs_value from .parser import OptionParser from .parser import split_opt from .termui import confirm from .termui import prompt from .termui import style from .utils import _detect_program_name from .utils import _expand_args from .utils import echo from .utils import make_default_short_help from .utils import make_str from .utils import PacifyFlushWrapper if t.TYPE_CHECKING: import typing_extensions as te from .decorators import HelpOption from .shell_completion import CompletionItem F = t.TypeVar("F", bound=t.Callable[..., t.Any]) V = t.TypeVar("V") def _complete_visible_commands( ctx: "Context", incomplete: str ) -> t.Iterator[t.Tuple[str, "Command"]]: """List all the subcommands of a group that start with the incomplete value and aren't hidden. :param ctx: Invocation context for the group. :param incomplete: Value being completed. May be empty. """ multi = t.cast(MultiCommand, ctx.command) for name in multi.list_commands(ctx): if name.startswith(incomplete): command = multi.get_command(ctx, name) if command is not None and not command.hidden: yield name, command def _check_multicommand( base_command: "MultiCommand", cmd_name: str, cmd: "Command", register: bool = False ) -> None: if not base_command.chain or not isinstance(cmd, MultiCommand): return if register: hint = ( "It is not possible to add multi commands as children to" " another multi command that is in chain mode." ) else: hint = ( "Found a multi command as subcommand to a multi command" " that is in chain mode. This is not supported." ) raise RuntimeError( f"{hint}. Command {base_command.name!r} is set to chain and" f" {cmd_name!r} was added as a subcommand but it in itself is a" f" multi command. ({cmd_name!r} is a {type(cmd).__name__}" f" within a chained {type(base_command).__name__} named" f" {base_command.name!r})." ) def batch(iterable: t.Iterable[V], batch_size: int) -> t.List[t.Tuple[V, ...]]: return list(zip(*repeat(iter(iterable), batch_size))) @contextmanager def augment_usage_errors( ctx: "Context", param: t.Optional["Parameter"] = None ) -> t.Iterator[None]: """Context manager that attaches extra information to exceptions.""" try: yield except BadParameter as e: if e.ctx is None: e.ctx = ctx if param is not None and e.param is None: e.param = param raise except UsageError as e: if e.ctx is None: e.ctx = ctx raise def iter_params_for_processing( invocation_order: t.Sequence["Parameter"], declaration_order: t.Sequence["Parameter"], ) -> t.List["Parameter"]: """Returns all declared parameters in the order they should be processed. The declared parameters are re-shuffled depending on the order in which they were invoked, as well as the eagerness of each parameters. The invocation order takes precedence over the declaration order. I.e. the order in which the user provided them to the CLI is respected. This behavior and its effect on callback evaluation is detailed at: https://click.palletsprojects.com/en/stable/advanced/#callback-evaluation-order """ def sort_key(item: "Parameter") -> t.Tuple[bool, float]: try: idx: float = invocation_order.index(item) except ValueError: idx = float("inf") return not item.is_eager, idx return sorted(declaration_order, key=sort_key) class ParameterSource(enum.Enum): """This is an :class:`~enum.Enum` that indicates the source of a parameter's value. Use :meth:`click.Context.get_parameter_source` to get the source for a parameter by name. .. versionchanged:: 8.0 Use :class:`~enum.Enum` and drop the ``validate`` method. .. versionchanged:: 8.0 Added the ``PROMPT`` value. """ COMMANDLINE = enum.auto() """The value was provided by the command line args.""" ENVIRONMENT = enum.auto() """The value was provided with an environment variable.""" DEFAULT = enum.auto() """Used the default specified by the parameter.""" DEFAULT_MAP = enum.auto() """Used a default provided by :attr:`Context.default_map`.""" PROMPT = enum.auto() """Used a prompt to confirm a default or provide a value.""" class Context: """The context is a special internal object that holds state relevant for the script execution at every single level. It's normally invisible to commands unless they opt-in to getting access to it. The context is useful as it can pass internal objects around and can control special execution features such as reading data from environment variables. A context can be used as context manager in which case it will call :meth:`close` on teardown. :param command: the command class for this context. :param parent: the parent context. :param info_name: the info name for this invocation. Generally this is the most descriptive name for the script or command. For the toplevel script it is usually the name of the script, for commands below it it's the name of the script. :param obj: an arbitrary object of user data. :param auto_envvar_prefix: the prefix to use for automatic environment variables. If this is `None` then reading from environment variables is disabled. This does not affect manually set environment variables which are always read. :param default_map: a dictionary (like object) with default values for parameters. :param terminal_width: the width of the terminal. The default is inherit from parent context. If no context defines the terminal width then auto detection will be applied. :param max_content_width: the maximum width for content rendered by Click (this currently only affects help pages). This defaults to 80 characters if not overridden. In other words: even if the terminal is larger than that, Click will not format things wider than 80 characters by default. In addition to that, formatters might add some safety mapping on the right. :param resilient_parsing: if this flag is enabled then Click will parse without any interactivity or callback invocation. Default values will also be ignored. This is useful for implementing things such as completion support. :param allow_extra_args: if this is set to `True` then extra arguments at the end will not raise an error and will be kept on the context. The default is to inherit from the command. :param allow_interspersed_args: if this is set to `False` then options and arguments cannot be mixed. The default is to inherit from the command. :param ignore_unknown_options: instructs click to ignore options it does not know and keeps them for later processing. :param help_option_names: optionally a list of strings that define how the default help parameter is named. The default is ``['--help']``. :param token_normalize_func: an optional function that is used to normalize tokens (options, choices, etc.). This for instance can be used to implement case insensitive behavior. :param color: controls if the terminal supports ANSI colors or not. The default is autodetection. This is only needed if ANSI codes are used in texts that Click prints which is by default not the case. This for instance would affect help output. :param show_default: Show the default value for commands. If this value is not set, it defaults to the value from the parent context. ``Command.show_default`` overrides this default for the specific command. .. versionchanged:: 8.1 The ``show_default`` parameter is overridden by ``Command.show_default``, instead of the other way around. .. versionchanged:: 8.0 The ``show_default`` parameter defaults to the value from the parent context. .. versionchanged:: 7.1 Added the ``show_default`` parameter. .. versionchanged:: 4.0 Added the ``color``, ``ignore_unknown_options``, and ``max_content_width`` parameters. .. versionchanged:: 3.0 Added the ``allow_extra_args`` and ``allow_interspersed_args`` parameters. .. versionchanged:: 2.0 Added the ``resilient_parsing``, ``help_option_names``, and ``token_normalize_func`` parameters. """ #: The formatter class to create with :meth:`make_formatter`. #: #: .. versionadded:: 8.0 formatter_class: t.Type["HelpFormatter"] = HelpFormatter def __init__( self, command: "Command", parent: t.Optional["Context"] = None, info_name: t.Optional[str] = None, obj: t.Optional[t.Any] = None, auto_envvar_prefix: t.Optional[str] = None, default_map: t.Optional[t.MutableMapping[str, t.Any]] = None, terminal_width: t.Optional[int] = None, max_content_width: t.Optional[int] = None, resilient_parsing: bool = False, allow_extra_args: t.Optional[bool] = None, allow_interspersed_args: t.Optional[bool] = None, ignore_unknown_options: t.Optional[bool] = None, help_option_names: t.Optional[t.List[str]] = None, token_normalize_func: t.Optional[t.Callable[[str], str]] = None, color: t.Optional[bool] = None, show_default: t.Optional[bool] = None, ) -> None: #: the parent context or `None` if none exists. self.parent = parent #: the :class:`Command` for this context. self.command = command #: the descriptive information name self.info_name = info_name #: Map of parameter names to their parsed values. Parameters #: with ``expose_value=False`` are not stored. self.params: t.Dict[str, t.Any] = {} #: the leftover arguments. self.args: t.List[str] = [] #: protected arguments. These are arguments that are prepended #: to `args` when certain parsing scenarios are encountered but #: must be never propagated to another arguments. This is used #: to implement nested parsing. self.protected_args: t.List[str] = [] #: the collected prefixes of the command's options. self._opt_prefixes: t.Set[str] = set(parent._opt_prefixes) if parent else set() if obj is None and parent is not None: obj = parent.obj #: the user object stored. self.obj: t.Any = obj self._meta: t.Dict[str, t.Any] = getattr(parent, "meta", {}) #: A dictionary (-like object) with defaults for parameters. if ( default_map is None and info_name is not None and parent is not None and parent.default_map is not None ): default_map = parent.default_map.get(info_name) self.default_map: t.Optional[t.MutableMapping[str, t.Any]] = default_map #: This flag indicates if a subcommand is going to be executed. A #: group callback can use this information to figure out if it's #: being executed directly or because the execution flow passes #: onwards to a subcommand. By default it's None, but it can be #: the name of the subcommand to execute. #: #: If chaining is enabled this will be set to ``'*'`` in case #: any commands are executed. It is however not possible to #: figure out which ones. If you require this knowledge you #: should use a :func:`result_callback`. self.invoked_subcommand: t.Optional[str] = None if terminal_width is None and parent is not None: terminal_width = parent.terminal_width #: The width of the terminal (None is autodetection). self.terminal_width: t.Optional[int] = terminal_width if max_content_width is None and parent is not None: max_content_width = parent.max_content_width #: The maximum width of formatted content (None implies a sensible #: default which is 80 for most things). self.max_content_width: t.Optional[int] = max_content_width if allow_extra_args is None: allow_extra_args = command.allow_extra_args #: Indicates if the context allows extra args or if it should #: fail on parsing. #: #: .. versionadded:: 3.0 self.allow_extra_args = allow_extra_args if allow_interspersed_args is None: allow_interspersed_args = command.allow_interspersed_args #: Indicates if the context allows mixing of arguments and #: options or not. #: #: .. versionadded:: 3.0 self.allow_interspersed_args: bool = allow_interspersed_args if ignore_unknown_options is None: ignore_unknown_options = command.ignore_unknown_options #: Instructs click to ignore options that a command does not #: understand and will store it on the context for later #: processing. This is primarily useful for situations where you #: want to call into external programs. Generally this pattern is #: strongly discouraged because it's not possibly to losslessly #: forward all arguments. #: #: .. versionadded:: 4.0 self.ignore_unknown_options: bool = ignore_unknown_options if help_option_names is None: if parent is not None: help_option_names = parent.help_option_names else: help_option_names = ["--help"] #: The names for the help options. self.help_option_names: t.List[str] = help_option_names if token_normalize_func is None and parent is not None: token_normalize_func = parent.token_normalize_func #: An optional normalization function for tokens. This is #: options, choices, commands etc. self.token_normalize_func: t.Optional[t.Callable[[str], str]] = ( token_normalize_func ) #: Indicates if resilient parsing is enabled. In that case Click #: will do its best to not cause any failures and default values #: will be ignored. Useful for completion. self.resilient_parsing: bool = resilient_parsing # If there is no envvar prefix yet, but the parent has one and # the command on this level has a name, we can expand the envvar # prefix automatically. if auto_envvar_prefix is None: if ( parent is not None and parent.auto_envvar_prefix is not None and self.info_name is not None ): auto_envvar_prefix = ( f"{parent.auto_envvar_prefix}_{self.info_name.upper()}" ) else: auto_envvar_prefix = auto_envvar_prefix.upper() if auto_envvar_prefix is not None: auto_envvar_prefix = auto_envvar_prefix.replace("-", "_") self.auto_envvar_prefix: t.Optional[str] = auto_envvar_prefix if color is None and parent is not None: color = parent.color #: Controls if styling output is wanted or not. self.color: t.Optional[bool] = color if show_default is None and parent is not None: show_default = parent.show_default #: Show option default values when formatting help text. self.show_default: t.Optional[bool] = show_default self._close_callbacks: t.List[t.Callable[[], t.Any]] = [] self._depth = 0 self._parameter_source: t.Dict[str, ParameterSource] = {} self._exit_stack = ExitStack() def to_info_dict(self) -> t.Dict[str, t.Any]: """Gather information that could be useful for a tool generating user-facing documentation. This traverses the entire CLI structure. .. code-block:: python with Context(cli) as ctx: info = ctx.to_info_dict() .. versionadded:: 8.0 """ return { "command": self.command.to_info_dict(self), "info_name": self.info_name, "allow_extra_args": self.allow_extra_args, "allow_interspersed_args": self.allow_interspersed_args, "ignore_unknown_options": self.ignore_unknown_options, "auto_envvar_prefix": self.auto_envvar_prefix, } def __enter__(self) -> "Context": self._depth += 1 push_context(self) return self def __exit__( self, exc_type: t.Optional[t.Type[BaseException]], exc_value: t.Optional[BaseException], tb: t.Optional[TracebackType], ) -> None: self._depth -= 1 if self._depth == 0: self.close() pop_context() @contextmanager def scope(self, cleanup: bool = True) -> t.Iterator["Context"]: """This helper method can be used with the context object to promote it to the current thread local (see :func:`get_current_context`). The default behavior of this is to invoke the cleanup functions which can be disabled by setting `cleanup` to `False`. The cleanup functions are typically used for things such as closing file handles. If the cleanup is intended the context object can also be directly used as a context manager. Example usage:: with ctx.scope(): assert get_current_context() is ctx This is equivalent:: with ctx: assert get_current_context() is ctx .. versionadded:: 5.0 :param cleanup: controls if the cleanup functions should be run or not. The default is to run these functions. In some situations the context only wants to be temporarily pushed in which case this can be disabled. Nested pushes automatically defer the cleanup. """ if not cleanup: self._depth += 1 try: with self as rv: yield rv finally: if not cleanup: self._depth -= 1 @property def meta(self) -> t.Dict[str, t.Any]: """This is a dictionary which is shared with all the contexts that are nested. It exists so that click utilities can store some state here if they need to. It is however the responsibility of that code to manage this dictionary well. The keys are supposed to be unique dotted strings. For instance module paths are a good choice for it. What is stored in there is irrelevant for the operation of click. However what is important is that code that places data here adheres to the general semantics of the system. Example usage:: LANG_KEY = f'{__name__}.lang' def set_language(value): ctx = get_current_context() ctx.meta[LANG_KEY] = value def get_language(): return get_current_context().meta.get(LANG_KEY, 'en_US') .. versionadded:: 5.0 """ return self._meta def make_formatter(self) -> HelpFormatter: """Creates the :class:`~click.HelpFormatter` for the help and usage output. To quickly customize the formatter class used without overriding this method, set the :attr:`formatter_class` attribute. .. versionchanged:: 8.0 Added the :attr:`formatter_class` attribute. """ return self.formatter_class( width=self.terminal_width, max_width=self.max_content_width ) def with_resource(self, context_manager: t.ContextManager[V]) -> V: """Register a resource as if it were used in a ``with`` statement. The resource will be cleaned up when the context is popped. Uses :meth:`contextlib.ExitStack.enter_context`. It calls the resource's ``__enter__()`` method and returns the result. When the context is popped, it closes the stack, which calls the resource's ``__exit__()`` method. To register a cleanup function for something that isn't a context manager, use :meth:`call_on_close`. Or use something from :mod:`contextlib` to turn it into a context manager first. .. code-block:: python @click.group() @click.option("--name") @click.pass_context def cli(ctx): ctx.obj = ctx.with_resource(connect_db(name)) :param context_manager: The context manager to enter. :return: Whatever ``context_manager.__enter__()`` returns. .. versionadded:: 8.0 """ return self._exit_stack.enter_context(context_manager) def call_on_close(self, f: t.Callable[..., t.Any]) -> t.Callable[..., t.Any]: """Register a function to be called when the context tears down. This can be used to close resources opened during the script execution. Resources that support Python's context manager protocol which would be used in a ``with`` statement should be registered with :meth:`with_resource` instead. :param f: The function to execute on teardown. """ return self._exit_stack.callback(f) def close(self) -> None: """Invoke all close callbacks registered with :meth:`call_on_close`, and exit all context managers entered with :meth:`with_resource`. """ self._exit_stack.close() # In case the context is reused, create a new exit stack. self._exit_stack = ExitStack() @property def command_path(self) -> str: """The computed command path. This is used for the ``usage`` information on the help page. It's automatically created by combining the info names of the chain of contexts to the root. """ rv = "" if self.info_name is not None: rv = self.info_name if self.parent is not None: parent_command_path = [self.parent.command_path] if isinstance(self.parent.command, Command): for param in self.parent.command.get_params(self): parent_command_path.extend(param.get_usage_pieces(self)) rv = f"{' '.join(parent_command_path)} {rv}" return rv.lstrip() def find_root(self) -> "Context": """Finds the outermost context.""" node = self while node.parent is not None: node = node.parent return node def find_object(self, object_type: t.Type[V]) -> t.Optional[V]: """Finds the closest object of a given type.""" node: t.Optional[Context] = self while node is not None: if isinstance(node.obj, object_type): return node.obj node = node.parent return None def ensure_object(self, object_type: t.Type[V]) -> V: """Like :meth:`find_object` but sets the innermost object to a new instance of `object_type` if it does not exist. """ rv = self.find_object(object_type) if rv is None: self.obj = rv = object_type() return rv @t.overload def lookup_default( self, name: str, call: "te.Literal[True]" = True ) -> t.Optional[t.Any]: ... @t.overload def lookup_default( self, name: str, call: "te.Literal[False]" = ... ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: ... def lookup_default(self, name: str, call: bool = True) -> t.Optional[t.Any]: """Get the default for a parameter from :attr:`default_map`. :param name: Name of the parameter. :param call: If the default is a callable, call it. Disable to return the callable instead. .. versionchanged:: 8.0 Added the ``call`` parameter. """ if self.default_map is not None: value = self.default_map.get(name) if call and callable(value): return value() return value return None def fail(self, message: str) -> "te.NoReturn": """Aborts the execution of the program with a specific error message. :param message: the error message to fail with. """ raise UsageError(message, self) def abort(self) -> "te.NoReturn": """Aborts the script.""" raise Abort() def exit(self, code: int = 0) -> "te.NoReturn": """Exits the application with a given exit code.""" raise Exit(code) def get_usage(self) -> str: """Helper method to get formatted usage string for the current context and command. """ return self.command.get_usage(self) def get_help(self) -> str: """Helper method to get formatted help page for the current context and command. """ return self.command.get_help(self) def _make_sub_context(self, command: "Command") -> "Context": """Create a new context of the same type as this context, but for a new command. :meta private: """ return type(self)(command, info_name=command.name, parent=self) @t.overload def invoke( __self, __callback: "t.Callable[..., V]", *args: t.Any, **kwargs: t.Any, ) -> V: ... @t.overload def invoke( __self, __callback: "Command", *args: t.Any, **kwargs: t.Any, ) -> t.Any: ... def invoke( __self, __callback: t.Union["Command", "t.Callable[..., V]"], *args: t.Any, **kwargs: t.Any, ) -> t.Union[t.Any, V]: """Invokes a command callback in exactly the way it expects. There are two ways to invoke this method: 1. the first argument can be a callback and all other arguments and keyword arguments are forwarded directly to the function. 2. the first argument is a click command object. In that case all arguments are forwarded as well but proper click parameters (options and click arguments) must be keyword arguments and Click will fill in defaults. Note that before Click 3.2 keyword arguments were not properly filled in against the intention of this code and no context was created. For more information about this change and why it was done in a bugfix release see :ref:`upgrade-to-3.2`. .. versionchanged:: 8.0 All ``kwargs`` are tracked in :attr:`params` so they will be passed if :meth:`forward` is called at multiple levels. """ if isinstance(__callback, Command): other_cmd = __callback if other_cmd.callback is None: raise TypeError( "The given command does not have a callback that can be invoked." ) else: __callback = t.cast("t.Callable[..., V]", other_cmd.callback) ctx = __self._make_sub_context(other_cmd) for param in other_cmd.params: if param.name not in kwargs and param.expose_value: kwargs[param.name] = param.type_cast_value( # type: ignore ctx, param.get_default(ctx) ) # Track all kwargs as params, so that forward() will pass # them on in subsequent calls. ctx.params.update(kwargs) else: ctx = __self with augment_usage_errors(__self): with ctx: return __callback(*args, **kwargs) def forward(__self, __cmd: "Command", *args: t.Any, **kwargs: t.Any) -> t.Any: """Similar to :meth:`invoke` but fills in default keyword arguments from the current context if the other command expects it. This cannot invoke callbacks directly, only other commands. .. versionchanged:: 8.0 All ``kwargs`` are tracked in :attr:`params` so they will be passed if ``forward`` is called at multiple levels. """ # Can only forward to other commands, not direct callbacks. if not isinstance(__cmd, Command): raise TypeError("Callback is not a command.") for param in __self.params: if param not in kwargs: kwargs[param] = __self.params[param] return __self.invoke(__cmd, *args, **kwargs) def set_parameter_source(self, name: str, source: ParameterSource) -> None: """Set the source of a parameter. This indicates the location from which the value of the parameter was obtained. :param name: The name of the parameter. :param source: A member of :class:`~click.core.ParameterSource`. """ self._parameter_source[name] = source def get_parameter_source(self, name: str) -> t.Optional[ParameterSource]: """Get the source of a parameter. This indicates the location from which the value of the parameter was obtained. This can be useful for determining when a user specified a value on the command line that is the same as the default value. It will be :attr:`~click.core.ParameterSource.DEFAULT` only if the value was actually taken from the default. :param name: The name of the parameter. :rtype: ParameterSource .. versionchanged:: 8.0 Returns ``None`` if the parameter was not provided from any source. """ return self._parameter_source.get(name) class BaseCommand: """The base command implements the minimal API contract of commands. Most code will never use this as it does not implement a lot of useful functionality but it can act as the direct subclass of alternative parsing methods that do not depend on the Click parser. For instance, this can be used to bridge Click and other systems like argparse or docopt. Because base commands do not implement a lot of the API that other parts of Click take for granted, they are not supported for all operations. For instance, they cannot be used with the decorators usually and they have no built-in callback system. .. versionchanged:: 2.0 Added the `context_settings` parameter. :param name: the name of the command to use unless a group overrides it. :param context_settings: an optional dictionary with defaults that are passed to the context object. """ #: The context class to create with :meth:`make_context`. #: #: .. versionadded:: 8.0 context_class: t.Type[Context] = Context #: the default for the :attr:`Context.allow_extra_args` flag. allow_extra_args = False #: the default for the :attr:`Context.allow_interspersed_args` flag. allow_interspersed_args = True #: the default for the :attr:`Context.ignore_unknown_options` flag. ignore_unknown_options = False def __init__( self, name: t.Optional[str], context_settings: t.Optional[t.MutableMapping[str, t.Any]] = None, ) -> None: #: the name the command thinks it has. Upon registering a command #: on a :class:`Group` the group will default the command name #: with this information. You should instead use the #: :class:`Context`\'s :attr:`~Context.info_name` attribute. self.name = name if context_settings is None: context_settings = {} #: an optional dictionary with defaults passed to the context. self.context_settings: t.MutableMapping[str, t.Any] = context_settings def to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: """Gather information that could be useful for a tool generating user-facing documentation. This traverses the entire structure below this command. Use :meth:`click.Context.to_info_dict` to traverse the entire CLI structure. :param ctx: A :class:`Context` representing this command. .. versionadded:: 8.0 """ return {"name": self.name} def __repr__(self) -> str: return f"<{self.__class__.__name__} {self.name}>" def get_usage(self, ctx: Context) -> str: raise NotImplementedError("Base commands cannot get usage") def get_help(self, ctx: Context) -> str: raise NotImplementedError("Base commands cannot get help") def make_context( self, info_name: t.Optional[str], args: t.List[str], parent: t.Optional[Context] = None, **extra: t.Any, ) -> Context: """This function when given an info name and arguments will kick off the parsing and create a new :class:`Context`. It does not invoke the actual command callback though. To quickly customize the context class used without overriding this method, set the :attr:`context_class` attribute. :param info_name: the info name for this invocation. Generally this is the most descriptive name for the script or command. For the toplevel script it's usually the name of the script, for commands below it's the name of the command. :param args: the arguments to parse as list of strings. :param parent: the parent context if available. :param extra: extra keyword arguments forwarded to the context constructor. .. versionchanged:: 8.0 Added the :attr:`context_class` attribute. """ for key, value in self.context_settings.items(): if key not in extra: extra[key] = value ctx = self.context_class( self, # type: ignore[arg-type] info_name=info_name, parent=parent, **extra, ) with ctx.scope(cleanup=False): self.parse_args(ctx, args) return ctx def parse_args(self, ctx: Context, args: t.List[str]) -> t.List[str]: """Given a context and a list of arguments this creates the parser and parses the arguments, then modifies the context as necessary. This is automatically invoked by :meth:`make_context`. """ raise NotImplementedError("Base commands do not know how to parse arguments.") def invoke(self, ctx: Context) -> t.Any: """Given a context, this invokes the command. The default implementation is raising a not implemented error. """ raise NotImplementedError("Base commands are not invocable by default") def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: """Return a list of completions for the incomplete value. Looks at the names of chained multi-commands. Any command could be part of a chained multi-command, so sibling commands are valid at any point during command completion. Other command classes will return more completions. :param ctx: Invocation context for this command. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ from click.shell_completion import CompletionItem results: t.List[CompletionItem] = [] while ctx.parent is not None: ctx = ctx.parent if isinstance(ctx.command, MultiCommand) and ctx.command.chain: results.extend( CompletionItem(name, help=command.get_short_help_str()) for name, command in _complete_visible_commands(ctx, incomplete) if name not in ctx.protected_args ) return results @t.overload def main( self, args: t.Optional[t.Sequence[str]] = None, prog_name: t.Optional[str] = None, complete_var: t.Optional[str] = None, standalone_mode: "te.Literal[True]" = True, **extra: t.Any, ) -> "te.NoReturn": ... @t.overload def main( self, args: t.Optional[t.Sequence[str]] = None, prog_name: t.Optional[str] = None, complete_var: t.Optional[str] = None, standalone_mode: bool = ..., **extra: t.Any, ) -> t.Any: ... def main( self, args: t.Optional[t.Sequence[str]] = None, prog_name: t.Optional[str] = None, complete_var: t.Optional[str] = None, standalone_mode: bool = True, windows_expand_args: bool = True, **extra: t.Any, ) -> t.Any: """This is the way to invoke a script with all the bells and whistles as a command line application. This will always terminate the application after a call. If this is not wanted, ``SystemExit`` needs to be caught. This method is also available by directly calling the instance of a :class:`Command`. :param args: the arguments that should be used for parsing. If not provided, ``sys.argv[1:]`` is used. :param prog_name: the program name that should be used. By default the program name is constructed by taking the file name from ``sys.argv[0]``. :param complete_var: the environment variable that controls the bash completion support. The default is ``"__COMPLETE"`` with prog_name in uppercase. :param standalone_mode: the default behavior is to invoke the script in standalone mode. Click will then handle exceptions and convert them into error messages and the function will never return but shut down the interpreter. If this is set to `False` they will be propagated to the caller and the return value of this function is the return value of :meth:`invoke`. :param windows_expand_args: Expand glob patterns, user dir, and env vars in command line args on Windows. :param extra: extra keyword arguments are forwarded to the context constructor. See :class:`Context` for more information. .. versionchanged:: 8.0.1 Added the ``windows_expand_args`` parameter to allow disabling command line arg expansion on Windows. .. versionchanged:: 8.0 When taking arguments from ``sys.argv`` on Windows, glob patterns, user dir, and env vars are expanded. .. versionchanged:: 3.0 Added the ``standalone_mode`` parameter. """ if args is None: args = sys.argv[1:] if os.name == "nt" and windows_expand_args: args = _expand_args(args) else: args = list(args) if prog_name is None: prog_name = _detect_program_name() # Process shell completion requests and exit early. self._main_shell_completion(extra, prog_name, complete_var) try: try: with self.make_context(prog_name, args, **extra) as ctx: rv = self.invoke(ctx) if not standalone_mode: return rv # it's not safe to `ctx.exit(rv)` here! # note that `rv` may actually contain data like "1" which # has obvious effects # more subtle case: `rv=[None, None]` can come out of # chained commands which all returned `None` -- so it's not # even always obvious that `rv` indicates success/failure # by its truthiness/falsiness ctx.exit() except (EOFError, KeyboardInterrupt) as e: echo(file=sys.stderr) raise Abort() from e except ClickException as e: if not standalone_mode: raise e.show() sys.exit(e.exit_code) except OSError as e: if e.errno == errno.EPIPE: sys.stdout = t.cast(t.TextIO, PacifyFlushWrapper(sys.stdout)) sys.stderr = t.cast(t.TextIO, PacifyFlushWrapper(sys.stderr)) sys.exit(1) else: raise except Exit as e: if standalone_mode: sys.exit(e.exit_code) else: # in non-standalone mode, return the exit code # note that this is only reached if `self.invoke` above raises # an Exit explicitly -- thus bypassing the check there which # would return its result # the results of non-standalone execution may therefore be # somewhat ambiguous: if there are codepaths which lead to # `ctx.exit(1)` and to `return 1`, the caller won't be able to # tell the difference between the two return e.exit_code except Abort: if not standalone_mode: raise echo(_("Aborted!"), file=sys.stderr) sys.exit(1) def _main_shell_completion( self, ctx_args: t.MutableMapping[str, t.Any], prog_name: str, complete_var: t.Optional[str] = None, ) -> None: """Check if the shell is asking for tab completion, process that, then exit early. Called from :meth:`main` before the program is invoked. :param prog_name: Name of the executable in the shell. :param complete_var: Name of the environment variable that holds the completion instruction. Defaults to ``_{PROG_NAME}_COMPLETE``. .. versionchanged:: 8.2.0 Dots (``.``) in ``prog_name`` are replaced with underscores (``_``). """ if complete_var is None: complete_name = prog_name.replace("-", "_").replace(".", "_") complete_var = f"_{complete_name}_COMPLETE".upper() instruction = os.environ.get(complete_var) if not instruction: return from .shell_completion import shell_complete rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction) sys.exit(rv) def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any: """Alias for :meth:`main`.""" return self.main(*args, **kwargs) class Command(BaseCommand): """Commands are the basic building block of command line interfaces in Click. A basic command handles command line parsing and might dispatch more parsing to commands nested below it. :param name: the name of the command to use unless a group overrides it. :param context_settings: an optional dictionary with defaults that are passed to the context object. :param callback: the callback to invoke. This is optional. :param params: the parameters to register with this command. This can be either :class:`Option` or :class:`Argument` objects. :param help: the help string to use for this command. :param epilog: like the help string but it's printed at the end of the help page after everything else. :param short_help: the short help to use for this command. This is shown on the command listing of the parent command. :param add_help_option: by default each command registers a ``--help`` option. This can be disabled by this parameter. :param no_args_is_help: this controls what happens if no arguments are provided. This option is disabled by default. If enabled this will add ``--help`` as argument if no arguments are passed :param hidden: hide this command from help outputs. :param deprecated: issues a message indicating that the command is deprecated. .. versionchanged:: 8.1 ``help``, ``epilog``, and ``short_help`` are stored unprocessed, all formatting is done when outputting help text, not at init, and is done even if not using the ``@command`` decorator. .. versionchanged:: 8.0 Added a ``repr`` showing the command name. .. versionchanged:: 7.1 Added the ``no_args_is_help`` parameter. .. versionchanged:: 2.0 Added the ``context_settings`` parameter. """ def __init__( self, name: t.Optional[str], context_settings: t.Optional[t.MutableMapping[str, t.Any]] = None, callback: t.Optional[t.Callable[..., t.Any]] = None, params: t.Optional[t.List["Parameter"]] = None, help: t.Optional[str] = None, epilog: t.Optional[str] = None, short_help: t.Optional[str] = None, options_metavar: t.Optional[str] = "[OPTIONS]", add_help_option: bool = True, no_args_is_help: bool = False, hidden: bool = False, deprecated: bool = False, ) -> None: super().__init__(name, context_settings) #: the callback to execute when the command fires. This might be #: `None` in which case nothing happens. self.callback = callback #: the list of parameters for this command in the order they #: should show up in the help page and execute. Eager parameters #: will automatically be handled before non eager ones. self.params: t.List[Parameter] = params or [] self.help = help self.epilog = epilog self.options_metavar = options_metavar self.short_help = short_help self.add_help_option = add_help_option self._help_option: t.Optional[HelpOption] = None self.no_args_is_help = no_args_is_help self.hidden = hidden self.deprecated = deprecated def to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict(ctx) info_dict.update( params=[param.to_info_dict() for param in self.get_params(ctx)], help=self.help, epilog=self.epilog, short_help=self.short_help, hidden=self.hidden, deprecated=self.deprecated, ) return info_dict def get_usage(self, ctx: Context) -> str: """Formats the usage line into a string and returns it. Calls :meth:`format_usage` internally. """ formatter = ctx.make_formatter() self.format_usage(ctx, formatter) return formatter.getvalue().rstrip("\n") def get_params(self, ctx: Context) -> t.List["Parameter"]: rv = self.params help_option = self.get_help_option(ctx) if help_option is not None: rv = [*rv, help_option] return rv def format_usage(self, ctx: Context, formatter: HelpFormatter) -> None: """Writes the usage line into the formatter. This is a low-level method called by :meth:`get_usage`. """ pieces = self.collect_usage_pieces(ctx) formatter.write_usage(ctx.command_path, " ".join(pieces)) def collect_usage_pieces(self, ctx: Context) -> t.List[str]: """Returns all the pieces that go into the usage line and returns it as a list of strings. """ rv = [self.options_metavar] if self.options_metavar else [] for param in self.get_params(ctx): rv.extend(param.get_usage_pieces(ctx)) return rv def get_help_option_names(self, ctx: Context) -> t.List[str]: """Returns the names for the help option.""" all_names = set(ctx.help_option_names) for param in self.params: all_names.difference_update(param.opts) all_names.difference_update(param.secondary_opts) return list(all_names) def get_help_option(self, ctx: Context) -> t.Optional["Option"]: """Returns the help option object. Unless ``add_help_option`` is ``False``. .. versionchanged:: 8.1.8 The help option is now cached to avoid creating it multiple times. """ help_options = self.get_help_option_names(ctx) if not help_options or not self.add_help_option: return None # Cache the help option object in private _help_option attribute to # avoid creating it multiple times. Not doing this will break the # callback odering by iter_params_for_processing(), which relies on # object comparison. if self._help_option is None: # Avoid circular import. from .decorators import HelpOption self._help_option = HelpOption(help_options) return self._help_option def make_parser(self, ctx: Context) -> OptionParser: """Creates the underlying option parser for this command.""" parser = OptionParser(ctx) for param in self.get_params(ctx): param.add_to_parser(parser, ctx) return parser def get_help(self, ctx: Context) -> str: """Formats the help into a string and returns it. Calls :meth:`format_help` internally. """ formatter = ctx.make_formatter() self.format_help(ctx, formatter) return formatter.getvalue().rstrip("\n") def get_short_help_str(self, limit: int = 45) -> str: """Gets short help for the command or makes it by shortening the long help string. """ if self.short_help: text = inspect.cleandoc(self.short_help) elif self.help: text = make_default_short_help(self.help, limit) else: text = "" if self.deprecated: text = _("(Deprecated) {text}").format(text=text) return text.strip() def format_help(self, ctx: Context, formatter: HelpFormatter) -> None: """Writes the help into the formatter if it exists. This is a low-level method called by :meth:`get_help`. This calls the following methods: - :meth:`format_usage` - :meth:`format_help_text` - :meth:`format_options` - :meth:`format_epilog` """ self.format_usage(ctx, formatter) self.format_help_text(ctx, formatter) self.format_options(ctx, formatter) self.format_epilog(ctx, formatter) def format_help_text(self, ctx: Context, formatter: HelpFormatter) -> None: """Writes the help text to the formatter if it exists.""" if self.help is not None: # truncate the help text to the first form feed text = inspect.cleandoc(self.help).partition("\f")[0] else: text = "" if self.deprecated: text = _("(Deprecated) {text}").format(text=text) if text: formatter.write_paragraph() with formatter.indentation(): formatter.write_text(text) def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: """Writes all the options into the formatter if they exist.""" opts = [] for param in self.get_params(ctx): rv = param.get_help_record(ctx) if rv is not None: opts.append(rv) if opts: with formatter.section(_("Options")): formatter.write_dl(opts) def format_epilog(self, ctx: Context, formatter: HelpFormatter) -> None: """Writes the epilog into the formatter if it exists.""" if self.epilog: epilog = inspect.cleandoc(self.epilog) formatter.write_paragraph() with formatter.indentation(): formatter.write_text(epilog) def parse_args(self, ctx: Context, args: t.List[str]) -> t.List[str]: if not args and self.no_args_is_help and not ctx.resilient_parsing: echo(ctx.get_help(), color=ctx.color) ctx.exit() parser = self.make_parser(ctx) opts, args, param_order = parser.parse_args(args=args) for param in iter_params_for_processing(param_order, self.get_params(ctx)): value, args = param.handle_parse_result(ctx, opts, args) if args and not ctx.allow_extra_args and not ctx.resilient_parsing: ctx.fail( ngettext( "Got unexpected extra argument ({args})", "Got unexpected extra arguments ({args})", len(args), ).format(args=" ".join(map(str, args))) ) ctx.args = args ctx._opt_prefixes.update(parser._opt_prefixes) return args def invoke(self, ctx: Context) -> t.Any: """Given a context, this invokes the attached callback (if it exists) in the right way. """ if self.deprecated: message = _( "DeprecationWarning: The command {name!r} is deprecated." ).format(name=self.name) echo(style(message, fg="red"), err=True) if self.callback is not None: return ctx.invoke(self.callback, **ctx.params) def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: """Return a list of completions for the incomplete value. Looks at the names of options and chained multi-commands. :param ctx: Invocation context for this command. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ from click.shell_completion import CompletionItem results: t.List[CompletionItem] = [] if incomplete and not incomplete[0].isalnum(): for param in self.get_params(ctx): if ( not isinstance(param, Option) or param.hidden or ( not param.multiple and ctx.get_parameter_source(param.name) # type: ignore is ParameterSource.COMMANDLINE ) ): continue results.extend( CompletionItem(name, help=param.help) for name in [*param.opts, *param.secondary_opts] if name.startswith(incomplete) ) results.extend(super().shell_complete(ctx, incomplete)) return results class MultiCommand(Command): """A multi command is the basic implementation of a command that dispatches to subcommands. The most common version is the :class:`Group`. :param invoke_without_command: this controls how the multi command itself is invoked. By default it's only invoked if a subcommand is provided. :param no_args_is_help: this controls what happens if no arguments are provided. This option is enabled by default if `invoke_without_command` is disabled or disabled if it's enabled. If enabled this will add ``--help`` as argument if no arguments are passed. :param subcommand_metavar: the string that is used in the documentation to indicate the subcommand place. :param chain: if this is set to `True` chaining of multiple subcommands is enabled. This restricts the form of commands in that they cannot have optional arguments but it allows multiple commands to be chained together. :param result_callback: The result callback to attach to this multi command. This can be set or changed later with the :meth:`result_callback` decorator. :param attrs: Other command arguments described in :class:`Command`. """ allow_extra_args = True allow_interspersed_args = False def __init__( self, name: t.Optional[str] = None, invoke_without_command: bool = False, no_args_is_help: t.Optional[bool] = None, subcommand_metavar: t.Optional[str] = None, chain: bool = False, result_callback: t.Optional[t.Callable[..., t.Any]] = None, **attrs: t.Any, ) -> None: super().__init__(name, **attrs) if no_args_is_help is None: no_args_is_help = not invoke_without_command self.no_args_is_help = no_args_is_help self.invoke_without_command = invoke_without_command if subcommand_metavar is None: if chain: subcommand_metavar = "COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]..." else: subcommand_metavar = "COMMAND [ARGS]..." self.subcommand_metavar = subcommand_metavar self.chain = chain # The result callback that is stored. This can be set or # overridden with the :func:`result_callback` decorator. self._result_callback = result_callback if self.chain: for param in self.params: if isinstance(param, Argument) and not param.required: raise RuntimeError( "Multi commands in chain mode cannot have" " optional arguments." ) def to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict(ctx) commands = {} for name in self.list_commands(ctx): command = self.get_command(ctx, name) if command is None: continue sub_ctx = ctx._make_sub_context(command) with sub_ctx.scope(cleanup=False): commands[name] = command.to_info_dict(sub_ctx) info_dict.update(commands=commands, chain=self.chain) return info_dict def collect_usage_pieces(self, ctx: Context) -> t.List[str]: rv = super().collect_usage_pieces(ctx) rv.append(self.subcommand_metavar) return rv def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: super().format_options(ctx, formatter) self.format_commands(ctx, formatter) def result_callback(self, replace: bool = False) -> t.Callable[[F], F]: """Adds a result callback to the command. By default if a result callback is already registered this will chain them but this can be disabled with the `replace` parameter. The result callback is invoked with the return value of the subcommand (or the list of return values from all subcommands if chaining is enabled) as well as the parameters as they would be passed to the main callback. Example:: @click.group() @click.option('-i', '--input', default=23) def cli(input): return 42 @cli.result_callback() def process_result(result, input): return result + input :param replace: if set to `True` an already existing result callback will be removed. .. versionchanged:: 8.0 Renamed from ``resultcallback``. .. versionadded:: 3.0 """ def decorator(f: F) -> F: old_callback = self._result_callback if old_callback is None or replace: self._result_callback = f return f def function(__value, *args, **kwargs): # type: ignore inner = old_callback(__value, *args, **kwargs) return f(inner, *args, **kwargs) self._result_callback = rv = update_wrapper(t.cast(F, function), f) return rv # type: ignore[return-value] return decorator def format_commands(self, ctx: Context, formatter: HelpFormatter) -> None: """Extra format methods for multi methods that adds all the commands after the options. """ commands = [] for subcommand in self.list_commands(ctx): cmd = self.get_command(ctx, subcommand) # What is this, the tool lied about a command. Ignore it if cmd is None: continue if cmd.hidden: continue commands.append((subcommand, cmd)) # allow for 3 times the default spacing if len(commands): limit = formatter.width - 6 - max(len(cmd[0]) for cmd in commands) rows = [] for subcommand, cmd in commands: help = cmd.get_short_help_str(limit) rows.append((subcommand, help)) if rows: with formatter.section(_("Commands")): formatter.write_dl(rows) def parse_args(self, ctx: Context, args: t.List[str]) -> t.List[str]: if not args and self.no_args_is_help and not ctx.resilient_parsing: echo(ctx.get_help(), color=ctx.color) ctx.exit() rest = super().parse_args(ctx, args) if self.chain: ctx.protected_args = rest ctx.args = [] elif rest: ctx.protected_args, ctx.args = rest[:1], rest[1:] return ctx.args def invoke(self, ctx: Context) -> t.Any: def _process_result(value: t.Any) -> t.Any: if self._result_callback is not None: value = ctx.invoke(self._result_callback, value, **ctx.params) return value if not ctx.protected_args: if self.invoke_without_command: # No subcommand was invoked, so the result callback is # invoked with the group return value for regular # groups, or an empty list for chained groups. with ctx: rv = super().invoke(ctx) return _process_result([] if self.chain else rv) ctx.fail(_("Missing command.")) # Fetch args back out args = [*ctx.protected_args, *ctx.args] ctx.args = [] ctx.protected_args = [] # If we're not in chain mode, we only allow the invocation of a # single command but we also inform the current context about the # name of the command to invoke. if not self.chain: # Make sure the context is entered so we do not clean up # resources until the result processor has worked. with ctx: cmd_name, cmd, args = self.resolve_command(ctx, args) assert cmd is not None ctx.invoked_subcommand = cmd_name super().invoke(ctx) sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) with sub_ctx: return _process_result(sub_ctx.command.invoke(sub_ctx)) # In chain mode we create the contexts step by step, but after the # base command has been invoked. Because at that point we do not # know the subcommands yet, the invoked subcommand attribute is # set to ``*`` to inform the command that subcommands are executed # but nothing else. with ctx: ctx.invoked_subcommand = "*" if args else None super().invoke(ctx) # Otherwise we make every single context and invoke them in a # chain. In that case the return value to the result processor # is the list of all invoked subcommand's results. contexts = [] while args: cmd_name, cmd, args = self.resolve_command(ctx, args) assert cmd is not None sub_ctx = cmd.make_context( cmd_name, args, parent=ctx, allow_extra_args=True, allow_interspersed_args=False, ) contexts.append(sub_ctx) args, sub_ctx.args = sub_ctx.args, [] rv = [] for sub_ctx in contexts: with sub_ctx: rv.append(sub_ctx.command.invoke(sub_ctx)) return _process_result(rv) def resolve_command( self, ctx: Context, args: t.List[str] ) -> t.Tuple[t.Optional[str], t.Optional[Command], t.List[str]]: cmd_name = make_str(args[0]) original_cmd_name = cmd_name # Get the command cmd = self.get_command(ctx, cmd_name) # If we can't find the command but there is a normalization # function available, we try with that one. if cmd is None and ctx.token_normalize_func is not None: cmd_name = ctx.token_normalize_func(cmd_name) cmd = self.get_command(ctx, cmd_name) # If we don't find the command we want to show an error message # to the user that it was not provided. However, there is # something else we should do: if the first argument looks like # an option we want to kick off parsing again for arguments to # resolve things like --help which now should go to the main # place. if cmd is None and not ctx.resilient_parsing: if split_opt(cmd_name)[0]: self.parse_args(ctx, ctx.args) ctx.fail(_("No such command {name!r}.").format(name=original_cmd_name)) return cmd_name if cmd else None, cmd, args[1:] def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: """Given a context and a command name, this returns a :class:`Command` object if it exists or returns `None`. """ raise NotImplementedError def list_commands(self, ctx: Context) -> t.List[str]: """Returns a list of subcommand names in the order they should appear. """ return [] def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: """Return a list of completions for the incomplete value. Looks at the names of options, subcommands, and chained multi-commands. :param ctx: Invocation context for this command. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ from click.shell_completion import CompletionItem results = [ CompletionItem(name, help=command.get_short_help_str()) for name, command in _complete_visible_commands(ctx, incomplete) ] results.extend(super().shell_complete(ctx, incomplete)) return results class Group(MultiCommand): """A group allows a command to have subcommands attached. This is the most common way to implement nesting in Click. :param name: The name of the group command. :param commands: A dict mapping names to :class:`Command` objects. Can also be a list of :class:`Command`, which will use :attr:`Command.name` to create the dict. :param attrs: Other command arguments described in :class:`MultiCommand`, :class:`Command`, and :class:`BaseCommand`. .. versionchanged:: 8.0 The ``commands`` argument can be a list of command objects. """ #: If set, this is used by the group's :meth:`command` decorator #: as the default :class:`Command` class. This is useful to make all #: subcommands use a custom command class. #: #: .. versionadded:: 8.0 command_class: t.Optional[t.Type[Command]] = None #: If set, this is used by the group's :meth:`group` decorator #: as the default :class:`Group` class. This is useful to make all #: subgroups use a custom group class. #: #: If set to the special value :class:`type` (literally #: ``group_class = type``), this group's class will be used as the #: default class. This makes a custom group class continue to make #: custom groups. #: #: .. versionadded:: 8.0 group_class: t.Optional[t.Union[t.Type["Group"], t.Type[type]]] = None # Literal[type] isn't valid, so use Type[type] def __init__( self, name: t.Optional[str] = None, commands: t.Optional[ t.Union[t.MutableMapping[str, Command], t.Sequence[Command]] ] = None, **attrs: t.Any, ) -> None: super().__init__(name, **attrs) if commands is None: commands = {} elif isinstance(commands, abc.Sequence): commands = {c.name: c for c in commands if c.name is not None} #: The registered subcommands by their exported names. self.commands: t.MutableMapping[str, Command] = commands def add_command(self, cmd: Command, name: t.Optional[str] = None) -> None: """Registers another :class:`Command` with this group. If the name is not provided, the name of the command is used. """ name = name or cmd.name if name is None: raise TypeError("Command has no name.") _check_multicommand(self, name, cmd, register=True) self.commands[name] = cmd @t.overload def command(self, __func: t.Callable[..., t.Any]) -> Command: ... @t.overload def command( self, *args: t.Any, **kwargs: t.Any ) -> t.Callable[[t.Callable[..., t.Any]], Command]: ... def command( self, *args: t.Any, **kwargs: t.Any ) -> t.Union[t.Callable[[t.Callable[..., t.Any]], Command], Command]: """A shortcut decorator for declaring and attaching a command to the group. This takes the same arguments as :func:`command` and immediately registers the created command with this group by calling :meth:`add_command`. To customize the command class used, set the :attr:`command_class` attribute. .. versionchanged:: 8.1 This decorator can be applied without parentheses. .. versionchanged:: 8.0 Added the :attr:`command_class` attribute. """ from .decorators import command func: t.Optional[t.Callable[..., t.Any]] = None if args and callable(args[0]): assert ( len(args) == 1 and not kwargs ), "Use 'command(**kwargs)(callable)' to provide arguments." (func,) = args args = () if self.command_class and kwargs.get("cls") is None: kwargs["cls"] = self.command_class def decorator(f: t.Callable[..., t.Any]) -> Command: cmd: Command = command(*args, **kwargs)(f) self.add_command(cmd) return cmd if func is not None: return decorator(func) return decorator @t.overload def group(self, __func: t.Callable[..., t.Any]) -> "Group": ... @t.overload def group( self, *args: t.Any, **kwargs: t.Any ) -> t.Callable[[t.Callable[..., t.Any]], "Group"]: ... def group( self, *args: t.Any, **kwargs: t.Any ) -> t.Union[t.Callable[[t.Callable[..., t.Any]], "Group"], "Group"]: """A shortcut decorator for declaring and attaching a group to the group. This takes the same arguments as :func:`group` and immediately registers the created group with this group by calling :meth:`add_command`. To customize the group class used, set the :attr:`group_class` attribute. .. versionchanged:: 8.1 This decorator can be applied without parentheses. .. versionchanged:: 8.0 Added the :attr:`group_class` attribute. """ from .decorators import group func: t.Optional[t.Callable[..., t.Any]] = None if args and callable(args[0]): assert ( len(args) == 1 and not kwargs ), "Use 'group(**kwargs)(callable)' to provide arguments." (func,) = args args = () if self.group_class is not None and kwargs.get("cls") is None: if self.group_class is type: kwargs["cls"] = type(self) else: kwargs["cls"] = self.group_class def decorator(f: t.Callable[..., t.Any]) -> "Group": cmd: Group = group(*args, **kwargs)(f) self.add_command(cmd) return cmd if func is not None: return decorator(func) return decorator def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: return self.commands.get(cmd_name) def list_commands(self, ctx: Context) -> t.List[str]: return sorted(self.commands) class CommandCollection(MultiCommand): """A command collection is a multi command that merges multiple multi commands together into one. This is a straightforward implementation that accepts a list of different multi commands as sources and provides all the commands for each of them. See :class:`MultiCommand` and :class:`Command` for the description of ``name`` and ``attrs``. """ def __init__( self, name: t.Optional[str] = None, sources: t.Optional[t.List[MultiCommand]] = None, **attrs: t.Any, ) -> None: super().__init__(name, **attrs) #: The list of registered multi commands. self.sources: t.List[MultiCommand] = sources or [] def add_source(self, multi_cmd: MultiCommand) -> None: """Adds a new multi command to the chain dispatcher.""" self.sources.append(multi_cmd) def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: for source in self.sources: rv = source.get_command(ctx, cmd_name) if rv is not None: if self.chain: _check_multicommand(self, cmd_name, rv) return rv return None def list_commands(self, ctx: Context) -> t.List[str]: rv: t.Set[str] = set() for source in self.sources: rv.update(source.list_commands(ctx)) return sorted(rv) def _check_iter(value: t.Any) -> t.Iterator[t.Any]: """Check if the value is iterable but not a string. Raises a type error, or return an iterator over the value. """ if isinstance(value, str): raise TypeError return iter(value) class Parameter: r"""A parameter to a command comes in two versions: they are either :class:`Option`\s or :class:`Argument`\s. Other subclasses are currently not supported by design as some of the internals for parsing are intentionally not finalized. Some settings are supported by both options and arguments. :param param_decls: the parameter declarations for this option or argument. This is a list of flags or argument names. :param type: the type that should be used. Either a :class:`ParamType` or a Python type. The latter is converted into the former automatically if supported. :param required: controls if this is optional or not. :param default: the default value if omitted. This can also be a callable, in which case it's invoked when the default is needed without any arguments. :param callback: A function to further process or validate the value after type conversion. It is called as ``f(ctx, param, value)`` and must return the value. It is called for all sources, including prompts. :param nargs: the number of arguments to match. If not ``1`` the return value is a tuple instead of single value. The default for nargs is ``1`` (except if the type is a tuple, then it's the arity of the tuple). If ``nargs=-1``, all remaining parameters are collected. :param metavar: how the value is represented in the help page. :param expose_value: if this is `True` then the value is passed onwards to the command callback and stored on the context, otherwise it's skipped. :param is_eager: eager values are processed before non eager ones. This should not be set for arguments or it will inverse the order of processing. :param envvar: a string or list of strings that are environment variables that should be checked. :param shell_complete: A function that returns custom shell completions. Used instead of the param's type completion if given. Takes ``ctx, param, incomplete`` and must return a list of :class:`~click.shell_completion.CompletionItem` or a list of strings. .. versionchanged:: 8.0 ``process_value`` validates required parameters and bounded ``nargs``, and invokes the parameter callback before returning the value. This allows the callback to validate prompts. ``full_process_value`` is removed. .. versionchanged:: 8.0 ``autocompletion`` is renamed to ``shell_complete`` and has new semantics described above. The old name is deprecated and will be removed in 8.1, until then it will be wrapped to match the new requirements. .. versionchanged:: 8.0 For ``multiple=True, nargs>1``, the default must be a list of tuples. .. versionchanged:: 8.0 Setting a default is no longer required for ``nargs>1``, it will default to ``None``. ``multiple=True`` or ``nargs=-1`` will default to ``()``. .. versionchanged:: 7.1 Empty environment variables are ignored rather than taking the empty string value. This makes it possible for scripts to clear variables if they can't unset them. .. versionchanged:: 2.0 Changed signature for parameter callback to also be passed the parameter. The old callback format will still work, but it will raise a warning to give you a chance to migrate the code easier. """ param_type_name = "parameter" def __init__( self, param_decls: t.Optional[t.Sequence[str]] = None, type: t.Optional[t.Union[types.ParamType, t.Any]] = None, required: bool = False, default: t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]] = None, callback: t.Optional[t.Callable[[Context, "Parameter", t.Any], t.Any]] = None, nargs: t.Optional[int] = None, multiple: bool = False, metavar: t.Optional[str] = None, expose_value: bool = True, is_eager: bool = False, envvar: t.Optional[t.Union[str, t.Sequence[str]]] = None, shell_complete: t.Optional[ t.Callable[ [Context, "Parameter", str], t.Union[t.List["CompletionItem"], t.List[str]], ] ] = None, ) -> None: self.name: t.Optional[str] self.opts: t.List[str] self.secondary_opts: t.List[str] self.name, self.opts, self.secondary_opts = self._parse_decls( param_decls or (), expose_value ) self.type: types.ParamType = types.convert_type(type, default) # Default nargs to what the type tells us if we have that # information available. if nargs is None: if self.type.is_composite: nargs = self.type.arity else: nargs = 1 self.required = required self.callback = callback self.nargs = nargs self.multiple = multiple self.expose_value = expose_value self.default = default self.is_eager = is_eager self.metavar = metavar self.envvar = envvar self._custom_shell_complete = shell_complete if __debug__: if self.type.is_composite and nargs != self.type.arity: raise ValueError( f"'nargs' must be {self.type.arity} (or None) for" f" type {self.type!r}, but it was {nargs}." ) # Skip no default or callable default. check_default = default if not callable(default) else None if check_default is not None: if multiple: try: # Only check the first value against nargs. check_default = next(_check_iter(check_default), None) except TypeError: raise ValueError( "'default' must be a list when 'multiple' is true." ) from None # Can be None for multiple with empty default. if nargs != 1 and check_default is not None: try: _check_iter(check_default) except TypeError: if multiple: message = ( "'default' must be a list of lists when 'multiple' is" " true and 'nargs' != 1." ) else: message = "'default' must be a list when 'nargs' != 1." raise ValueError(message) from None if nargs > 1 and len(check_default) != nargs: subject = "item length" if multiple else "length" raise ValueError( f"'default' {subject} must match nargs={nargs}." ) def to_info_dict(self) -> t.Dict[str, t.Any]: """Gather information that could be useful for a tool generating user-facing documentation. Use :meth:`click.Context.to_info_dict` to traverse the entire CLI structure. .. versionadded:: 8.0 """ return { "name": self.name, "param_type_name": self.param_type_name, "opts": self.opts, "secondary_opts": self.secondary_opts, "type": self.type.to_info_dict(), "required": self.required, "nargs": self.nargs, "multiple": self.multiple, "default": self.default, "envvar": self.envvar, } def __repr__(self) -> str: return f"<{self.__class__.__name__} {self.name}>" def _parse_decls( self, decls: t.Sequence[str], expose_value: bool ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: raise NotImplementedError() @property def human_readable_name(self) -> str: """Returns the human readable name of this parameter. This is the same as the name for options, but the metavar for arguments. """ return self.name # type: ignore def make_metavar(self) -> str: if self.metavar is not None: return self.metavar metavar = self.type.get_metavar(self) if metavar is None: metavar = self.type.name.upper() if self.nargs != 1: metavar += "..." return metavar @t.overload def get_default( self, ctx: Context, call: "te.Literal[True]" = True ) -> t.Optional[t.Any]: ... @t.overload def get_default( self, ctx: Context, call: bool = ... ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: ... def get_default( self, ctx: Context, call: bool = True ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: """Get the default for the parameter. Tries :meth:`Context.lookup_default` first, then the local default. :param ctx: Current context. :param call: If the default is a callable, call it. Disable to return the callable instead. .. versionchanged:: 8.0.2 Type casting is no longer performed when getting a default. .. versionchanged:: 8.0.1 Type casting can fail in resilient parsing mode. Invalid defaults will not prevent showing help text. .. versionchanged:: 8.0 Looks at ``ctx.default_map`` first. .. versionchanged:: 8.0 Added the ``call`` parameter. """ value = ctx.lookup_default(self.name, call=False) # type: ignore if value is None: value = self.default if call and callable(value): value = value() return value def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: raise NotImplementedError() def consume_value( self, ctx: Context, opts: t.Mapping[str, t.Any] ) -> t.Tuple[t.Any, ParameterSource]: value = opts.get(self.name) # type: ignore source = ParameterSource.COMMANDLINE if value is None: value = self.value_from_envvar(ctx) source = ParameterSource.ENVIRONMENT if value is None: value = ctx.lookup_default(self.name) # type: ignore source = ParameterSource.DEFAULT_MAP if value is None: value = self.get_default(ctx) source = ParameterSource.DEFAULT return value, source def type_cast_value(self, ctx: Context, value: t.Any) -> t.Any: """Convert and validate a value against the option's :attr:`type`, :attr:`multiple`, and :attr:`nargs`. """ if value is None: return () if self.multiple or self.nargs == -1 else None def check_iter(value: t.Any) -> t.Iterator[t.Any]: try: return _check_iter(value) except TypeError: # This should only happen when passing in args manually, # the parser should construct an iterable when parsing # the command line. raise BadParameter( _("Value must be an iterable."), ctx=ctx, param=self ) from None if self.nargs == 1 or self.type.is_composite: def convert(value: t.Any) -> t.Any: return self.type(value, param=self, ctx=ctx) elif self.nargs == -1: def convert(value: t.Any) -> t.Any: # t.Tuple[t.Any, ...] return tuple(self.type(x, self, ctx) for x in check_iter(value)) else: # nargs > 1 def convert(value: t.Any) -> t.Any: # t.Tuple[t.Any, ...] value = tuple(check_iter(value)) if len(value) != self.nargs: raise BadParameter( ngettext( "Takes {nargs} values but 1 was given.", "Takes {nargs} values but {len} were given.", len(value), ).format(nargs=self.nargs, len=len(value)), ctx=ctx, param=self, ) return tuple(self.type(x, self, ctx) for x in value) if self.multiple: return tuple(convert(x) for x in check_iter(value)) return convert(value) def value_is_missing(self, value: t.Any) -> bool: if value is None: return True if (self.nargs != 1 or self.multiple) and value == (): return True return False def process_value(self, ctx: Context, value: t.Any) -> t.Any: value = self.type_cast_value(ctx, value) if self.required and self.value_is_missing(value): raise MissingParameter(ctx=ctx, param=self) if self.callback is not None: value = self.callback(ctx, self, value) return value def resolve_envvar_value(self, ctx: Context) -> t.Optional[str]: if self.envvar is None: return None if isinstance(self.envvar, str): rv = os.environ.get(self.envvar) if rv: return rv else: for envvar in self.envvar: rv = os.environ.get(envvar) if rv: return rv return None def value_from_envvar(self, ctx: Context) -> t.Optional[t.Any]: rv: t.Optional[t.Any] = self.resolve_envvar_value(ctx) if rv is not None and self.nargs != 1: rv = self.type.split_envvar_value(rv) return rv def handle_parse_result( self, ctx: Context, opts: t.Mapping[str, t.Any], args: t.List[str] ) -> t.Tuple[t.Any, t.List[str]]: with augment_usage_errors(ctx, param=self): value, source = self.consume_value(ctx, opts) ctx.set_parameter_source(self.name, source) # type: ignore try: value = self.process_value(ctx, value) except Exception: if not ctx.resilient_parsing: raise value = None if self.expose_value: ctx.params[self.name] = value # type: ignore return value, args def get_help_record(self, ctx: Context) -> t.Optional[t.Tuple[str, str]]: pass def get_usage_pieces(self, ctx: Context) -> t.List[str]: return [] def get_error_hint(self, ctx: Context) -> str: """Get a stringified version of the param for use in error messages to indicate which param caused the error. """ hint_list = self.opts or [self.human_readable_name] return " / ".join(f"'{x}'" for x in hint_list) def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: """Return a list of completions for the incomplete value. If a ``shell_complete`` function was given during init, it is used. Otherwise, the :attr:`type` :meth:`~click.types.ParamType.shell_complete` function is used. :param ctx: Invocation context for this command. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ if self._custom_shell_complete is not None: results = self._custom_shell_complete(ctx, self, incomplete) if results and isinstance(results[0], str): from click.shell_completion import CompletionItem results = [CompletionItem(c) for c in results] return t.cast(t.List["CompletionItem"], results) return self.type.shell_complete(ctx, self, incomplete) class Option(Parameter): """Options are usually optional values on the command line and have some extra features that arguments don't have. All other parameters are passed onwards to the parameter constructor. :param show_default: Show the default value for this option in its help text. Values are not shown by default, unless :attr:`Context.show_default` is ``True``. If this value is a string, it shows that string in parentheses instead of the actual value. This is particularly useful for dynamic options. For single option boolean flags, the default remains hidden if its value is ``False``. :param show_envvar: Controls if an environment variable should be shown on the help page. Normally, environment variables are not shown. :param prompt: If set to ``True`` or a non empty string then the user will be prompted for input. If set to ``True`` the prompt will be the option name capitalized. :param confirmation_prompt: Prompt a second time to confirm the value if it was prompted for. Can be set to a string instead of ``True`` to customize the message. :param prompt_required: If set to ``False``, the user will be prompted for input only when the option was specified as a flag without a value. :param hide_input: If this is ``True`` then the input on the prompt will be hidden from the user. This is useful for password input. :param is_flag: forces this option to act as a flag. The default is auto detection. :param flag_value: which value should be used for this flag if it's enabled. This is set to a boolean automatically if the option string contains a slash to mark two options. :param multiple: if this is set to `True` then the argument is accepted multiple times and recorded. This is similar to ``nargs`` in how it works but supports arbitrary number of arguments. :param count: this flag makes an option increment an integer. :param allow_from_autoenv: if this is enabled then the value of this parameter will be pulled from an environment variable in case a prefix is defined on the context. :param help: the help string. :param hidden: hide this option from help outputs. :param attrs: Other command arguments described in :class:`Parameter`. .. versionchanged:: 8.1.0 Help text indentation is cleaned here instead of only in the ``@option`` decorator. .. versionchanged:: 8.1.0 The ``show_default`` parameter overrides ``Context.show_default``. .. versionchanged:: 8.1.0 The default of a single option boolean flag is not shown if the default value is ``False``. .. versionchanged:: 8.0.1 ``type`` is detected from ``flag_value`` if given. """ param_type_name = "option" def __init__( self, param_decls: t.Optional[t.Sequence[str]] = None, show_default: t.Union[bool, str, None] = None, prompt: t.Union[bool, str] = False, confirmation_prompt: t.Union[bool, str] = False, prompt_required: bool = True, hide_input: bool = False, is_flag: t.Optional[bool] = None, flag_value: t.Optional[t.Any] = None, multiple: bool = False, count: bool = False, allow_from_autoenv: bool = True, type: t.Optional[t.Union[types.ParamType, t.Any]] = None, help: t.Optional[str] = None, hidden: bool = False, show_choices: bool = True, show_envvar: bool = False, **attrs: t.Any, ) -> None: if help: help = inspect.cleandoc(help) default_is_missing = "default" not in attrs super().__init__(param_decls, type=type, multiple=multiple, **attrs) if prompt is True: if self.name is None: raise TypeError("'name' is required with 'prompt=True'.") prompt_text: t.Optional[str] = self.name.replace("_", " ").capitalize() elif prompt is False: prompt_text = None else: prompt_text = prompt self.prompt = prompt_text self.confirmation_prompt = confirmation_prompt self.prompt_required = prompt_required self.hide_input = hide_input self.hidden = hidden # If prompt is enabled but not required, then the option can be # used as a flag to indicate using prompt or flag_value. self._flag_needs_value = self.prompt is not None and not self.prompt_required if is_flag is None: if flag_value is not None: # Implicitly a flag because flag_value was set. is_flag = True elif self._flag_needs_value: # Not a flag, but when used as a flag it shows a prompt. is_flag = False else: # Implicitly a flag because flag options were given. is_flag = bool(self.secondary_opts) elif is_flag is False and not self._flag_needs_value: # Not a flag, and prompt is not enabled, can be used as a # flag if flag_value is set. self._flag_needs_value = flag_value is not None self.default: t.Union[t.Any, t.Callable[[], t.Any]] if is_flag and default_is_missing and not self.required: if multiple: self.default = () else: self.default = False if flag_value is None: flag_value = not self.default self.type: types.ParamType if is_flag and type is None: # Re-guess the type from the flag value instead of the # default. self.type = types.convert_type(None, flag_value) self.is_flag: bool = is_flag self.is_bool_flag: bool = is_flag and isinstance(self.type, types.BoolParamType) self.flag_value: t.Any = flag_value # Counting self.count = count if count: if type is None: self.type = types.IntRange(min=0) if default_is_missing: self.default = 0 self.allow_from_autoenv = allow_from_autoenv self.help = help self.show_default = show_default self.show_choices = show_choices self.show_envvar = show_envvar if __debug__: if self.nargs == -1: raise TypeError("nargs=-1 is not supported for options.") if self.prompt and self.is_flag and not self.is_bool_flag: raise TypeError("'prompt' is not valid for non-boolean flag.") if not self.is_bool_flag and self.secondary_opts: raise TypeError("Secondary flag is not valid for non-boolean flag.") if self.is_bool_flag and self.hide_input and self.prompt is not None: raise TypeError( "'prompt' with 'hide_input' is not valid for boolean flag." ) if self.count: if self.multiple: raise TypeError("'count' is not valid with 'multiple'.") if self.is_flag: raise TypeError("'count' is not valid with 'is_flag'.") def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict.update( help=self.help, prompt=self.prompt, is_flag=self.is_flag, flag_value=self.flag_value, count=self.count, hidden=self.hidden, ) return info_dict def _parse_decls( self, decls: t.Sequence[str], expose_value: bool ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: opts = [] secondary_opts = [] name = None possible_names = [] for decl in decls: if decl.isidentifier(): if name is not None: raise TypeError(f"Name '{name}' defined twice") name = decl else: split_char = ";" if decl[:1] == "/" else "/" if split_char in decl: first, second = decl.split(split_char, 1) first = first.rstrip() if first: possible_names.append(split_opt(first)) opts.append(first) second = second.lstrip() if second: secondary_opts.append(second.lstrip()) if first == second: raise ValueError( f"Boolean option {decl!r} cannot use the" " same flag for true/false." ) else: possible_names.append(split_opt(decl)) opts.append(decl) if name is None and possible_names: possible_names.sort(key=lambda x: -len(x[0])) # group long options first name = possible_names[0][1].replace("-", "_").lower() if not name.isidentifier(): name = None if name is None: if not expose_value: return None, opts, secondary_opts raise TypeError( f"Could not determine name for option with declarations {decls!r}" ) if not opts and not secondary_opts: raise TypeError( f"No options defined but a name was passed ({name})." " Did you mean to declare an argument instead? Did" f" you mean to pass '--{name}'?" ) return name, opts, secondary_opts def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: if self.multiple: action = "append" elif self.count: action = "count" else: action = "store" if self.is_flag: action = f"{action}_const" if self.is_bool_flag and self.secondary_opts: parser.add_option( obj=self, opts=self.opts, dest=self.name, action=action, const=True ) parser.add_option( obj=self, opts=self.secondary_opts, dest=self.name, action=action, const=False, ) else: parser.add_option( obj=self, opts=self.opts, dest=self.name, action=action, const=self.flag_value, ) else: parser.add_option( obj=self, opts=self.opts, dest=self.name, action=action, nargs=self.nargs, ) def get_help_record(self, ctx: Context) -> t.Optional[t.Tuple[str, str]]: if self.hidden: return None any_prefix_is_slash = False def _write_opts(opts: t.Sequence[str]) -> str: nonlocal any_prefix_is_slash rv, any_slashes = join_options(opts) if any_slashes: any_prefix_is_slash = True if not self.is_flag and not self.count: rv += f" {self.make_metavar()}" return rv rv = [_write_opts(self.opts)] if self.secondary_opts: rv.append(_write_opts(self.secondary_opts)) help = self.help or "" extra = [] if self.show_envvar: envvar = self.envvar if envvar is None: if ( self.allow_from_autoenv and ctx.auto_envvar_prefix is not None and self.name is not None ): envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" if envvar is not None: var_str = ( envvar if isinstance(envvar, str) else ", ".join(str(d) for d in envvar) ) extra.append(_("env var: {var}").format(var=var_str)) # Temporarily enable resilient parsing to avoid type casting # failing for the default. Might be possible to extend this to # help formatting in general. resilient = ctx.resilient_parsing ctx.resilient_parsing = True try: default_value = self.get_default(ctx, call=False) finally: ctx.resilient_parsing = resilient show_default = False show_default_is_str = False if self.show_default is not None: if isinstance(self.show_default, str): show_default_is_str = show_default = True else: show_default = self.show_default elif ctx.show_default is not None: show_default = ctx.show_default if show_default_is_str or (show_default and (default_value is not None)): if show_default_is_str: default_string = f"({self.show_default})" elif isinstance(default_value, (list, tuple)): default_string = ", ".join(str(d) for d in default_value) elif inspect.isfunction(default_value): default_string = _("(dynamic)") elif self.is_bool_flag and self.secondary_opts: # For boolean flags that have distinct True/False opts, # use the opt without prefix instead of the value. default_string = split_opt( (self.opts if default_value else self.secondary_opts)[0] )[1] elif self.is_bool_flag and not self.secondary_opts and not default_value: default_string = "" elif default_value == "": default_string = '""' else: default_string = str(default_value) if default_string: extra.append(_("default: {default}").format(default=default_string)) if ( isinstance(self.type, types._NumberRangeBase) # skip count with default range type and not (self.count and self.type.min == 0 and self.type.max is None) ): range_str = self.type._describe_range() if range_str: extra.append(range_str) if self.required: extra.append(_("required")) if extra: extra_str = "; ".join(extra) help = f"{help} [{extra_str}]" if help else f"[{extra_str}]" return ("; " if any_prefix_is_slash else " / ").join(rv), help @t.overload def get_default( self, ctx: Context, call: "te.Literal[True]" = True ) -> t.Optional[t.Any]: ... @t.overload def get_default( self, ctx: Context, call: bool = ... ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: ... def get_default( self, ctx: Context, call: bool = True ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: # If we're a non boolean flag our default is more complex because # we need to look at all flags in the same group to figure out # if we're the default one in which case we return the flag # value as default. if self.is_flag and not self.is_bool_flag: for param in ctx.command.params: if param.name == self.name and param.default: return t.cast(Option, param).flag_value return None return super().get_default(ctx, call=call) def prompt_for_value(self, ctx: Context) -> t.Any: """This is an alternative flow that can be activated in the full value processing if a value does not exist. It will prompt the user until a valid value exists and then returns the processed value as result. """ assert self.prompt is not None # Calculate the default before prompting anything to be stable. default = self.get_default(ctx) # If this is a prompt for a flag we need to handle this # differently. if self.is_bool_flag: return confirm(self.prompt, default) return prompt( self.prompt, default=default, type=self.type, hide_input=self.hide_input, show_choices=self.show_choices, confirmation_prompt=self.confirmation_prompt, value_proc=lambda x: self.process_value(ctx, x), ) def resolve_envvar_value(self, ctx: Context) -> t.Optional[str]: rv = super().resolve_envvar_value(ctx) if rv is not None: return rv if ( self.allow_from_autoenv and ctx.auto_envvar_prefix is not None and self.name is not None ): envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" rv = os.environ.get(envvar) if rv: return rv return None def value_from_envvar(self, ctx: Context) -> t.Optional[t.Any]: rv: t.Optional[t.Any] = self.resolve_envvar_value(ctx) if rv is None: return None value_depth = (self.nargs != 1) + bool(self.multiple) if value_depth > 0: rv = self.type.split_envvar_value(rv) if self.multiple and self.nargs != 1: rv = batch(rv, self.nargs) return rv def consume_value( self, ctx: Context, opts: t.Mapping[str, "Parameter"] ) -> t.Tuple[t.Any, ParameterSource]: value, source = super().consume_value(ctx, opts) # The parser will emit a sentinel value if the option can be # given as a flag without a value. This is different from None # to distinguish from the flag not being given at all. if value is _flag_needs_value: if self.prompt is not None and not ctx.resilient_parsing: value = self.prompt_for_value(ctx) source = ParameterSource.PROMPT else: value = self.flag_value source = ParameterSource.COMMANDLINE elif ( self.multiple and value is not None and any(v is _flag_needs_value for v in value) ): value = [self.flag_value if v is _flag_needs_value else v for v in value] source = ParameterSource.COMMANDLINE # The value wasn't set, or used the param's default, prompt if # prompting is enabled. elif ( source in {None, ParameterSource.DEFAULT} and self.prompt is not None and (self.required or self.prompt_required) and not ctx.resilient_parsing ): value = self.prompt_for_value(ctx) source = ParameterSource.PROMPT return value, source class Argument(Parameter): """Arguments are positional parameters to a command. They generally provide fewer features than options but can have infinite ``nargs`` and are required by default. All parameters are passed onwards to the constructor of :class:`Parameter`. """ param_type_name = "argument" def __init__( self, param_decls: t.Sequence[str], required: t.Optional[bool] = None, **attrs: t.Any, ) -> None: if required is None: if attrs.get("default") is not None: required = False else: required = attrs.get("nargs", 1) > 0 if "multiple" in attrs: raise TypeError("__init__() got an unexpected keyword argument 'multiple'.") super().__init__(param_decls, required=required, **attrs) if __debug__: if self.default is not None and self.nargs == -1: raise TypeError("'default' is not supported for nargs=-1.") @property def human_readable_name(self) -> str: if self.metavar is not None: return self.metavar return self.name.upper() # type: ignore def make_metavar(self) -> str: if self.metavar is not None: return self.metavar var = self.type.get_metavar(self) if not var: var = self.name.upper() # type: ignore if not self.required: var = f"[{var}]" if self.nargs != 1: var += "..." return var def _parse_decls( self, decls: t.Sequence[str], expose_value: bool ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: if not decls: if not expose_value: return None, [], [] raise TypeError("Argument is marked as exposed, but does not have a name.") if len(decls) == 1: name = arg = decls[0] name = name.replace("-", "_").lower() else: raise TypeError( "Arguments take exactly one parameter declaration, got" f" {len(decls)}." ) return name, [arg], [] def get_usage_pieces(self, ctx: Context) -> t.List[str]: return [self.make_metavar()] def get_error_hint(self, ctx: Context) -> str: return f"'{self.make_metavar()}'" def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: parser.add_argument(dest=self.name, nargs=self.nargs, obj=self) ================================================ FILE: libs/click/decorators.py ================================================ import inspect import types import typing as t from functools import update_wrapper from gettext import gettext as _ from .core import Argument from .core import Command from .core import Context from .core import Group from .core import Option from .core import Parameter from .globals import get_current_context from .utils import echo if t.TYPE_CHECKING: import typing_extensions as te P = te.ParamSpec("P") R = t.TypeVar("R") T = t.TypeVar("T") _AnyCallable = t.Callable[..., t.Any] FC = t.TypeVar("FC", bound=t.Union[_AnyCallable, Command]) def pass_context(f: "t.Callable[te.Concatenate[Context, P], R]") -> "t.Callable[P, R]": """Marks a callback as wanting to receive the current context object as first argument. """ def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": return f(get_current_context(), *args, **kwargs) return update_wrapper(new_func, f) def pass_obj(f: "t.Callable[te.Concatenate[t.Any, P], R]") -> "t.Callable[P, R]": """Similar to :func:`pass_context`, but only pass the object on the context onwards (:attr:`Context.obj`). This is useful if that object represents the state of a nested system. """ def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": return f(get_current_context().obj, *args, **kwargs) return update_wrapper(new_func, f) def make_pass_decorator( object_type: t.Type[T], ensure: bool = False ) -> t.Callable[["t.Callable[te.Concatenate[T, P], R]"], "t.Callable[P, R]"]: """Given an object type this creates a decorator that will work similar to :func:`pass_obj` but instead of passing the object of the current context, it will find the innermost context of type :func:`object_type`. This generates a decorator that works roughly like this:: from functools import update_wrapper def decorator(f): @pass_context def new_func(ctx, *args, **kwargs): obj = ctx.find_object(object_type) return ctx.invoke(f, obj, *args, **kwargs) return update_wrapper(new_func, f) return decorator :param object_type: the type of the object to pass. :param ensure: if set to `True`, a new object will be created and remembered on the context if it's not there yet. """ def decorator(f: "t.Callable[te.Concatenate[T, P], R]") -> "t.Callable[P, R]": def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": ctx = get_current_context() obj: t.Optional[T] if ensure: obj = ctx.ensure_object(object_type) else: obj = ctx.find_object(object_type) if obj is None: raise RuntimeError( "Managed to invoke callback without a context" f" object of type {object_type.__name__!r}" " existing." ) return ctx.invoke(f, obj, *args, **kwargs) return update_wrapper(new_func, f) return decorator def pass_meta_key( key: str, *, doc_description: t.Optional[str] = None ) -> "t.Callable[[t.Callable[te.Concatenate[t.Any, P], R]], t.Callable[P, R]]": """Create a decorator that passes a key from :attr:`click.Context.meta` as the first argument to the decorated function. :param key: Key in ``Context.meta`` to pass. :param doc_description: Description of the object being passed, inserted into the decorator's docstring. Defaults to "the 'key' key from Context.meta". .. versionadded:: 8.0 """ def decorator(f: "t.Callable[te.Concatenate[t.Any, P], R]") -> "t.Callable[P, R]": def new_func(*args: "P.args", **kwargs: "P.kwargs") -> R: ctx = get_current_context() obj = ctx.meta[key] return ctx.invoke(f, obj, *args, **kwargs) return update_wrapper(new_func, f) if doc_description is None: doc_description = f"the {key!r} key from :attr:`click.Context.meta`" decorator.__doc__ = ( f"Decorator that passes {doc_description} as the first argument" " to the decorated function." ) return decorator CmdType = t.TypeVar("CmdType", bound=Command) # variant: no call, directly as decorator for a function. @t.overload def command(name: _AnyCallable) -> Command: ... # variant: with positional name and with positional or keyword cls argument: # @command(namearg, CommandCls, ...) or @command(namearg, cls=CommandCls, ...) @t.overload def command( name: t.Optional[str], cls: t.Type[CmdType], **attrs: t.Any, ) -> t.Callable[[_AnyCallable], CmdType]: ... # variant: name omitted, cls _must_ be a keyword argument, @command(cls=CommandCls, ...) @t.overload def command( name: None = None, *, cls: t.Type[CmdType], **attrs: t.Any, ) -> t.Callable[[_AnyCallable], CmdType]: ... # variant: with optional string name, no cls argument provided. @t.overload def command( name: t.Optional[str] = ..., cls: None = None, **attrs: t.Any ) -> t.Callable[[_AnyCallable], Command]: ... def command( name: t.Union[t.Optional[str], _AnyCallable] = None, cls: t.Optional[t.Type[CmdType]] = None, **attrs: t.Any, ) -> t.Union[Command, t.Callable[[_AnyCallable], t.Union[Command, CmdType]]]: r"""Creates a new :class:`Command` and uses the decorated function as callback. This will also automatically attach all decorated :func:`option`\s and :func:`argument`\s as parameters to the command. The name of the command defaults to the name of the function with underscores replaced by dashes. If you want to change that, you can pass the intended name as the first argument. All keyword arguments are forwarded to the underlying command class. For the ``params`` argument, any decorated params are appended to the end of the list. Once decorated the function turns into a :class:`Command` instance that can be invoked as a command line utility or be attached to a command :class:`Group`. :param name: the name of the command. This defaults to the function name with underscores replaced by dashes. :param cls: the command class to instantiate. This defaults to :class:`Command`. .. versionchanged:: 8.1 This decorator can be applied without parentheses. .. versionchanged:: 8.1 The ``params`` argument can be used. Decorated params are appended to the end of the list. """ func: t.Optional[t.Callable[[_AnyCallable], t.Any]] = None if callable(name): func = name name = None assert cls is None, "Use 'command(cls=cls)(callable)' to specify a class." assert not attrs, "Use 'command(**kwargs)(callable)' to provide arguments." if cls is None: cls = t.cast(t.Type[CmdType], Command) def decorator(f: _AnyCallable) -> CmdType: if isinstance(f, Command): raise TypeError("Attempted to convert a callback into a command twice.") attr_params = attrs.pop("params", None) params = attr_params if attr_params is not None else [] try: decorator_params = f.__click_params__ # type: ignore except AttributeError: pass else: del f.__click_params__ # type: ignore params.extend(reversed(decorator_params)) if attrs.get("help") is None: attrs["help"] = f.__doc__ if t.TYPE_CHECKING: assert cls is not None assert not callable(name) cmd = cls( name=name or f.__name__.lower().replace("_", "-"), callback=f, params=params, **attrs, ) cmd.__doc__ = f.__doc__ return cmd if func is not None: return decorator(func) return decorator GrpType = t.TypeVar("GrpType", bound=Group) # variant: no call, directly as decorator for a function. @t.overload def group(name: _AnyCallable) -> Group: ... # variant: with positional name and with positional or keyword cls argument: # @group(namearg, GroupCls, ...) or @group(namearg, cls=GroupCls, ...) @t.overload def group( name: t.Optional[str], cls: t.Type[GrpType], **attrs: t.Any, ) -> t.Callable[[_AnyCallable], GrpType]: ... # variant: name omitted, cls _must_ be a keyword argument, @group(cmd=GroupCls, ...) @t.overload def group( name: None = None, *, cls: t.Type[GrpType], **attrs: t.Any, ) -> t.Callable[[_AnyCallable], GrpType]: ... # variant: with optional string name, no cls argument provided. @t.overload def group( name: t.Optional[str] = ..., cls: None = None, **attrs: t.Any ) -> t.Callable[[_AnyCallable], Group]: ... def group( name: t.Union[str, _AnyCallable, None] = None, cls: t.Optional[t.Type[GrpType]] = None, **attrs: t.Any, ) -> t.Union[Group, t.Callable[[_AnyCallable], t.Union[Group, GrpType]]]: """Creates a new :class:`Group` with a function as callback. This works otherwise the same as :func:`command` just that the `cls` parameter is set to :class:`Group`. .. versionchanged:: 8.1 This decorator can be applied without parentheses. """ if cls is None: cls = t.cast(t.Type[GrpType], Group) if callable(name): return command(cls=cls, **attrs)(name) return command(name, cls, **attrs) def _param_memo(f: t.Callable[..., t.Any], param: Parameter) -> None: if isinstance(f, Command): f.params.append(param) else: if not hasattr(f, "__click_params__"): f.__click_params__ = [] # type: ignore f.__click_params__.append(param) # type: ignore def argument( *param_decls: str, cls: t.Optional[t.Type[Argument]] = None, **attrs: t.Any ) -> t.Callable[[FC], FC]: """Attaches an argument to the command. All positional arguments are passed as parameter declarations to :class:`Argument`; all keyword arguments are forwarded unchanged (except ``cls``). This is equivalent to creating an :class:`Argument` instance manually and attaching it to the :attr:`Command.params` list. For the default argument class, refer to :class:`Argument` and :class:`Parameter` for descriptions of parameters. :param cls: the argument class to instantiate. This defaults to :class:`Argument`. :param param_decls: Passed as positional arguments to the constructor of ``cls``. :param attrs: Passed as keyword arguments to the constructor of ``cls``. """ if cls is None: cls = Argument def decorator(f: FC) -> FC: _param_memo(f, cls(param_decls, **attrs)) return f return decorator def option( *param_decls: str, cls: t.Optional[t.Type[Option]] = None, **attrs: t.Any ) -> t.Callable[[FC], FC]: """Attaches an option to the command. All positional arguments are passed as parameter declarations to :class:`Option`; all keyword arguments are forwarded unchanged (except ``cls``). This is equivalent to creating an :class:`Option` instance manually and attaching it to the :attr:`Command.params` list. For the default option class, refer to :class:`Option` and :class:`Parameter` for descriptions of parameters. :param cls: the option class to instantiate. This defaults to :class:`Option`. :param param_decls: Passed as positional arguments to the constructor of ``cls``. :param attrs: Passed as keyword arguments to the constructor of ``cls``. """ if cls is None: cls = Option def decorator(f: FC) -> FC: _param_memo(f, cls(param_decls, **attrs)) return f return decorator def confirmation_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: """Add a ``--yes`` option which shows a prompt before continuing if not passed. If the prompt is declined, the program will exit. :param param_decls: One or more option names. Defaults to the single value ``"--yes"``. :param kwargs: Extra arguments are passed to :func:`option`. """ def callback(ctx: Context, param: Parameter, value: bool) -> None: if not value: ctx.abort() if not param_decls: param_decls = ("--yes",) kwargs.setdefault("is_flag", True) kwargs.setdefault("callback", callback) kwargs.setdefault("expose_value", False) kwargs.setdefault("prompt", "Do you want to continue?") kwargs.setdefault("help", "Confirm the action without prompting.") return option(*param_decls, **kwargs) def password_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: """Add a ``--password`` option which prompts for a password, hiding input and asking to enter the value again for confirmation. :param param_decls: One or more option names. Defaults to the single value ``"--password"``. :param kwargs: Extra arguments are passed to :func:`option`. """ if not param_decls: param_decls = ("--password",) kwargs.setdefault("prompt", True) kwargs.setdefault("confirmation_prompt", True) kwargs.setdefault("hide_input", True) return option(*param_decls, **kwargs) def version_option( version: t.Optional[str] = None, *param_decls: str, package_name: t.Optional[str] = None, prog_name: t.Optional[str] = None, message: t.Optional[str] = None, **kwargs: t.Any, ) -> t.Callable[[FC], FC]: """Add a ``--version`` option which immediately prints the version number and exits the program. If ``version`` is not provided, Click will try to detect it using :func:`importlib.metadata.version` to get the version for the ``package_name``. On Python < 3.8, the ``importlib_metadata`` backport must be installed. If ``package_name`` is not provided, Click will try to detect it by inspecting the stack frames. This will be used to detect the version, so it must match the name of the installed package. :param version: The version number to show. If not provided, Click will try to detect it. :param param_decls: One or more option names. Defaults to the single value ``"--version"``. :param package_name: The package name to detect the version from. If not provided, Click will try to detect it. :param prog_name: The name of the CLI to show in the message. If not provided, it will be detected from the command. :param message: The message to show. The values ``%(prog)s``, ``%(package)s``, and ``%(version)s`` are available. Defaults to ``"%(prog)s, version %(version)s"``. :param kwargs: Extra arguments are passed to :func:`option`. :raise RuntimeError: ``version`` could not be detected. .. versionchanged:: 8.0 Add the ``package_name`` parameter, and the ``%(package)s`` value for messages. .. versionchanged:: 8.0 Use :mod:`importlib.metadata` instead of ``pkg_resources``. The version is detected based on the package name, not the entry point name. The Python package name must match the installed package name, or be passed with ``package_name=``. """ if message is None: message = _("%(prog)s, version %(version)s") if version is None and package_name is None: frame = inspect.currentframe() f_back = frame.f_back if frame is not None else None f_globals = f_back.f_globals if f_back is not None else None # break reference cycle # https://docs.python.org/3/library/inspect.html#the-interpreter-stack del frame if f_globals is not None: package_name = f_globals.get("__name__") if package_name == "__main__": package_name = f_globals.get("__package__") if package_name: package_name = package_name.partition(".")[0] def callback(ctx: Context, param: Parameter, value: bool) -> None: if not value or ctx.resilient_parsing: return nonlocal prog_name nonlocal version if prog_name is None: prog_name = ctx.find_root().info_name if version is None and package_name is not None: metadata: t.Optional[types.ModuleType] try: from importlib import metadata except ImportError: # Python < 3.8 import importlib_metadata as metadata # type: ignore try: version = metadata.version(package_name) # type: ignore except metadata.PackageNotFoundError: # type: ignore raise RuntimeError( f"{package_name!r} is not installed. Try passing" " 'package_name' instead." ) from None if version is None: raise RuntimeError( f"Could not determine the version for {package_name!r} automatically." ) echo( message % {"prog": prog_name, "package": package_name, "version": version}, color=ctx.color, ) ctx.exit() if not param_decls: param_decls = ("--version",) kwargs.setdefault("is_flag", True) kwargs.setdefault("expose_value", False) kwargs.setdefault("is_eager", True) kwargs.setdefault("help", _("Show the version and exit.")) kwargs["callback"] = callback return option(*param_decls, **kwargs) class HelpOption(Option): """Pre-configured ``--help`` option which immediately prints the help page and exits the program. """ def __init__( self, param_decls: t.Optional[t.Sequence[str]] = None, **kwargs: t.Any, ) -> None: if not param_decls: param_decls = ("--help",) kwargs.setdefault("is_flag", True) kwargs.setdefault("expose_value", False) kwargs.setdefault("is_eager", True) kwargs.setdefault("help", _("Show this message and exit.")) kwargs.setdefault("callback", self.show_help) super().__init__(param_decls, **kwargs) @staticmethod def show_help(ctx: Context, param: Parameter, value: bool) -> None: """Callback that print the help page on ```` and exits.""" if value and not ctx.resilient_parsing: echo(ctx.get_help(), color=ctx.color) ctx.exit() def help_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: """Decorator for the pre-configured ``--help`` option defined above. :param param_decls: One or more option names. Defaults to the single value ``"--help"``. :param kwargs: Extra arguments are passed to :func:`option`. """ kwargs.setdefault("cls", HelpOption) return option(*param_decls, **kwargs) ================================================ FILE: libs/click/exceptions.py ================================================ import typing as t from gettext import gettext as _ from gettext import ngettext from ._compat import get_text_stderr from .globals import resolve_color_default from .utils import echo from .utils import format_filename if t.TYPE_CHECKING: from .core import Command from .core import Context from .core import Parameter def _join_param_hints( param_hint: t.Optional[t.Union[t.Sequence[str], str]], ) -> t.Optional[str]: if param_hint is not None and not isinstance(param_hint, str): return " / ".join(repr(x) for x in param_hint) return param_hint class ClickException(Exception): """An exception that Click can handle and show to the user.""" #: The exit code for this exception. exit_code = 1 def __init__(self, message: str) -> None: super().__init__(message) # The context will be removed by the time we print the message, so cache # the color settings here to be used later on (in `show`) self.show_color: t.Optional[bool] = resolve_color_default() self.message = message def format_message(self) -> str: return self.message def __str__(self) -> str: return self.message def show(self, file: t.Optional[t.IO[t.Any]] = None) -> None: if file is None: file = get_text_stderr() echo( _("Error: {message}").format(message=self.format_message()), file=file, color=self.show_color, ) class UsageError(ClickException): """An internal exception that signals a usage error. This typically aborts any further handling. :param message: the error message to display. :param ctx: optionally the context that caused this error. Click will fill in the context automatically in some situations. """ exit_code = 2 def __init__(self, message: str, ctx: t.Optional["Context"] = None) -> None: super().__init__(message) self.ctx = ctx self.cmd: t.Optional[Command] = self.ctx.command if self.ctx else None def show(self, file: t.Optional[t.IO[t.Any]] = None) -> None: if file is None: file = get_text_stderr() color = None hint = "" if ( self.ctx is not None and self.ctx.command.get_help_option(self.ctx) is not None ): hint = _("Try '{command} {option}' for help.").format( command=self.ctx.command_path, option=self.ctx.help_option_names[0] ) hint = f"{hint}\n" if self.ctx is not None: color = self.ctx.color echo(f"{self.ctx.get_usage()}\n{hint}", file=file, color=color) echo( _("Error: {message}").format(message=self.format_message()), file=file, color=color, ) class BadParameter(UsageError): """An exception that formats out a standardized error message for a bad parameter. This is useful when thrown from a callback or type as Click will attach contextual information to it (for instance, which parameter it is). .. versionadded:: 2.0 :param param: the parameter object that caused this error. This can be left out, and Click will attach this info itself if possible. :param param_hint: a string that shows up as parameter name. This can be used as alternative to `param` in cases where custom validation should happen. If it is a string it's used as such, if it's a list then each item is quoted and separated. """ def __init__( self, message: str, ctx: t.Optional["Context"] = None, param: t.Optional["Parameter"] = None, param_hint: t.Optional[str] = None, ) -> None: super().__init__(message, ctx) self.param = param self.param_hint = param_hint def format_message(self) -> str: if self.param_hint is not None: param_hint = self.param_hint elif self.param is not None: param_hint = self.param.get_error_hint(self.ctx) # type: ignore else: return _("Invalid value: {message}").format(message=self.message) return _("Invalid value for {param_hint}: {message}").format( param_hint=_join_param_hints(param_hint), message=self.message ) class MissingParameter(BadParameter): """Raised if click required an option or argument but it was not provided when invoking the script. .. versionadded:: 4.0 :param param_type: a string that indicates the type of the parameter. The default is to inherit the parameter type from the given `param`. Valid values are ``'parameter'``, ``'option'`` or ``'argument'``. """ def __init__( self, message: t.Optional[str] = None, ctx: t.Optional["Context"] = None, param: t.Optional["Parameter"] = None, param_hint: t.Optional[str] = None, param_type: t.Optional[str] = None, ) -> None: super().__init__(message or "", ctx, param, param_hint) self.param_type = param_type def format_message(self) -> str: if self.param_hint is not None: param_hint: t.Optional[str] = self.param_hint elif self.param is not None: param_hint = self.param.get_error_hint(self.ctx) # type: ignore else: param_hint = None param_hint = _join_param_hints(param_hint) param_hint = f" {param_hint}" if param_hint else "" param_type = self.param_type if param_type is None and self.param is not None: param_type = self.param.param_type_name msg = self.message if self.param is not None: msg_extra = self.param.type.get_missing_message(self.param) if msg_extra: if msg: msg += f". {msg_extra}" else: msg = msg_extra msg = f" {msg}" if msg else "" # Translate param_type for known types. if param_type == "argument": missing = _("Missing argument") elif param_type == "option": missing = _("Missing option") elif param_type == "parameter": missing = _("Missing parameter") else: missing = _("Missing {param_type}").format(param_type=param_type) return f"{missing}{param_hint}.{msg}" def __str__(self) -> str: if not self.message: param_name = self.param.name if self.param else None return _("Missing parameter: {param_name}").format(param_name=param_name) else: return self.message class NoSuchOption(UsageError): """Raised if click attempted to handle an option that does not exist. .. versionadded:: 4.0 """ def __init__( self, option_name: str, message: t.Optional[str] = None, possibilities: t.Optional[t.Sequence[str]] = None, ctx: t.Optional["Context"] = None, ) -> None: if message is None: message = _("No such option: {name}").format(name=option_name) super().__init__(message, ctx) self.option_name = option_name self.possibilities = possibilities def format_message(self) -> str: if not self.possibilities: return self.message possibility_str = ", ".join(sorted(self.possibilities)) suggest = ngettext( "Did you mean {possibility}?", "(Possible options: {possibilities})", len(self.possibilities), ).format(possibility=possibility_str, possibilities=possibility_str) return f"{self.message} {suggest}" class BadOptionUsage(UsageError): """Raised if an option is generally supplied but the use of the option was incorrect. This is for instance raised if the number of arguments for an option is not correct. .. versionadded:: 4.0 :param option_name: the name of the option being used incorrectly. """ def __init__( self, option_name: str, message: str, ctx: t.Optional["Context"] = None ) -> None: super().__init__(message, ctx) self.option_name = option_name class BadArgumentUsage(UsageError): """Raised if an argument is generally supplied but the use of the argument was incorrect. This is for instance raised if the number of values for an argument is not correct. .. versionadded:: 6.0 """ class FileError(ClickException): """Raised if a file cannot be opened.""" def __init__(self, filename: str, hint: t.Optional[str] = None) -> None: if hint is None: hint = _("unknown error") super().__init__(hint) self.ui_filename: str = format_filename(filename) self.filename = filename def format_message(self) -> str: return _("Could not open file {filename!r}: {message}").format( filename=self.ui_filename, message=self.message ) class Abort(RuntimeError): """An internal signalling exception that signals Click to abort.""" class Exit(RuntimeError): """An exception that indicates that the application should exit with some status code. :param code: the status code to exit with. """ __slots__ = ("exit_code",) def __init__(self, code: int = 0) -> None: self.exit_code: int = code ================================================ FILE: libs/click/formatting.py ================================================ import typing as t from contextlib import contextmanager from gettext import gettext as _ from ._compat import term_len from .parser import split_opt # Can force a width. This is used by the test system FORCED_WIDTH: t.Optional[int] = None def measure_table(rows: t.Iterable[t.Tuple[str, str]]) -> t.Tuple[int, ...]: widths: t.Dict[int, int] = {} for row in rows: for idx, col in enumerate(row): widths[idx] = max(widths.get(idx, 0), term_len(col)) return tuple(y for x, y in sorted(widths.items())) def iter_rows( rows: t.Iterable[t.Tuple[str, str]], col_count: int ) -> t.Iterator[t.Tuple[str, ...]]: for row in rows: yield row + ("",) * (col_count - len(row)) def wrap_text( text: str, width: int = 78, initial_indent: str = "", subsequent_indent: str = "", preserve_paragraphs: bool = False, ) -> str: """A helper function that intelligently wraps text. By default, it assumes that it operates on a single paragraph of text but if the `preserve_paragraphs` parameter is provided it will intelligently handle paragraphs (defined by two empty lines). If paragraphs are handled, a paragraph can be prefixed with an empty line containing the ``\\b`` character (``\\x08``) to indicate that no rewrapping should happen in that block. :param text: the text that should be rewrapped. :param width: the maximum width for the text. :param initial_indent: the initial indent that should be placed on the first line as a string. :param subsequent_indent: the indent string that should be placed on each consecutive line. :param preserve_paragraphs: if this flag is set then the wrapping will intelligently handle paragraphs. """ from ._textwrap import TextWrapper text = text.expandtabs() wrapper = TextWrapper( width, initial_indent=initial_indent, subsequent_indent=subsequent_indent, replace_whitespace=False, ) if not preserve_paragraphs: return wrapper.fill(text) p: t.List[t.Tuple[int, bool, str]] = [] buf: t.List[str] = [] indent = None def _flush_par() -> None: if not buf: return if buf[0].strip() == "\b": p.append((indent or 0, True, "\n".join(buf[1:]))) else: p.append((indent or 0, False, " ".join(buf))) del buf[:] for line in text.splitlines(): if not line: _flush_par() indent = None else: if indent is None: orig_len = term_len(line) line = line.lstrip() indent = orig_len - term_len(line) buf.append(line) _flush_par() rv = [] for indent, raw, text in p: with wrapper.extra_indent(" " * indent): if raw: rv.append(wrapper.indent_only(text)) else: rv.append(wrapper.fill(text)) return "\n\n".join(rv) class HelpFormatter: """This class helps with formatting text-based help pages. It's usually just needed for very special internal cases, but it's also exposed so that developers can write their own fancy outputs. At present, it always writes into memory. :param indent_increment: the additional increment for each level. :param width: the width for the text. This defaults to the terminal width clamped to a maximum of 78. """ def __init__( self, indent_increment: int = 2, width: t.Optional[int] = None, max_width: t.Optional[int] = None, ) -> None: import shutil self.indent_increment = indent_increment if max_width is None: max_width = 80 if width is None: width = FORCED_WIDTH if width is None: width = max(min(shutil.get_terminal_size().columns, max_width) - 2, 50) self.width = width self.current_indent = 0 self.buffer: t.List[str] = [] def write(self, string: str) -> None: """Writes a unicode string into the internal buffer.""" self.buffer.append(string) def indent(self) -> None: """Increases the indentation.""" self.current_indent += self.indent_increment def dedent(self) -> None: """Decreases the indentation.""" self.current_indent -= self.indent_increment def write_usage( self, prog: str, args: str = "", prefix: t.Optional[str] = None ) -> None: """Writes a usage line into the buffer. :param prog: the program name. :param args: whitespace separated list of arguments. :param prefix: The prefix for the first line. Defaults to ``"Usage: "``. """ if prefix is None: prefix = f"{_('Usage:')} " usage_prefix = f"{prefix:>{self.current_indent}}{prog} " text_width = self.width - self.current_indent if text_width >= (term_len(usage_prefix) + 20): # The arguments will fit to the right of the prefix. indent = " " * term_len(usage_prefix) self.write( wrap_text( args, text_width, initial_indent=usage_prefix, subsequent_indent=indent, ) ) else: # The prefix is too long, put the arguments on the next line. self.write(usage_prefix) self.write("\n") indent = " " * (max(self.current_indent, term_len(prefix)) + 4) self.write( wrap_text( args, text_width, initial_indent=indent, subsequent_indent=indent ) ) self.write("\n") def write_heading(self, heading: str) -> None: """Writes a heading into the buffer.""" self.write(f"{'':>{self.current_indent}}{heading}:\n") def write_paragraph(self) -> None: """Writes a paragraph into the buffer.""" if self.buffer: self.write("\n") def write_text(self, text: str) -> None: """Writes re-indented text into the buffer. This rewraps and preserves paragraphs. """ indent = " " * self.current_indent self.write( wrap_text( text, self.width, initial_indent=indent, subsequent_indent=indent, preserve_paragraphs=True, ) ) self.write("\n") def write_dl( self, rows: t.Sequence[t.Tuple[str, str]], col_max: int = 30, col_spacing: int = 2, ) -> None: """Writes a definition list into the buffer. This is how options and commands are usually formatted. :param rows: a list of two item tuples for the terms and values. :param col_max: the maximum width of the first column. :param col_spacing: the number of spaces between the first and second column. """ rows = list(rows) widths = measure_table(rows) if len(widths) != 2: raise TypeError("Expected two columns for definition list") first_col = min(widths[0], col_max) + col_spacing for first, second in iter_rows(rows, len(widths)): self.write(f"{'':>{self.current_indent}}{first}") if not second: self.write("\n") continue if term_len(first) <= first_col - col_spacing: self.write(" " * (first_col - term_len(first))) else: self.write("\n") self.write(" " * (first_col + self.current_indent)) text_width = max(self.width - first_col - 2, 10) wrapped_text = wrap_text(second, text_width, preserve_paragraphs=True) lines = wrapped_text.splitlines() if lines: self.write(f"{lines[0]}\n") for line in lines[1:]: self.write(f"{'':>{first_col + self.current_indent}}{line}\n") else: self.write("\n") @contextmanager def section(self, name: str) -> t.Iterator[None]: """Helpful context manager that writes a paragraph, a heading, and the indents. :param name: the section name that is written as heading. """ self.write_paragraph() self.write_heading(name) self.indent() try: yield finally: self.dedent() @contextmanager def indentation(self) -> t.Iterator[None]: """A context manager that increases the indentation.""" self.indent() try: yield finally: self.dedent() def getvalue(self) -> str: """Returns the buffer contents.""" return "".join(self.buffer) def join_options(options: t.Sequence[str]) -> t.Tuple[str, bool]: """Given a list of option strings this joins them in the most appropriate way and returns them in the form ``(formatted_string, any_prefix_is_slash)`` where the second item in the tuple is a flag that indicates if any of the option prefixes was a slash. """ rv = [] any_prefix_is_slash = False for opt in options: prefix = split_opt(opt)[0] if prefix == "/": any_prefix_is_slash = True rv.append((len(prefix), opt)) rv.sort(key=lambda x: x[0]) return ", ".join(x[1] for x in rv), any_prefix_is_slash ================================================ FILE: libs/click/globals.py ================================================ import typing as t from threading import local if t.TYPE_CHECKING: import typing_extensions as te from .core import Context _local = local() @t.overload def get_current_context(silent: "te.Literal[False]" = False) -> "Context": ... @t.overload def get_current_context(silent: bool = ...) -> t.Optional["Context"]: ... def get_current_context(silent: bool = False) -> t.Optional["Context"]: """Returns the current click context. This can be used as a way to access the current context object from anywhere. This is a more implicit alternative to the :func:`pass_context` decorator. This function is primarily useful for helpers such as :func:`echo` which might be interested in changing its behavior based on the current context. To push the current context, :meth:`Context.scope` can be used. .. versionadded:: 5.0 :param silent: if set to `True` the return value is `None` if no context is available. The default behavior is to raise a :exc:`RuntimeError`. """ try: return t.cast("Context", _local.stack[-1]) except (AttributeError, IndexError) as e: if not silent: raise RuntimeError("There is no active click context.") from e return None def push_context(ctx: "Context") -> None: """Pushes a new context to the current stack.""" _local.__dict__.setdefault("stack", []).append(ctx) def pop_context() -> None: """Removes the top level from the stack.""" _local.stack.pop() def resolve_color_default(color: t.Optional[bool] = None) -> t.Optional[bool]: """Internal helper to get the default value of the color flag. If a value is passed it's returned unchanged, otherwise it's looked up from the current context. """ if color is not None: return color ctx = get_current_context(silent=True) if ctx is not None: return ctx.color return None ================================================ FILE: libs/click/parser.py ================================================ """ This module started out as largely a copy paste from the stdlib's optparse module with the features removed that we do not need from optparse because we implement them in Click on a higher level (for instance type handling, help formatting and a lot more). The plan is to remove more and more from here over time. The reason this is a different module and not optparse from the stdlib is that there are differences in 2.x and 3.x about the error messages generated and optparse in the stdlib uses gettext for no good reason and might cause us issues. Click uses parts of optparse written by Gregory P. Ward and maintained by the Python Software Foundation. This is limited to code in parser.py. Copyright 2001-2006 Gregory P. Ward. All rights reserved. Copyright 2002-2006 Python Software Foundation. All rights reserved. """ # This code uses parts of optparse written by Gregory P. Ward and # maintained by the Python Software Foundation. # Copyright 2001-2006 Gregory P. Ward # Copyright 2002-2006 Python Software Foundation import typing as t from collections import deque from gettext import gettext as _ from gettext import ngettext from .exceptions import BadArgumentUsage from .exceptions import BadOptionUsage from .exceptions import NoSuchOption from .exceptions import UsageError if t.TYPE_CHECKING: import typing_extensions as te from .core import Argument as CoreArgument from .core import Context from .core import Option as CoreOption from .core import Parameter as CoreParameter V = t.TypeVar("V") # Sentinel value that indicates an option was passed as a flag without a # value but is not a flag option. Option.consume_value uses this to # prompt or use the flag_value. _flag_needs_value = object() def _unpack_args( args: t.Sequence[str], nargs_spec: t.Sequence[int] ) -> t.Tuple[t.Sequence[t.Union[str, t.Sequence[t.Optional[str]], None]], t.List[str]]: """Given an iterable of arguments and an iterable of nargs specifications, it returns a tuple with all the unpacked arguments at the first index and all remaining arguments as the second. The nargs specification is the number of arguments that should be consumed or `-1` to indicate that this position should eat up all the remainders. Missing items are filled with `None`. """ args = deque(args) nargs_spec = deque(nargs_spec) rv: t.List[t.Union[str, t.Tuple[t.Optional[str], ...], None]] = [] spos: t.Optional[int] = None def _fetch(c: "te.Deque[V]") -> t.Optional[V]: try: if spos is None: return c.popleft() else: return c.pop() except IndexError: return None while nargs_spec: nargs = _fetch(nargs_spec) if nargs is None: continue if nargs == 1: rv.append(_fetch(args)) elif nargs > 1: x = [_fetch(args) for _ in range(nargs)] # If we're reversed, we're pulling in the arguments in reverse, # so we need to turn them around. if spos is not None: x.reverse() rv.append(tuple(x)) elif nargs < 0: if spos is not None: raise TypeError("Cannot have two nargs < 0") spos = len(rv) rv.append(None) # spos is the position of the wildcard (star). If it's not `None`, # we fill it with the remainder. if spos is not None: rv[spos] = tuple(args) args = [] rv[spos + 1 :] = reversed(rv[spos + 1 :]) return tuple(rv), list(args) def split_opt(opt: str) -> t.Tuple[str, str]: first = opt[:1] if first.isalnum(): return "", opt if opt[1:2] == first: return opt[:2], opt[2:] return first, opt[1:] def normalize_opt(opt: str, ctx: t.Optional["Context"]) -> str: if ctx is None or ctx.token_normalize_func is None: return opt prefix, opt = split_opt(opt) return f"{prefix}{ctx.token_normalize_func(opt)}" def split_arg_string(string: str) -> t.List[str]: """Split an argument string as with :func:`shlex.split`, but don't fail if the string is incomplete. Ignores a missing closing quote or incomplete escape sequence and uses the partial token as-is. .. code-block:: python split_arg_string("example 'my file") ["example", "my file"] split_arg_string("example my\\") ["example", "my"] :param string: String to split. """ import shlex lex = shlex.shlex(string, posix=True) lex.whitespace_split = True lex.commenters = "" out = [] try: for token in lex: out.append(token) except ValueError: # Raised when end-of-string is reached in an invalid state. Use # the partial token as-is. The quote or escape character is in # lex.state, not lex.token. out.append(lex.token) return out class Option: def __init__( self, obj: "CoreOption", opts: t.Sequence[str], dest: t.Optional[str], action: t.Optional[str] = None, nargs: int = 1, const: t.Optional[t.Any] = None, ): self._short_opts = [] self._long_opts = [] self.prefixes: t.Set[str] = set() for opt in opts: prefix, value = split_opt(opt) if not prefix: raise ValueError(f"Invalid start character for option ({opt})") self.prefixes.add(prefix[0]) if len(prefix) == 1 and len(value) == 1: self._short_opts.append(opt) else: self._long_opts.append(opt) self.prefixes.add(prefix) if action is None: action = "store" self.dest = dest self.action = action self.nargs = nargs self.const = const self.obj = obj @property def takes_value(self) -> bool: return self.action in ("store", "append") def process(self, value: t.Any, state: "ParsingState") -> None: if self.action == "store": state.opts[self.dest] = value # type: ignore elif self.action == "store_const": state.opts[self.dest] = self.const # type: ignore elif self.action == "append": state.opts.setdefault(self.dest, []).append(value) # type: ignore elif self.action == "append_const": state.opts.setdefault(self.dest, []).append(self.const) # type: ignore elif self.action == "count": state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 # type: ignore else: raise ValueError(f"unknown action '{self.action}'") state.order.append(self.obj) class Argument: def __init__(self, obj: "CoreArgument", dest: t.Optional[str], nargs: int = 1): self.dest = dest self.nargs = nargs self.obj = obj def process( self, value: t.Union[t.Optional[str], t.Sequence[t.Optional[str]]], state: "ParsingState", ) -> None: if self.nargs > 1: assert value is not None holes = sum(1 for x in value if x is None) if holes == len(value): value = None elif holes != 0: raise BadArgumentUsage( _("Argument {name!r} takes {nargs} values.").format( name=self.dest, nargs=self.nargs ) ) if self.nargs == -1 and self.obj.envvar is not None and value == (): # Replace empty tuple with None so that a value from the # environment may be tried. value = None state.opts[self.dest] = value # type: ignore state.order.append(self.obj) class ParsingState: def __init__(self, rargs: t.List[str]) -> None: self.opts: t.Dict[str, t.Any] = {} self.largs: t.List[str] = [] self.rargs = rargs self.order: t.List[CoreParameter] = [] class OptionParser: """The option parser is an internal class that is ultimately used to parse options and arguments. It's modelled after optparse and brings a similar but vastly simplified API. It should generally not be used directly as the high level Click classes wrap it for you. It's not nearly as extensible as optparse or argparse as it does not implement features that are implemented on a higher level (such as types or defaults). :param ctx: optionally the :class:`~click.Context` where this parser should go with. """ def __init__(self, ctx: t.Optional["Context"] = None) -> None: #: The :class:`~click.Context` for this parser. This might be #: `None` for some advanced use cases. self.ctx = ctx #: This controls how the parser deals with interspersed arguments. #: If this is set to `False`, the parser will stop on the first #: non-option. Click uses this to implement nested subcommands #: safely. self.allow_interspersed_args: bool = True #: This tells the parser how to deal with unknown options. By #: default it will error out (which is sensible), but there is a #: second mode where it will ignore it and continue processing #: after shifting all the unknown options into the resulting args. self.ignore_unknown_options: bool = False if ctx is not None: self.allow_interspersed_args = ctx.allow_interspersed_args self.ignore_unknown_options = ctx.ignore_unknown_options self._short_opt: t.Dict[str, Option] = {} self._long_opt: t.Dict[str, Option] = {} self._opt_prefixes = {"-", "--"} self._args: t.List[Argument] = [] def add_option( self, obj: "CoreOption", opts: t.Sequence[str], dest: t.Optional[str], action: t.Optional[str] = None, nargs: int = 1, const: t.Optional[t.Any] = None, ) -> None: """Adds a new option named `dest` to the parser. The destination is not inferred (unlike with optparse) and needs to be explicitly provided. Action can be any of ``store``, ``store_const``, ``append``, ``append_const`` or ``count``. The `obj` can be used to identify the option in the order list that is returned from the parser. """ opts = [normalize_opt(opt, self.ctx) for opt in opts] option = Option(obj, opts, dest, action=action, nargs=nargs, const=const) self._opt_prefixes.update(option.prefixes) for opt in option._short_opts: self._short_opt[opt] = option for opt in option._long_opts: self._long_opt[opt] = option def add_argument( self, obj: "CoreArgument", dest: t.Optional[str], nargs: int = 1 ) -> None: """Adds a positional argument named `dest` to the parser. The `obj` can be used to identify the option in the order list that is returned from the parser. """ self._args.append(Argument(obj, dest=dest, nargs=nargs)) def parse_args( self, args: t.List[str] ) -> t.Tuple[t.Dict[str, t.Any], t.List[str], t.List["CoreParameter"]]: """Parses positional arguments and returns ``(values, args, order)`` for the parsed options and arguments as well as the leftover arguments if there are any. The order is a list of objects as they appear on the command line. If arguments appear multiple times they will be memorized multiple times as well. """ state = ParsingState(args) try: self._process_args_for_options(state) self._process_args_for_args(state) except UsageError: if self.ctx is None or not self.ctx.resilient_parsing: raise return state.opts, state.largs, state.order def _process_args_for_args(self, state: ParsingState) -> None: pargs, args = _unpack_args( state.largs + state.rargs, [x.nargs for x in self._args] ) for idx, arg in enumerate(self._args): arg.process(pargs[idx], state) state.largs = args state.rargs = [] def _process_args_for_options(self, state: ParsingState) -> None: while state.rargs: arg = state.rargs.pop(0) arglen = len(arg) # Double dashes always handled explicitly regardless of what # prefixes are valid. if arg == "--": return elif arg[:1] in self._opt_prefixes and arglen > 1: self._process_opts(arg, state) elif self.allow_interspersed_args: state.largs.append(arg) else: state.rargs.insert(0, arg) return # Say this is the original argument list: # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)] # ^ # (we are about to process arg(i)). # # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of # [arg0, ..., arg(i-1)] (any options and their arguments will have # been removed from largs). # # The while loop will usually consume 1 or more arguments per pass. # If it consumes 1 (eg. arg is an option that takes no arguments), # then after _process_arg() is done the situation is: # # largs = subset of [arg0, ..., arg(i)] # rargs = [arg(i+1), ..., arg(N-1)] # # If allow_interspersed_args is false, largs will always be # *empty* -- still a subset of [arg0, ..., arg(i-1)], but # not a very interesting subset! def _match_long_opt( self, opt: str, explicit_value: t.Optional[str], state: ParsingState ) -> None: if opt not in self._long_opt: from difflib import get_close_matches possibilities = get_close_matches(opt, self._long_opt) raise NoSuchOption(opt, possibilities=possibilities, ctx=self.ctx) option = self._long_opt[opt] if option.takes_value: # At this point it's safe to modify rargs by injecting the # explicit value, because no exception is raised in this # branch. This means that the inserted value will be fully # consumed. if explicit_value is not None: state.rargs.insert(0, explicit_value) value = self._get_value_from_state(opt, option, state) elif explicit_value is not None: raise BadOptionUsage( opt, _("Option {name!r} does not take a value.").format(name=opt) ) else: value = None option.process(value, state) def _match_short_opt(self, arg: str, state: ParsingState) -> None: stop = False i = 1 prefix = arg[0] unknown_options = [] for ch in arg[1:]: opt = normalize_opt(f"{prefix}{ch}", self.ctx) option = self._short_opt.get(opt) i += 1 if not option: if self.ignore_unknown_options: unknown_options.append(ch) continue raise NoSuchOption(opt, ctx=self.ctx) if option.takes_value: # Any characters left in arg? Pretend they're the # next arg, and stop consuming characters of arg. if i < len(arg): state.rargs.insert(0, arg[i:]) stop = True value = self._get_value_from_state(opt, option, state) else: value = None option.process(value, state) if stop: break # If we got any unknown options we recombine the string of the # remaining options and re-attach the prefix, then report that # to the state as new larg. This way there is basic combinatorics # that can be achieved while still ignoring unknown arguments. if self.ignore_unknown_options and unknown_options: state.largs.append(f"{prefix}{''.join(unknown_options)}") def _get_value_from_state( self, option_name: str, option: Option, state: ParsingState ) -> t.Any: nargs = option.nargs if len(state.rargs) < nargs: if option.obj._flag_needs_value: # Option allows omitting the value. value = _flag_needs_value else: raise BadOptionUsage( option_name, ngettext( "Option {name!r} requires an argument.", "Option {name!r} requires {nargs} arguments.", nargs, ).format(name=option_name, nargs=nargs), ) elif nargs == 1: next_rarg = state.rargs[0] if ( option.obj._flag_needs_value and isinstance(next_rarg, str) and next_rarg[:1] in self._opt_prefixes and len(next_rarg) > 1 ): # The next arg looks like the start of an option, don't # use it as the value if omitting the value is allowed. value = _flag_needs_value else: value = state.rargs.pop(0) else: value = tuple(state.rargs[:nargs]) del state.rargs[:nargs] return value def _process_opts(self, arg: str, state: ParsingState) -> None: explicit_value = None # Long option handling happens in two parts. The first part is # supporting explicitly attached values. In any case, we will try # to long match the option first. if "=" in arg: long_opt, explicit_value = arg.split("=", 1) else: long_opt = arg norm_long_opt = normalize_opt(long_opt, self.ctx) # At this point we will match the (assumed) long option through # the long option matching code. Note that this allows options # like "-foo" to be matched as long options. try: self._match_long_opt(norm_long_opt, explicit_value, state) except NoSuchOption: # At this point the long option matching failed, and we need # to try with short options. However there is a special rule # which says, that if we have a two character options prefix # (applies to "--foo" for instance), we do not dispatch to the # short option code and will instead raise the no option # error. if arg[:2] not in self._opt_prefixes: self._match_short_opt(arg, state) return if not self.ignore_unknown_options: raise state.largs.append(arg) ================================================ FILE: libs/click/py.typed ================================================ ================================================ FILE: libs/click/shell_completion.py ================================================ import os import re import typing as t from gettext import gettext as _ from .core import Argument from .core import BaseCommand from .core import Context from .core import MultiCommand from .core import Option from .core import Parameter from .core import ParameterSource from .parser import split_arg_string from .utils import echo def shell_complete( cli: BaseCommand, ctx_args: t.MutableMapping[str, t.Any], prog_name: str, complete_var: str, instruction: str, ) -> int: """Perform shell completion for the given CLI program. :param cli: Command being called. :param ctx_args: Extra arguments to pass to ``cli.make_context``. :param prog_name: Name of the executable in the shell. :param complete_var: Name of the environment variable that holds the completion instruction. :param instruction: Value of ``complete_var`` with the completion instruction and shell, in the form ``instruction_shell``. :return: Status code to exit with. """ shell, _, instruction = instruction.partition("_") comp_cls = get_completion_class(shell) if comp_cls is None: return 1 comp = comp_cls(cli, ctx_args, prog_name, complete_var) if instruction == "source": echo(comp.source()) return 0 if instruction == "complete": echo(comp.complete()) return 0 return 1 class CompletionItem: """Represents a completion value and metadata about the value. The default metadata is ``type`` to indicate special shell handling, and ``help`` if a shell supports showing a help string next to the value. Arbitrary parameters can be passed when creating the object, and accessed using ``item.attr``. If an attribute wasn't passed, accessing it returns ``None``. :param value: The completion suggestion. :param type: Tells the shell script to provide special completion support for the type. Click uses ``"dir"`` and ``"file"``. :param help: String shown next to the value if supported. :param kwargs: Arbitrary metadata. The built-in implementations don't use this, but custom type completions paired with custom shell support could use it. """ __slots__ = ("value", "type", "help", "_info") def __init__( self, value: t.Any, type: str = "plain", help: t.Optional[str] = None, **kwargs: t.Any, ) -> None: self.value: t.Any = value self.type: str = type self.help: t.Optional[str] = help self._info = kwargs def __getattr__(self, name: str) -> t.Any: return self._info.get(name) # Only Bash >= 4.4 has the nosort option. _SOURCE_BASH = """\ %(complete_func)s() { local IFS=$'\\n' local response response=$(env COMP_WORDS="${COMP_WORDS[*]}" COMP_CWORD=$COMP_CWORD \ %(complete_var)s=bash_complete $1) for completion in $response; do IFS=',' read type value <<< "$completion" if [[ $type == 'dir' ]]; then COMPREPLY=() compopt -o dirnames elif [[ $type == 'file' ]]; then COMPREPLY=() compopt -o default elif [[ $type == 'plain' ]]; then COMPREPLY+=($value) fi done return 0 } %(complete_func)s_setup() { complete -o nosort -F %(complete_func)s %(prog_name)s } %(complete_func)s_setup; """ _SOURCE_ZSH = """\ #compdef %(prog_name)s %(complete_func)s() { local -a completions local -a completions_with_descriptions local -a response (( ! $+commands[%(prog_name)s] )) && return 1 response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) \ %(complete_var)s=zsh_complete %(prog_name)s)}") for type key descr in ${response}; do if [[ "$type" == "plain" ]]; then if [[ "$descr" == "_" ]]; then completions+=("$key") else completions_with_descriptions+=("$key":"$descr") fi elif [[ "$type" == "dir" ]]; then _path_files -/ elif [[ "$type" == "file" ]]; then _path_files -f fi done if [ -n "$completions_with_descriptions" ]; then _describe -V unsorted completions_with_descriptions -U fi if [ -n "$completions" ]; then compadd -U -V unsorted -a completions fi } if [[ $zsh_eval_context[-1] == loadautofunc ]]; then # autoload from fpath, call function directly %(complete_func)s "$@" else # eval/source/. command, register function for later compdef %(complete_func)s %(prog_name)s fi """ _SOURCE_FISH = """\ function %(complete_func)s; set -l response (env %(complete_var)s=fish_complete COMP_WORDS=(commandline -cp) \ COMP_CWORD=(commandline -t) %(prog_name)s); for completion in $response; set -l metadata (string split "," $completion); if test $metadata[1] = "dir"; __fish_complete_directories $metadata[2]; else if test $metadata[1] = "file"; __fish_complete_path $metadata[2]; else if test $metadata[1] = "plain"; echo $metadata[2]; end; end; end; complete --no-files --command %(prog_name)s --arguments \ "(%(complete_func)s)"; """ class ShellComplete: """Base class for providing shell completion support. A subclass for a given shell will override attributes and methods to implement the completion instructions (``source`` and ``complete``). :param cli: Command being called. :param prog_name: Name of the executable in the shell. :param complete_var: Name of the environment variable that holds the completion instruction. .. versionadded:: 8.0 """ name: t.ClassVar[str] """Name to register the shell as with :func:`add_completion_class`. This is used in completion instructions (``{name}_source`` and ``{name}_complete``). """ source_template: t.ClassVar[str] """Completion script template formatted by :meth:`source`. This must be provided by subclasses. """ def __init__( self, cli: BaseCommand, ctx_args: t.MutableMapping[str, t.Any], prog_name: str, complete_var: str, ) -> None: self.cli = cli self.ctx_args = ctx_args self.prog_name = prog_name self.complete_var = complete_var @property def func_name(self) -> str: """The name of the shell function defined by the completion script. """ safe_name = re.sub(r"\W*", "", self.prog_name.replace("-", "_"), flags=re.ASCII) return f"_{safe_name}_completion" def source_vars(self) -> t.Dict[str, t.Any]: """Vars for formatting :attr:`source_template`. By default this provides ``complete_func``, ``complete_var``, and ``prog_name``. """ return { "complete_func": self.func_name, "complete_var": self.complete_var, "prog_name": self.prog_name, } def source(self) -> str: """Produce the shell script that defines the completion function. By default this ``%``-style formats :attr:`source_template` with the dict returned by :meth:`source_vars`. """ return self.source_template % self.source_vars() def get_completion_args(self) -> t.Tuple[t.List[str], str]: """Use the env vars defined by the shell script to return a tuple of ``args, incomplete``. This must be implemented by subclasses. """ raise NotImplementedError def get_completions( self, args: t.List[str], incomplete: str ) -> t.List[CompletionItem]: """Determine the context and last complete command or parameter from the complete args. Call that object's ``shell_complete`` method to get the completions for the incomplete value. :param args: List of complete args before the incomplete value. :param incomplete: Value being completed. May be empty. """ ctx = _resolve_context(self.cli, self.ctx_args, self.prog_name, args) obj, incomplete = _resolve_incomplete(ctx, args, incomplete) return obj.shell_complete(ctx, incomplete) def format_completion(self, item: CompletionItem) -> str: """Format a completion item into the form recognized by the shell script. This must be implemented by subclasses. :param item: Completion item to format. """ raise NotImplementedError def complete(self) -> str: """Produce the completion data to send back to the shell. By default this calls :meth:`get_completion_args`, gets the completions, then calls :meth:`format_completion` for each completion. """ args, incomplete = self.get_completion_args() completions = self.get_completions(args, incomplete) out = [self.format_completion(item) for item in completions] return "\n".join(out) class BashComplete(ShellComplete): """Shell completion for Bash.""" name = "bash" source_template = _SOURCE_BASH @staticmethod def _check_version() -> None: import shutil import subprocess bash_exe = shutil.which("bash") if bash_exe is None: match = None else: output = subprocess.run( [bash_exe, "--norc", "-c", 'echo "${BASH_VERSION}"'], stdout=subprocess.PIPE, ) match = re.search(r"^(\d+)\.(\d+)\.\d+", output.stdout.decode()) if match is not None: major, minor = match.groups() if major < "4" or major == "4" and minor < "4": echo( _( "Shell completion is not supported for Bash" " versions older than 4.4." ), err=True, ) else: echo( _("Couldn't detect Bash version, shell completion is not supported."), err=True, ) def source(self) -> str: self._check_version() return super().source() def get_completion_args(self) -> t.Tuple[t.List[str], str]: cwords = split_arg_string(os.environ["COMP_WORDS"]) cword = int(os.environ["COMP_CWORD"]) args = cwords[1:cword] try: incomplete = cwords[cword] except IndexError: incomplete = "" return args, incomplete def format_completion(self, item: CompletionItem) -> str: return f"{item.type},{item.value}" class ZshComplete(ShellComplete): """Shell completion for Zsh.""" name = "zsh" source_template = _SOURCE_ZSH def get_completion_args(self) -> t.Tuple[t.List[str], str]: cwords = split_arg_string(os.environ["COMP_WORDS"]) cword = int(os.environ["COMP_CWORD"]) args = cwords[1:cword] try: incomplete = cwords[cword] except IndexError: incomplete = "" return args, incomplete def format_completion(self, item: CompletionItem) -> str: return f"{item.type}\n{item.value}\n{item.help if item.help else '_'}" class FishComplete(ShellComplete): """Shell completion for Fish.""" name = "fish" source_template = _SOURCE_FISH def get_completion_args(self) -> t.Tuple[t.List[str], str]: cwords = split_arg_string(os.environ["COMP_WORDS"]) incomplete = os.environ["COMP_CWORD"] args = cwords[1:] # Fish stores the partial word in both COMP_WORDS and # COMP_CWORD, remove it from complete args. if incomplete and args and args[-1] == incomplete: args.pop() return args, incomplete def format_completion(self, item: CompletionItem) -> str: if item.help: return f"{item.type},{item.value}\t{item.help}" return f"{item.type},{item.value}" ShellCompleteType = t.TypeVar("ShellCompleteType", bound=t.Type[ShellComplete]) _available_shells: t.Dict[str, t.Type[ShellComplete]] = { "bash": BashComplete, "fish": FishComplete, "zsh": ZshComplete, } def add_completion_class( cls: ShellCompleteType, name: t.Optional[str] = None ) -> ShellCompleteType: """Register a :class:`ShellComplete` subclass under the given name. The name will be provided by the completion instruction environment variable during completion. :param cls: The completion class that will handle completion for the shell. :param name: Name to register the class under. Defaults to the class's ``name`` attribute. """ if name is None: name = cls.name _available_shells[name] = cls return cls def get_completion_class(shell: str) -> t.Optional[t.Type[ShellComplete]]: """Look up a registered :class:`ShellComplete` subclass by the name provided by the completion instruction environment variable. If the name isn't registered, returns ``None``. :param shell: Name the class is registered under. """ return _available_shells.get(shell) def _is_incomplete_argument(ctx: Context, param: Parameter) -> bool: """Determine if the given parameter is an argument that can still accept values. :param ctx: Invocation context for the command represented by the parsed complete args. :param param: Argument object being checked. """ if not isinstance(param, Argument): return False assert param.name is not None # Will be None if expose_value is False. value = ctx.params.get(param.name) return ( param.nargs == -1 or ctx.get_parameter_source(param.name) is not ParameterSource.COMMANDLINE or ( param.nargs > 1 and isinstance(value, (tuple, list)) and len(value) < param.nargs ) ) def _start_of_option(ctx: Context, value: str) -> bool: """Check if the value looks like the start of an option.""" if not value: return False c = value[0] return c in ctx._opt_prefixes def _is_incomplete_option(ctx: Context, args: t.List[str], param: Parameter) -> bool: """Determine if the given parameter is an option that needs a value. :param args: List of complete args before the incomplete value. :param param: Option object being checked. """ if not isinstance(param, Option): return False if param.is_flag or param.count: return False last_option = None for index, arg in enumerate(reversed(args)): if index + 1 > param.nargs: break if _start_of_option(ctx, arg): last_option = arg return last_option is not None and last_option in param.opts def _resolve_context( cli: BaseCommand, ctx_args: t.MutableMapping[str, t.Any], prog_name: str, args: t.List[str], ) -> Context: """Produce the context hierarchy starting with the command and traversing the complete arguments. This only follows the commands, it doesn't trigger input prompts or callbacks. :param cli: Command being called. :param prog_name: Name of the executable in the shell. :param args: List of complete args before the incomplete value. """ ctx_args["resilient_parsing"] = True ctx = cli.make_context(prog_name, args.copy(), **ctx_args) args = ctx.protected_args + ctx.args while args: command = ctx.command if isinstance(command, MultiCommand): if not command.chain: name, cmd, args = command.resolve_command(ctx, args) if cmd is None: return ctx ctx = cmd.make_context(name, args, parent=ctx, resilient_parsing=True) args = ctx.protected_args + ctx.args else: sub_ctx = ctx while args: name, cmd, args = command.resolve_command(ctx, args) if cmd is None: return ctx sub_ctx = cmd.make_context( name, args, parent=ctx, allow_extra_args=True, allow_interspersed_args=False, resilient_parsing=True, ) args = sub_ctx.args ctx = sub_ctx args = [*sub_ctx.protected_args, *sub_ctx.args] else: break return ctx def _resolve_incomplete( ctx: Context, args: t.List[str], incomplete: str ) -> t.Tuple[t.Union[BaseCommand, Parameter], str]: """Find the Click object that will handle the completion of the incomplete value. Return the object and the incomplete value. :param ctx: Invocation context for the command represented by the parsed complete args. :param args: List of complete args before the incomplete value. :param incomplete: Value being completed. May be empty. """ # Different shells treat an "=" between a long option name and # value differently. Might keep the value joined, return the "=" # as a separate item, or return the split name and value. Always # split and discard the "=" to make completion easier. if incomplete == "=": incomplete = "" elif "=" in incomplete and _start_of_option(ctx, incomplete): name, _, incomplete = incomplete.partition("=") args.append(name) # The "--" marker tells Click to stop treating values as options # even if they start with the option character. If it hasn't been # given and the incomplete arg looks like an option, the current # command will provide option name completions. if "--" not in args and _start_of_option(ctx, incomplete): return ctx.command, incomplete params = ctx.command.get_params(ctx) # If the last complete arg is an option name with an incomplete # value, the option will provide value completions. for param in params: if _is_incomplete_option(ctx, args, param): return param, incomplete # It's not an option name or value. The first argument without a # parsed value will provide value completions. for param in params: if _is_incomplete_argument(ctx, param): return param, incomplete # There were no unparsed arguments, the command may be a group that # will provide command name completions. return ctx.command, incomplete ================================================ FILE: libs/click/termui.py ================================================ import inspect import io import itertools import sys import typing as t from gettext import gettext as _ from ._compat import isatty from ._compat import strip_ansi from .exceptions import Abort from .exceptions import UsageError from .globals import resolve_color_default from .types import Choice from .types import convert_type from .types import ParamType from .utils import echo from .utils import LazyFile if t.TYPE_CHECKING: from ._termui_impl import ProgressBar V = t.TypeVar("V") # The prompt functions to use. The doc tools currently override these # functions to customize how they work. visible_prompt_func: t.Callable[[str], str] = input _ansi_colors = { "black": 30, "red": 31, "green": 32, "yellow": 33, "blue": 34, "magenta": 35, "cyan": 36, "white": 37, "reset": 39, "bright_black": 90, "bright_red": 91, "bright_green": 92, "bright_yellow": 93, "bright_blue": 94, "bright_magenta": 95, "bright_cyan": 96, "bright_white": 97, } _ansi_reset_all = "\033[0m" def hidden_prompt_func(prompt: str) -> str: import getpass return getpass.getpass(prompt) def _build_prompt( text: str, suffix: str, show_default: bool = False, default: t.Optional[t.Any] = None, show_choices: bool = True, type: t.Optional[ParamType] = None, ) -> str: prompt = text if type is not None and show_choices and isinstance(type, Choice): prompt += f" ({', '.join(map(str, type.choices))})" if default is not None and show_default: prompt = f"{prompt} [{_format_default(default)}]" return f"{prompt}{suffix}" def _format_default(default: t.Any) -> t.Any: if isinstance(default, (io.IOBase, LazyFile)) and hasattr(default, "name"): return default.name return default def prompt( text: str, default: t.Optional[t.Any] = None, hide_input: bool = False, confirmation_prompt: t.Union[bool, str] = False, type: t.Optional[t.Union[ParamType, t.Any]] = None, value_proc: t.Optional[t.Callable[[str], t.Any]] = None, prompt_suffix: str = ": ", show_default: bool = True, err: bool = False, show_choices: bool = True, ) -> t.Any: """Prompts a user for input. This is a convenience function that can be used to prompt a user for input later. If the user aborts the input by sending an interrupt signal, this function will catch it and raise a :exc:`Abort` exception. :param text: the text to show for the prompt. :param default: the default value to use if no input happens. If this is not given it will prompt until it's aborted. :param hide_input: if this is set to true then the input value will be hidden. :param confirmation_prompt: Prompt a second time to confirm the value. Can be set to a string instead of ``True`` to customize the message. :param type: the type to use to check the value against. :param value_proc: if this parameter is provided it's a function that is invoked instead of the type conversion to convert a value. :param prompt_suffix: a suffix that should be added to the prompt. :param show_default: shows or hides the default value in the prompt. :param err: if set to true the file defaults to ``stderr`` instead of ``stdout``, the same as with echo. :param show_choices: Show or hide choices if the passed type is a Choice. For example if type is a Choice of either day or week, show_choices is true and text is "Group by" then the prompt will be "Group by (day, week): ". .. versionadded:: 8.0 ``confirmation_prompt`` can be a custom string. .. versionadded:: 7.0 Added the ``show_choices`` parameter. .. versionadded:: 6.0 Added unicode support for cmd.exe on Windows. .. versionadded:: 4.0 Added the `err` parameter. """ def prompt_func(text: str) -> str: f = hidden_prompt_func if hide_input else visible_prompt_func try: # Write the prompt separately so that we get nice # coloring through colorama on Windows echo(text.rstrip(" "), nl=False, err=err) # Echo a space to stdout to work around an issue where # readline causes backspace to clear the whole line. return f(" ") except (KeyboardInterrupt, EOFError): # getpass doesn't print a newline if the user aborts input with ^C. # Allegedly this behavior is inherited from getpass(3). # A doc bug has been filed at https://bugs.python.org/issue24711 if hide_input: echo(None, err=err) raise Abort() from None if value_proc is None: value_proc = convert_type(type, default) prompt = _build_prompt( text, prompt_suffix, show_default, default, show_choices, type ) if confirmation_prompt: if confirmation_prompt is True: confirmation_prompt = _("Repeat for confirmation") confirmation_prompt = _build_prompt(confirmation_prompt, prompt_suffix) while True: while True: value = prompt_func(prompt) if value: break elif default is not None: value = default break try: result = value_proc(value) except UsageError as e: if hide_input: echo(_("Error: The value you entered was invalid."), err=err) else: echo(_("Error: {e.message}").format(e=e), err=err) continue if not confirmation_prompt: return result while True: value2 = prompt_func(confirmation_prompt) is_empty = not value and not value2 if value2 or is_empty: break if value == value2: return result echo(_("Error: The two entered values do not match."), err=err) def confirm( text: str, default: t.Optional[bool] = False, abort: bool = False, prompt_suffix: str = ": ", show_default: bool = True, err: bool = False, ) -> bool: """Prompts for confirmation (yes/no question). If the user aborts the input by sending a interrupt signal this function will catch it and raise a :exc:`Abort` exception. :param text: the question to ask. :param default: The default value to use when no input is given. If ``None``, repeat until input is given. :param abort: if this is set to `True` a negative answer aborts the exception by raising :exc:`Abort`. :param prompt_suffix: a suffix that should be added to the prompt. :param show_default: shows or hides the default value in the prompt. :param err: if set to true the file defaults to ``stderr`` instead of ``stdout``, the same as with echo. .. versionchanged:: 8.0 Repeat until input is given if ``default`` is ``None``. .. versionadded:: 4.0 Added the ``err`` parameter. """ prompt = _build_prompt( text, prompt_suffix, show_default, "y/n" if default is None else ("Y/n" if default else "y/N"), ) while True: try: # Write the prompt separately so that we get nice # coloring through colorama on Windows echo(prompt.rstrip(" "), nl=False, err=err) # Echo a space to stdout to work around an issue where # readline causes backspace to clear the whole line. value = visible_prompt_func(" ").lower().strip() except (KeyboardInterrupt, EOFError): raise Abort() from None if value in ("y", "yes"): rv = True elif value in ("n", "no"): rv = False elif default is not None and value == "": rv = default else: echo(_("Error: invalid input"), err=err) continue break if abort and not rv: raise Abort() return rv def echo_via_pager( text_or_generator: t.Union[t.Iterable[str], t.Callable[[], t.Iterable[str]], str], color: t.Optional[bool] = None, ) -> None: """This function takes a text and shows it via an environment specific pager on stdout. .. versionchanged:: 3.0 Added the `color` flag. :param text_or_generator: the text to page, or alternatively, a generator emitting the text to page. :param color: controls if the pager supports ANSI colors or not. The default is autodetection. """ color = resolve_color_default(color) if inspect.isgeneratorfunction(text_or_generator): i = t.cast(t.Callable[[], t.Iterable[str]], text_or_generator)() elif isinstance(text_or_generator, str): i = [text_or_generator] else: i = iter(t.cast(t.Iterable[str], text_or_generator)) # convert every element of i to a text type if necessary text_generator = (el if isinstance(el, str) else str(el) for el in i) from ._termui_impl import pager return pager(itertools.chain(text_generator, "\n"), color) def progressbar( iterable: t.Optional[t.Iterable[V]] = None, length: t.Optional[int] = None, label: t.Optional[str] = None, show_eta: bool = True, show_percent: t.Optional[bool] = None, show_pos: bool = False, item_show_func: t.Optional[t.Callable[[t.Optional[V]], t.Optional[str]]] = None, fill_char: str = "#", empty_char: str = "-", bar_template: str = "%(label)s [%(bar)s] %(info)s", info_sep: str = " ", width: int = 36, file: t.Optional[t.TextIO] = None, color: t.Optional[bool] = None, update_min_steps: int = 1, ) -> "ProgressBar[V]": """This function creates an iterable context manager that can be used to iterate over something while showing a progress bar. It will either iterate over the `iterable` or `length` items (that are counted up). While iteration happens, this function will print a rendered progress bar to the given `file` (defaults to stdout) and will attempt to calculate remaining time and more. By default, this progress bar will not be rendered if the file is not a terminal. The context manager creates the progress bar. When the context manager is entered the progress bar is already created. With every iteration over the progress bar, the iterable passed to the bar is advanced and the bar is updated. When the context manager exits, a newline is printed and the progress bar is finalized on screen. Note: The progress bar is currently designed for use cases where the total progress can be expected to take at least several seconds. Because of this, the ProgressBar class object won't display progress that is considered too fast, and progress where the time between steps is less than a second. No printing must happen or the progress bar will be unintentionally destroyed. Example usage:: with progressbar(items) as bar: for item in bar: do_something_with(item) Alternatively, if no iterable is specified, one can manually update the progress bar through the `update()` method instead of directly iterating over the progress bar. The update method accepts the number of steps to increment the bar with:: with progressbar(length=chunks.total_bytes) as bar: for chunk in chunks: process_chunk(chunk) bar.update(chunks.bytes) The ``update()`` method also takes an optional value specifying the ``current_item`` at the new position. This is useful when used together with ``item_show_func`` to customize the output for each manual step:: with click.progressbar( length=total_size, label='Unzipping archive', item_show_func=lambda a: a.filename ) as bar: for archive in zip_file: archive.extract() bar.update(archive.size, archive) :param iterable: an iterable to iterate over. If not provided the length is required. :param length: the number of items to iterate over. By default the progressbar will attempt to ask the iterator about its length, which might or might not work. If an iterable is also provided this parameter can be used to override the length. If an iterable is not provided the progress bar will iterate over a range of that length. :param label: the label to show next to the progress bar. :param show_eta: enables or disables the estimated time display. This is automatically disabled if the length cannot be determined. :param show_percent: enables or disables the percentage display. The default is `True` if the iterable has a length or `False` if not. :param show_pos: enables or disables the absolute position display. The default is `False`. :param item_show_func: A function called with the current item which can return a string to show next to the progress bar. If the function returns ``None`` nothing is shown. The current item can be ``None``, such as when entering and exiting the bar. :param fill_char: the character to use to show the filled part of the progress bar. :param empty_char: the character to use to show the non-filled part of the progress bar. :param bar_template: the format string to use as template for the bar. The parameters in it are ``label`` for the label, ``bar`` for the progress bar and ``info`` for the info section. :param info_sep: the separator between multiple info items (eta etc.) :param width: the width of the progress bar in characters, 0 means full terminal width :param file: The file to write to. If this is not a terminal then only the label is printed. :param color: controls if the terminal supports ANSI colors or not. The default is autodetection. This is only needed if ANSI codes are included anywhere in the progress bar output which is not the case by default. :param update_min_steps: Render only when this many updates have completed. This allows tuning for very fast iterators. .. versionchanged:: 8.0 Output is shown even if execution time is less than 0.5 seconds. .. versionchanged:: 8.0 ``item_show_func`` shows the current item, not the previous one. .. versionchanged:: 8.0 Labels are echoed if the output is not a TTY. Reverts a change in 7.0 that removed all output. .. versionadded:: 8.0 Added the ``update_min_steps`` parameter. .. versionchanged:: 4.0 Added the ``color`` parameter. Added the ``update`` method to the object. .. versionadded:: 2.0 """ from ._termui_impl import ProgressBar color = resolve_color_default(color) return ProgressBar( iterable=iterable, length=length, show_eta=show_eta, show_percent=show_percent, show_pos=show_pos, item_show_func=item_show_func, fill_char=fill_char, empty_char=empty_char, bar_template=bar_template, info_sep=info_sep, file=file, label=label, width=width, color=color, update_min_steps=update_min_steps, ) def clear() -> None: """Clears the terminal screen. This will have the effect of clearing the whole visible space of the terminal and moving the cursor to the top left. This does not do anything if not connected to a terminal. .. versionadded:: 2.0 """ if not isatty(sys.stdout): return # ANSI escape \033[2J clears the screen, \033[1;1H moves the cursor echo("\033[2J\033[1;1H", nl=False) def _interpret_color( color: t.Union[int, t.Tuple[int, int, int], str], offset: int = 0 ) -> str: if isinstance(color, int): return f"{38 + offset};5;{color:d}" if isinstance(color, (tuple, list)): r, g, b = color return f"{38 + offset};2;{r:d};{g:d};{b:d}" return str(_ansi_colors[color] + offset) def style( text: t.Any, fg: t.Optional[t.Union[int, t.Tuple[int, int, int], str]] = None, bg: t.Optional[t.Union[int, t.Tuple[int, int, int], str]] = None, bold: t.Optional[bool] = None, dim: t.Optional[bool] = None, underline: t.Optional[bool] = None, overline: t.Optional[bool] = None, italic: t.Optional[bool] = None, blink: t.Optional[bool] = None, reverse: t.Optional[bool] = None, strikethrough: t.Optional[bool] = None, reset: bool = True, ) -> str: """Styles a text with ANSI styles and returns the new string. By default the styling is self contained which means that at the end of the string a reset code is issued. This can be prevented by passing ``reset=False``. Examples:: click.echo(click.style('Hello World!', fg='green')) click.echo(click.style('ATTENTION!', blink=True)) click.echo(click.style('Some things', reverse=True, fg='cyan')) click.echo(click.style('More colors', fg=(255, 12, 128), bg=117)) Supported color names: * ``black`` (might be a gray) * ``red`` * ``green`` * ``yellow`` (might be an orange) * ``blue`` * ``magenta`` * ``cyan`` * ``white`` (might be light gray) * ``bright_black`` * ``bright_red`` * ``bright_green`` * ``bright_yellow`` * ``bright_blue`` * ``bright_magenta`` * ``bright_cyan`` * ``bright_white`` * ``reset`` (reset the color code only) If the terminal supports it, color may also be specified as: - An integer in the interval [0, 255]. The terminal must support 8-bit/256-color mode. - An RGB tuple of three integers in [0, 255]. The terminal must support 24-bit/true-color mode. See https://en.wikipedia.org/wiki/ANSI_color and https://gist.github.com/XVilka/8346728 for more information. :param text: the string to style with ansi codes. :param fg: if provided this will become the foreground color. :param bg: if provided this will become the background color. :param bold: if provided this will enable or disable bold mode. :param dim: if provided this will enable or disable dim mode. This is badly supported. :param underline: if provided this will enable or disable underline. :param overline: if provided this will enable or disable overline. :param italic: if provided this will enable or disable italic. :param blink: if provided this will enable or disable blinking. :param reverse: if provided this will enable or disable inverse rendering (foreground becomes background and the other way round). :param strikethrough: if provided this will enable or disable striking through text. :param reset: by default a reset-all code is added at the end of the string which means that styles do not carry over. This can be disabled to compose styles. .. versionchanged:: 8.0 A non-string ``message`` is converted to a string. .. versionchanged:: 8.0 Added support for 256 and RGB color codes. .. versionchanged:: 8.0 Added the ``strikethrough``, ``italic``, and ``overline`` parameters. .. versionchanged:: 7.0 Added support for bright colors. .. versionadded:: 2.0 """ if not isinstance(text, str): text = str(text) bits = [] if fg: try: bits.append(f"\033[{_interpret_color(fg)}m") except KeyError: raise TypeError(f"Unknown color {fg!r}") from None if bg: try: bits.append(f"\033[{_interpret_color(bg, 10)}m") except KeyError: raise TypeError(f"Unknown color {bg!r}") from None if bold is not None: bits.append(f"\033[{1 if bold else 22}m") if dim is not None: bits.append(f"\033[{2 if dim else 22}m") if underline is not None: bits.append(f"\033[{4 if underline else 24}m") if overline is not None: bits.append(f"\033[{53 if overline else 55}m") if italic is not None: bits.append(f"\033[{3 if italic else 23}m") if blink is not None: bits.append(f"\033[{5 if blink else 25}m") if reverse is not None: bits.append(f"\033[{7 if reverse else 27}m") if strikethrough is not None: bits.append(f"\033[{9 if strikethrough else 29}m") bits.append(text) if reset: bits.append(_ansi_reset_all) return "".join(bits) def unstyle(text: str) -> str: """Removes ANSI styling information from a string. Usually it's not necessary to use this function as Click's echo function will automatically remove styling if necessary. .. versionadded:: 2.0 :param text: the text to remove style information from. """ return strip_ansi(text) def secho( message: t.Optional[t.Any] = None, file: t.Optional[t.IO[t.AnyStr]] = None, nl: bool = True, err: bool = False, color: t.Optional[bool] = None, **styles: t.Any, ) -> None: """This function combines :func:`echo` and :func:`style` into one call. As such the following two calls are the same:: click.secho('Hello World!', fg='green') click.echo(click.style('Hello World!', fg='green')) All keyword arguments are forwarded to the underlying functions depending on which one they go with. Non-string types will be converted to :class:`str`. However, :class:`bytes` are passed directly to :meth:`echo` without applying style. If you want to style bytes that represent text, call :meth:`bytes.decode` first. .. versionchanged:: 8.0 A non-string ``message`` is converted to a string. Bytes are passed through without style applied. .. versionadded:: 2.0 """ if message is not None and not isinstance(message, (bytes, bytearray)): message = style(message, **styles) return echo(message, file=file, nl=nl, err=err, color=color) def edit( text: t.Optional[t.AnyStr] = None, editor: t.Optional[str] = None, env: t.Optional[t.Mapping[str, str]] = None, require_save: bool = True, extension: str = ".txt", filename: t.Optional[str] = None, ) -> t.Optional[t.AnyStr]: r"""Edits the given text in the defined editor. If an editor is given (should be the full path to the executable but the regular operating system search path is used for finding the executable) it overrides the detected editor. Optionally, some environment variables can be used. If the editor is closed without changes, `None` is returned. In case a file is edited directly the return value is always `None` and `require_save` and `extension` are ignored. If the editor cannot be opened a :exc:`UsageError` is raised. Note for Windows: to simplify cross-platform usage, the newlines are automatically converted from POSIX to Windows and vice versa. As such, the message here will have ``\n`` as newline markers. :param text: the text to edit. :param editor: optionally the editor to use. Defaults to automatic detection. :param env: environment variables to forward to the editor. :param require_save: if this is true, then not saving in the editor will make the return value become `None`. :param extension: the extension to tell the editor about. This defaults to `.txt` but changing this might change syntax highlighting. :param filename: if provided it will edit this file instead of the provided text contents. It will not use a temporary file as an indirection in that case. """ from ._termui_impl import Editor ed = Editor(editor=editor, env=env, require_save=require_save, extension=extension) if filename is None: return ed.edit(text) ed.edit_file(filename) return None def launch(url: str, wait: bool = False, locate: bool = False) -> int: """This function launches the given URL (or filename) in the default viewer application for this file type. If this is an executable, it might launch the executable in a new session. The return value is the exit code of the launched application. Usually, ``0`` indicates success. Examples:: click.launch('https://click.palletsprojects.com/') click.launch('/my/downloaded/file', locate=True) .. versionadded:: 2.0 :param url: URL or filename of the thing to launch. :param wait: Wait for the program to exit before returning. This only works if the launched program blocks. In particular, ``xdg-open`` on Linux does not block. :param locate: if this is set to `True` then instead of launching the application associated with the URL it will attempt to launch a file manager with the file located. This might have weird effects if the URL does not point to the filesystem. """ from ._termui_impl import open_url return open_url(url, wait=wait, locate=locate) # If this is provided, getchar() calls into this instead. This is used # for unittesting purposes. _getchar: t.Optional[t.Callable[[bool], str]] = None def getchar(echo: bool = False) -> str: """Fetches a single character from the terminal and returns it. This will always return a unicode character and under certain rare circumstances this might return more than one character. The situations which more than one character is returned is when for whatever reason multiple characters end up in the terminal buffer or standard input was not actually a terminal. Note that this will always read from the terminal, even if something is piped into the standard input. Note for Windows: in rare cases when typing non-ASCII characters, this function might wait for a second character and then return both at once. This is because certain Unicode characters look like special-key markers. .. versionadded:: 2.0 :param echo: if set to `True`, the character read will also show up on the terminal. The default is to not show it. """ global _getchar if _getchar is None: from ._termui_impl import getchar as f _getchar = f return _getchar(echo) def raw_terminal() -> t.ContextManager[int]: from ._termui_impl import raw_terminal as f return f() def pause(info: t.Optional[str] = None, err: bool = False) -> None: """This command stops execution and waits for the user to press any key to continue. This is similar to the Windows batch "pause" command. If the program is not run through a terminal, this command will instead do nothing. .. versionadded:: 2.0 .. versionadded:: 4.0 Added the `err` parameter. :param info: The message to print before pausing. Defaults to ``"Press any key to continue..."``. :param err: if set to message goes to ``stderr`` instead of ``stdout``, the same as with echo. """ if not isatty(sys.stdin) or not isatty(sys.stdout): return if info is None: info = _("Press any key to continue...") try: if info: echo(info, nl=False, err=err) try: getchar() except (KeyboardInterrupt, EOFError): pass finally: if info: echo(err=err) ================================================ FILE: libs/click/testing.py ================================================ import contextlib import io import os import shlex import shutil import sys import tempfile import typing as t from types import TracebackType from . import _compat from . import formatting from . import termui from . import utils from ._compat import _find_binary_reader if t.TYPE_CHECKING: from .core import BaseCommand class EchoingStdin: def __init__(self, input: t.BinaryIO, output: t.BinaryIO) -> None: self._input = input self._output = output self._paused = False def __getattr__(self, x: str) -> t.Any: return getattr(self._input, x) def _echo(self, rv: bytes) -> bytes: if not self._paused: self._output.write(rv) return rv def read(self, n: int = -1) -> bytes: return self._echo(self._input.read(n)) def read1(self, n: int = -1) -> bytes: return self._echo(self._input.read1(n)) # type: ignore def readline(self, n: int = -1) -> bytes: return self._echo(self._input.readline(n)) def readlines(self) -> t.List[bytes]: return [self._echo(x) for x in self._input.readlines()] def __iter__(self) -> t.Iterator[bytes]: return iter(self._echo(x) for x in self._input) def __repr__(self) -> str: return repr(self._input) @contextlib.contextmanager def _pause_echo(stream: t.Optional[EchoingStdin]) -> t.Iterator[None]: if stream is None: yield else: stream._paused = True yield stream._paused = False class _NamedTextIOWrapper(io.TextIOWrapper): def __init__( self, buffer: t.BinaryIO, name: str, mode: str, **kwargs: t.Any ) -> None: super().__init__(buffer, **kwargs) self._name = name self._mode = mode @property def name(self) -> str: return self._name @property def mode(self) -> str: return self._mode def make_input_stream( input: t.Optional[t.Union[str, bytes, t.IO[t.Any]]], charset: str ) -> t.BinaryIO: # Is already an input stream. if hasattr(input, "read"): rv = _find_binary_reader(t.cast(t.IO[t.Any], input)) if rv is not None: return rv raise TypeError("Could not find binary reader for input stream.") if input is None: input = b"" elif isinstance(input, str): input = input.encode(charset) return io.BytesIO(input) class Result: """Holds the captured result of an invoked CLI script.""" def __init__( self, runner: "CliRunner", stdout_bytes: bytes, stderr_bytes: t.Optional[bytes], return_value: t.Any, exit_code: int, exception: t.Optional[BaseException], exc_info: t.Optional[ t.Tuple[t.Type[BaseException], BaseException, TracebackType] ] = None, ): #: The runner that created the result self.runner = runner #: The standard output as bytes. self.stdout_bytes = stdout_bytes #: The standard error as bytes, or None if not available self.stderr_bytes = stderr_bytes #: The value returned from the invoked command. #: #: .. versionadded:: 8.0 self.return_value = return_value #: The exit code as integer. self.exit_code = exit_code #: The exception that happened if one did. self.exception = exception #: The traceback self.exc_info = exc_info @property def output(self) -> str: """The (standard) output as unicode string.""" return self.stdout @property def stdout(self) -> str: """The standard output as unicode string.""" return self.stdout_bytes.decode(self.runner.charset, "replace").replace( "\r\n", "\n" ) @property def stderr(self) -> str: """The standard error as unicode string.""" if self.stderr_bytes is None: raise ValueError("stderr not separately captured") return self.stderr_bytes.decode(self.runner.charset, "replace").replace( "\r\n", "\n" ) def __repr__(self) -> str: exc_str = repr(self.exception) if self.exception else "okay" return f"<{type(self).__name__} {exc_str}>" class CliRunner: """The CLI runner provides functionality to invoke a Click command line script for unittesting purposes in a isolated environment. This only works in single-threaded systems without any concurrency as it changes the global interpreter state. :param charset: the character set for the input and output data. :param env: a dictionary with environment variables for overriding. :param echo_stdin: if this is set to `True`, then reading from stdin writes to stdout. This is useful for showing examples in some circumstances. Note that regular prompts will automatically echo the input. :param mix_stderr: if this is set to `False`, then stdout and stderr are preserved as independent streams. This is useful for Unix-philosophy apps that have predictable stdout and noisy stderr, such that each may be measured independently """ def __init__( self, charset: str = "utf-8", env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, echo_stdin: bool = False, mix_stderr: bool = True, ) -> None: self.charset = charset self.env: t.Mapping[str, t.Optional[str]] = env or {} self.echo_stdin = echo_stdin self.mix_stderr = mix_stderr def get_default_prog_name(self, cli: "BaseCommand") -> str: """Given a command object it will return the default program name for it. The default is the `name` attribute or ``"root"`` if not set. """ return cli.name or "root" def make_env( self, overrides: t.Optional[t.Mapping[str, t.Optional[str]]] = None ) -> t.Mapping[str, t.Optional[str]]: """Returns the environment overrides for invoking a script.""" rv = dict(self.env) if overrides: rv.update(overrides) return rv @contextlib.contextmanager def isolation( self, input: t.Optional[t.Union[str, bytes, t.IO[t.Any]]] = None, env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, color: bool = False, ) -> t.Iterator[t.Tuple[io.BytesIO, t.Optional[io.BytesIO]]]: """A context manager that sets up the isolation for invoking of a command line tool. This sets up stdin with the given input data and `os.environ` with the overrides from the given dictionary. This also rebinds some internals in Click to be mocked (like the prompt functionality). This is automatically done in the :meth:`invoke` method. :param input: the input stream to put into sys.stdin. :param env: the environment overrides as dictionary. :param color: whether the output should contain color codes. The application can still override this explicitly. .. versionchanged:: 8.0 ``stderr`` is opened with ``errors="backslashreplace"`` instead of the default ``"strict"``. .. versionchanged:: 4.0 Added the ``color`` parameter. """ bytes_input = make_input_stream(input, self.charset) echo_input = None old_stdin = sys.stdin old_stdout = sys.stdout old_stderr = sys.stderr old_forced_width = formatting.FORCED_WIDTH formatting.FORCED_WIDTH = 80 env = self.make_env(env) bytes_output = io.BytesIO() if self.echo_stdin: bytes_input = echo_input = t.cast( t.BinaryIO, EchoingStdin(bytes_input, bytes_output) ) sys.stdin = text_input = _NamedTextIOWrapper( bytes_input, encoding=self.charset, name="", mode="r" ) if self.echo_stdin: # Force unbuffered reads, otherwise TextIOWrapper reads a # large chunk which is echoed early. text_input._CHUNK_SIZE = 1 # type: ignore sys.stdout = _NamedTextIOWrapper( bytes_output, encoding=self.charset, name="", mode="w" ) bytes_error = None if self.mix_stderr: sys.stderr = sys.stdout else: bytes_error = io.BytesIO() sys.stderr = _NamedTextIOWrapper( bytes_error, encoding=self.charset, name="", mode="w", errors="backslashreplace", ) @_pause_echo(echo_input) # type: ignore def visible_input(prompt: t.Optional[str] = None) -> str: sys.stdout.write(prompt or "") val = text_input.readline().rstrip("\r\n") sys.stdout.write(f"{val}\n") sys.stdout.flush() return val @_pause_echo(echo_input) # type: ignore def hidden_input(prompt: t.Optional[str] = None) -> str: sys.stdout.write(f"{prompt or ''}\n") sys.stdout.flush() return text_input.readline().rstrip("\r\n") @_pause_echo(echo_input) # type: ignore def _getchar(echo: bool) -> str: char = sys.stdin.read(1) if echo: sys.stdout.write(char) sys.stdout.flush() return char default_color = color def should_strip_ansi( stream: t.Optional[t.IO[t.Any]] = None, color: t.Optional[bool] = None ) -> bool: if color is None: return not default_color return not color old_visible_prompt_func = termui.visible_prompt_func old_hidden_prompt_func = termui.hidden_prompt_func old__getchar_func = termui._getchar old_should_strip_ansi = utils.should_strip_ansi # type: ignore old__compat_should_strip_ansi = _compat.should_strip_ansi termui.visible_prompt_func = visible_input termui.hidden_prompt_func = hidden_input termui._getchar = _getchar utils.should_strip_ansi = should_strip_ansi # type: ignore _compat.should_strip_ansi = should_strip_ansi old_env = {} try: for key, value in env.items(): old_env[key] = os.environ.get(key) if value is None: try: del os.environ[key] except Exception: pass else: os.environ[key] = value yield (bytes_output, bytes_error) finally: for key, value in old_env.items(): if value is None: try: del os.environ[key] except Exception: pass else: os.environ[key] = value sys.stdout = old_stdout sys.stderr = old_stderr sys.stdin = old_stdin termui.visible_prompt_func = old_visible_prompt_func termui.hidden_prompt_func = old_hidden_prompt_func termui._getchar = old__getchar_func utils.should_strip_ansi = old_should_strip_ansi # type: ignore _compat.should_strip_ansi = old__compat_should_strip_ansi formatting.FORCED_WIDTH = old_forced_width def invoke( self, cli: "BaseCommand", args: t.Optional[t.Union[str, t.Sequence[str]]] = None, input: t.Optional[t.Union[str, bytes, t.IO[t.Any]]] = None, env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, catch_exceptions: bool = True, color: bool = False, **extra: t.Any, ) -> Result: """Invokes a command in an isolated environment. The arguments are forwarded directly to the command line script, the `extra` keyword arguments are passed to the :meth:`~clickpkg.Command.main` function of the command. This returns a :class:`Result` object. :param cli: the command to invoke :param args: the arguments to invoke. It may be given as an iterable or a string. When given as string it will be interpreted as a Unix shell command. More details at :func:`shlex.split`. :param input: the input data for `sys.stdin`. :param env: the environment overrides. :param catch_exceptions: Whether to catch any other exceptions than ``SystemExit``. :param extra: the keyword arguments to pass to :meth:`main`. :param color: whether the output should contain color codes. The application can still override this explicitly. .. versionchanged:: 8.0 The result object has the ``return_value`` attribute with the value returned from the invoked command. .. versionchanged:: 4.0 Added the ``color`` parameter. .. versionchanged:: 3.0 Added the ``catch_exceptions`` parameter. .. versionchanged:: 3.0 The result object has the ``exc_info`` attribute with the traceback if available. """ exc_info = None with self.isolation(input=input, env=env, color=color) as outstreams: return_value = None exception: t.Optional[BaseException] = None exit_code = 0 if isinstance(args, str): args = shlex.split(args) try: prog_name = extra.pop("prog_name") except KeyError: prog_name = self.get_default_prog_name(cli) try: return_value = cli.main(args=args or (), prog_name=prog_name, **extra) except SystemExit as e: exc_info = sys.exc_info() e_code = t.cast(t.Optional[t.Union[int, t.Any]], e.code) if e_code is None: e_code = 0 if e_code != 0: exception = e if not isinstance(e_code, int): sys.stdout.write(str(e_code)) sys.stdout.write("\n") e_code = 1 exit_code = e_code except Exception as e: if not catch_exceptions: raise exception = e exit_code = 1 exc_info = sys.exc_info() finally: sys.stdout.flush() stdout = outstreams[0].getvalue() if self.mix_stderr: stderr = None else: stderr = outstreams[1].getvalue() # type: ignore return Result( runner=self, stdout_bytes=stdout, stderr_bytes=stderr, return_value=return_value, exit_code=exit_code, exception=exception, exc_info=exc_info, # type: ignore ) @contextlib.contextmanager def isolated_filesystem( self, temp_dir: t.Optional[t.Union[str, "os.PathLike[str]"]] = None ) -> t.Iterator[str]: """A context manager that creates a temporary directory and changes the current working directory to it. This isolates tests that affect the contents of the CWD to prevent them from interfering with each other. :param temp_dir: Create the temporary directory under this directory. If given, the created directory is not removed when exiting. .. versionchanged:: 8.0 Added the ``temp_dir`` parameter. """ cwd = os.getcwd() dt = tempfile.mkdtemp(dir=temp_dir) os.chdir(dt) try: yield dt finally: os.chdir(cwd) if temp_dir is None: try: shutil.rmtree(dt) except OSError: pass ================================================ FILE: libs/click/types.py ================================================ import os import stat import sys import typing as t from datetime import datetime from gettext import gettext as _ from gettext import ngettext from ._compat import _get_argv_encoding from ._compat import open_stream from .exceptions import BadParameter from .utils import format_filename from .utils import LazyFile from .utils import safecall if t.TYPE_CHECKING: import typing_extensions as te from .core import Context from .core import Parameter from .shell_completion import CompletionItem class ParamType: """Represents the type of a parameter. Validates and converts values from the command line or Python into the correct type. To implement a custom type, subclass and implement at least the following: - The :attr:`name` class attribute must be set. - Calling an instance of the type with ``None`` must return ``None``. This is already implemented by default. - :meth:`convert` must convert string values to the correct type. - :meth:`convert` must accept values that are already the correct type. - It must be able to convert a value if the ``ctx`` and ``param`` arguments are ``None``. This can occur when converting prompt input. """ is_composite: t.ClassVar[bool] = False arity: t.ClassVar[int] = 1 #: the descriptive name of this type name: str #: if a list of this type is expected and the value is pulled from a #: string environment variable, this is what splits it up. `None` #: means any whitespace. For all parameters the general rule is that #: whitespace splits them up. The exception are paths and files which #: are split by ``os.path.pathsep`` by default (":" on Unix and ";" on #: Windows). envvar_list_splitter: t.ClassVar[t.Optional[str]] = None def to_info_dict(self) -> t.Dict[str, t.Any]: """Gather information that could be useful for a tool generating user-facing documentation. Use :meth:`click.Context.to_info_dict` to traverse the entire CLI structure. .. versionadded:: 8.0 """ # The class name without the "ParamType" suffix. param_type = type(self).__name__.partition("ParamType")[0] param_type = param_type.partition("ParameterType")[0] # Custom subclasses might not remember to set a name. if hasattr(self, "name"): name = self.name else: name = param_type return {"param_type": param_type, "name": name} def __call__( self, value: t.Any, param: t.Optional["Parameter"] = None, ctx: t.Optional["Context"] = None, ) -> t.Any: if value is not None: return self.convert(value, param, ctx) def get_metavar(self, param: "Parameter") -> t.Optional[str]: """Returns the metavar default for this param if it provides one.""" def get_missing_message(self, param: "Parameter") -> t.Optional[str]: """Optionally might return extra information about a missing parameter. .. versionadded:: 2.0 """ def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: """Convert the value to the correct type. This is not called if the value is ``None`` (the missing value). This must accept string values from the command line, as well as values that are already the correct type. It may also convert other compatible types. The ``param`` and ``ctx`` arguments may be ``None`` in certain situations, such as when converting prompt input. If the value cannot be converted, call :meth:`fail` with a descriptive message. :param value: The value to convert. :param param: The parameter that is using this type to convert its value. May be ``None``. :param ctx: The current context that arrived at this value. May be ``None``. """ return value def split_envvar_value(self, rv: str) -> t.Sequence[str]: """Given a value from an environment variable this splits it up into small chunks depending on the defined envvar list splitter. If the splitter is set to `None`, which means that whitespace splits, then leading and trailing whitespace is ignored. Otherwise, leading and trailing splitters usually lead to empty items being included. """ return (rv or "").split(self.envvar_list_splitter) def fail( self, message: str, param: t.Optional["Parameter"] = None, ctx: t.Optional["Context"] = None, ) -> "t.NoReturn": """Helper method to fail with an invalid value message.""" raise BadParameter(message, ctx=ctx, param=param) def shell_complete( self, ctx: "Context", param: "Parameter", incomplete: str ) -> t.List["CompletionItem"]: """Return a list of :class:`~click.shell_completion.CompletionItem` objects for the incomplete value. Most types do not provide completions, but some do, and this allows custom types to provide custom completions as well. :param ctx: Invocation context for this command. :param param: The parameter that is requesting completion. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ return [] class CompositeParamType(ParamType): is_composite = True @property def arity(self) -> int: # type: ignore raise NotImplementedError() class FuncParamType(ParamType): def __init__(self, func: t.Callable[[t.Any], t.Any]) -> None: self.name: str = func.__name__ self.func = func def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict["func"] = self.func return info_dict def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: try: return self.func(value) except ValueError: try: value = str(value) except UnicodeError: value = value.decode("utf-8", "replace") self.fail(value, param, ctx) class UnprocessedParamType(ParamType): name = "text" def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: return value def __repr__(self) -> str: return "UNPROCESSED" class StringParamType(ParamType): name = "text" def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: if isinstance(value, bytes): enc = _get_argv_encoding() try: value = value.decode(enc) except UnicodeError: fs_enc = sys.getfilesystemencoding() if fs_enc != enc: try: value = value.decode(fs_enc) except UnicodeError: value = value.decode("utf-8", "replace") else: value = value.decode("utf-8", "replace") return value return str(value) def __repr__(self) -> str: return "STRING" class Choice(ParamType): """The choice type allows a value to be checked against a fixed set of supported values. All of these values have to be strings. You should only pass a list or tuple of choices. Other iterables (like generators) may lead to surprising results. The resulting value will always be one of the originally passed choices regardless of ``case_sensitive`` or any ``ctx.token_normalize_func`` being specified. See :ref:`choice-opts` for an example. :param case_sensitive: Set to false to make choices case insensitive. Defaults to true. """ name = "choice" def __init__(self, choices: t.Sequence[str], case_sensitive: bool = True) -> None: self.choices = choices self.case_sensitive = case_sensitive def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict["choices"] = self.choices info_dict["case_sensitive"] = self.case_sensitive return info_dict def get_metavar(self, param: "Parameter") -> str: choices_str = "|".join(self.choices) # Use curly braces to indicate a required argument. if param.required and param.param_type_name == "argument": return f"{{{choices_str}}}" # Use square braces to indicate an option or optional argument. return f"[{choices_str}]" def get_missing_message(self, param: "Parameter") -> str: return _("Choose from:\n\t{choices}").format(choices=",\n\t".join(self.choices)) def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: # Match through normalization and case sensitivity # first do token_normalize_func, then lowercase # preserve original `value` to produce an accurate message in # `self.fail` normed_value = value normed_choices = {choice: choice for choice in self.choices} if ctx is not None and ctx.token_normalize_func is not None: normed_value = ctx.token_normalize_func(value) normed_choices = { ctx.token_normalize_func(normed_choice): original for normed_choice, original in normed_choices.items() } if not self.case_sensitive: normed_value = normed_value.casefold() normed_choices = { normed_choice.casefold(): original for normed_choice, original in normed_choices.items() } if normed_value in normed_choices: return normed_choices[normed_value] choices_str = ", ".join(map(repr, self.choices)) self.fail( ngettext( "{value!r} is not {choice}.", "{value!r} is not one of {choices}.", len(self.choices), ).format(value=value, choice=choices_str, choices=choices_str), param, ctx, ) def __repr__(self) -> str: return f"Choice({list(self.choices)})" def shell_complete( self, ctx: "Context", param: "Parameter", incomplete: str ) -> t.List["CompletionItem"]: """Complete choices that start with the incomplete value. :param ctx: Invocation context for this command. :param param: The parameter that is requesting completion. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ from click.shell_completion import CompletionItem str_choices = map(str, self.choices) if self.case_sensitive: matched = (c for c in str_choices if c.startswith(incomplete)) else: incomplete = incomplete.lower() matched = (c for c in str_choices if c.lower().startswith(incomplete)) return [CompletionItem(c) for c in matched] class DateTime(ParamType): """The DateTime type converts date strings into `datetime` objects. The format strings which are checked are configurable, but default to some common (non-timezone aware) ISO 8601 formats. When specifying *DateTime* formats, you should only pass a list or a tuple. Other iterables, like generators, may lead to surprising results. The format strings are processed using ``datetime.strptime``, and this consequently defines the format strings which are allowed. Parsing is tried using each format, in order, and the first format which parses successfully is used. :param formats: A list or tuple of date format strings, in the order in which they should be tried. Defaults to ``'%Y-%m-%d'``, ``'%Y-%m-%dT%H:%M:%S'``, ``'%Y-%m-%d %H:%M:%S'``. """ name = "datetime" def __init__(self, formats: t.Optional[t.Sequence[str]] = None): self.formats: t.Sequence[str] = formats or [ "%Y-%m-%d", "%Y-%m-%dT%H:%M:%S", "%Y-%m-%d %H:%M:%S", ] def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict["formats"] = self.formats return info_dict def get_metavar(self, param: "Parameter") -> str: return f"[{'|'.join(self.formats)}]" def _try_to_convert_date(self, value: t.Any, format: str) -> t.Optional[datetime]: try: return datetime.strptime(value, format) except ValueError: return None def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: if isinstance(value, datetime): return value for format in self.formats: converted = self._try_to_convert_date(value, format) if converted is not None: return converted formats_str = ", ".join(map(repr, self.formats)) self.fail( ngettext( "{value!r} does not match the format {format}.", "{value!r} does not match the formats {formats}.", len(self.formats), ).format(value=value, format=formats_str, formats=formats_str), param, ctx, ) def __repr__(self) -> str: return "DateTime" class _NumberParamTypeBase(ParamType): _number_class: t.ClassVar[t.Type[t.Any]] def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: try: return self._number_class(value) except ValueError: self.fail( _("{value!r} is not a valid {number_type}.").format( value=value, number_type=self.name ), param, ctx, ) class _NumberRangeBase(_NumberParamTypeBase): def __init__( self, min: t.Optional[float] = None, max: t.Optional[float] = None, min_open: bool = False, max_open: bool = False, clamp: bool = False, ) -> None: self.min = min self.max = max self.min_open = min_open self.max_open = max_open self.clamp = clamp def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict.update( min=self.min, max=self.max, min_open=self.min_open, max_open=self.max_open, clamp=self.clamp, ) return info_dict def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: import operator rv = super().convert(value, param, ctx) lt_min: bool = self.min is not None and ( operator.le if self.min_open else operator.lt )(rv, self.min) gt_max: bool = self.max is not None and ( operator.ge if self.max_open else operator.gt )(rv, self.max) if self.clamp: if lt_min: return self._clamp(self.min, 1, self.min_open) # type: ignore if gt_max: return self._clamp(self.max, -1, self.max_open) # type: ignore if lt_min or gt_max: self.fail( _("{value} is not in the range {range}.").format( value=rv, range=self._describe_range() ), param, ctx, ) return rv def _clamp(self, bound: float, dir: "te.Literal[1, -1]", open: bool) -> float: """Find the valid value to clamp to bound in the given direction. :param bound: The boundary value. :param dir: 1 or -1 indicating the direction to move. :param open: If true, the range does not include the bound. """ raise NotImplementedError def _describe_range(self) -> str: """Describe the range for use in help text.""" if self.min is None: op = "<" if self.max_open else "<=" return f"x{op}{self.max}" if self.max is None: op = ">" if self.min_open else ">=" return f"x{op}{self.min}" lop = "<" if self.min_open else "<=" rop = "<" if self.max_open else "<=" return f"{self.min}{lop}x{rop}{self.max}" def __repr__(self) -> str: clamp = " clamped" if self.clamp else "" return f"<{type(self).__name__} {self._describe_range()}{clamp}>" class IntParamType(_NumberParamTypeBase): name = "integer" _number_class = int def __repr__(self) -> str: return "INT" class IntRange(_NumberRangeBase, IntParamType): """Restrict an :data:`click.INT` value to a range of accepted values. See :ref:`ranges`. If ``min`` or ``max`` are not passed, any value is accepted in that direction. If ``min_open`` or ``max_open`` are enabled, the corresponding boundary is not included in the range. If ``clamp`` is enabled, a value outside the range is clamped to the boundary instead of failing. .. versionchanged:: 8.0 Added the ``min_open`` and ``max_open`` parameters. """ name = "integer range" def _clamp( # type: ignore self, bound: int, dir: "te.Literal[1, -1]", open: bool ) -> int: if not open: return bound return bound + dir class FloatParamType(_NumberParamTypeBase): name = "float" _number_class = float def __repr__(self) -> str: return "FLOAT" class FloatRange(_NumberRangeBase, FloatParamType): """Restrict a :data:`click.FLOAT` value to a range of accepted values. See :ref:`ranges`. If ``min`` or ``max`` are not passed, any value is accepted in that direction. If ``min_open`` or ``max_open`` are enabled, the corresponding boundary is not included in the range. If ``clamp`` is enabled, a value outside the range is clamped to the boundary instead of failing. This is not supported if either boundary is marked ``open``. .. versionchanged:: 8.0 Added the ``min_open`` and ``max_open`` parameters. """ name = "float range" def __init__( self, min: t.Optional[float] = None, max: t.Optional[float] = None, min_open: bool = False, max_open: bool = False, clamp: bool = False, ) -> None: super().__init__( min=min, max=max, min_open=min_open, max_open=max_open, clamp=clamp ) if (min_open or max_open) and clamp: raise TypeError("Clamping is not supported for open bounds.") def _clamp(self, bound: float, dir: "te.Literal[1, -1]", open: bool) -> float: if not open: return bound # Could use Python 3.9's math.nextafter here, but clamping an # open float range doesn't seem to be particularly useful. It's # left up to the user to write a callback to do it if needed. raise RuntimeError("Clamping is not supported for open bounds.") class BoolParamType(ParamType): name = "boolean" def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: if value in {False, True}: return bool(value) norm = value.strip().lower() if norm in {"1", "true", "t", "yes", "y", "on"}: return True if norm in {"0", "false", "f", "no", "n", "off"}: return False self.fail( _("{value!r} is not a valid boolean.").format(value=value), param, ctx ) def __repr__(self) -> str: return "BOOL" class UUIDParameterType(ParamType): name = "uuid" def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: import uuid if isinstance(value, uuid.UUID): return value value = value.strip() try: return uuid.UUID(value) except ValueError: self.fail( _("{value!r} is not a valid UUID.").format(value=value), param, ctx ) def __repr__(self) -> str: return "UUID" class File(ParamType): """Declares a parameter to be a file for reading or writing. The file is automatically closed once the context tears down (after the command finished working). Files can be opened for reading or writing. The special value ``-`` indicates stdin or stdout depending on the mode. By default, the file is opened for reading text data, but it can also be opened in binary mode or for writing. The encoding parameter can be used to force a specific encoding. The `lazy` flag controls if the file should be opened immediately or upon first IO. The default is to be non-lazy for standard input and output streams as well as files opened for reading, `lazy` otherwise. When opening a file lazily for reading, it is still opened temporarily for validation, but will not be held open until first IO. lazy is mainly useful when opening for writing to avoid creating the file until it is needed. Files can also be opened atomically in which case all writes go into a separate file in the same folder and upon completion the file will be moved over to the original location. This is useful if a file regularly read by other users is modified. See :ref:`file-args` for more information. .. versionchanged:: 2.0 Added the ``atomic`` parameter. """ name = "filename" envvar_list_splitter: t.ClassVar[str] = os.path.pathsep def __init__( self, mode: str = "r", encoding: t.Optional[str] = None, errors: t.Optional[str] = "strict", lazy: t.Optional[bool] = None, atomic: bool = False, ) -> None: self.mode = mode self.encoding = encoding self.errors = errors self.lazy = lazy self.atomic = atomic def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict.update(mode=self.mode, encoding=self.encoding) return info_dict def resolve_lazy_flag(self, value: "t.Union[str, os.PathLike[str]]") -> bool: if self.lazy is not None: return self.lazy if os.fspath(value) == "-": return False elif "w" in self.mode: return True return False def convert( self, value: t.Union[str, "os.PathLike[str]", t.IO[t.Any]], param: t.Optional["Parameter"], ctx: t.Optional["Context"], ) -> t.IO[t.Any]: if _is_file_like(value): return value value = t.cast("t.Union[str, os.PathLike[str]]", value) try: lazy = self.resolve_lazy_flag(value) if lazy: lf = LazyFile( value, self.mode, self.encoding, self.errors, atomic=self.atomic ) if ctx is not None: ctx.call_on_close(lf.close_intelligently) return t.cast(t.IO[t.Any], lf) f, should_close = open_stream( value, self.mode, self.encoding, self.errors, atomic=self.atomic ) # If a context is provided, we automatically close the file # at the end of the context execution (or flush out). If a # context does not exist, it's the caller's responsibility to # properly close the file. This for instance happens when the # type is used with prompts. if ctx is not None: if should_close: ctx.call_on_close(safecall(f.close)) else: ctx.call_on_close(safecall(f.flush)) return f except OSError as e: self.fail(f"'{format_filename(value)}': {e.strerror}", param, ctx) def shell_complete( self, ctx: "Context", param: "Parameter", incomplete: str ) -> t.List["CompletionItem"]: """Return a special completion marker that tells the completion system to use the shell to provide file path completions. :param ctx: Invocation context for this command. :param param: The parameter that is requesting completion. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ from click.shell_completion import CompletionItem return [CompletionItem(incomplete, type="file")] def _is_file_like(value: t.Any) -> "te.TypeGuard[t.IO[t.Any]]": return hasattr(value, "read") or hasattr(value, "write") class Path(ParamType): """The ``Path`` type is similar to the :class:`File` type, but returns the filename instead of an open file. Various checks can be enabled to validate the type of file and permissions. :param exists: The file or directory needs to exist for the value to be valid. If this is not set to ``True``, and the file does not exist, then all further checks are silently skipped. :param file_okay: Allow a file as a value. :param dir_okay: Allow a directory as a value. :param readable: if true, a readable check is performed. :param writable: if true, a writable check is performed. :param executable: if true, an executable check is performed. :param resolve_path: Make the value absolute and resolve any symlinks. A ``~`` is not expanded, as this is supposed to be done by the shell only. :param allow_dash: Allow a single dash as a value, which indicates a standard stream (but does not open it). Use :func:`~click.open_file` to handle opening this value. :param path_type: Convert the incoming path value to this type. If ``None``, keep Python's default, which is ``str``. Useful to convert to :class:`pathlib.Path`. .. versionchanged:: 8.1 Added the ``executable`` parameter. .. versionchanged:: 8.0 Allow passing ``path_type=pathlib.Path``. .. versionchanged:: 6.0 Added the ``allow_dash`` parameter. """ envvar_list_splitter: t.ClassVar[str] = os.path.pathsep def __init__( self, exists: bool = False, file_okay: bool = True, dir_okay: bool = True, writable: bool = False, readable: bool = True, resolve_path: bool = False, allow_dash: bool = False, path_type: t.Optional[t.Type[t.Any]] = None, executable: bool = False, ): self.exists = exists self.file_okay = file_okay self.dir_okay = dir_okay self.readable = readable self.writable = writable self.executable = executable self.resolve_path = resolve_path self.allow_dash = allow_dash self.type = path_type if self.file_okay and not self.dir_okay: self.name: str = _("file") elif self.dir_okay and not self.file_okay: self.name = _("directory") else: self.name = _("path") def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict.update( exists=self.exists, file_okay=self.file_okay, dir_okay=self.dir_okay, writable=self.writable, readable=self.readable, allow_dash=self.allow_dash, ) return info_dict def coerce_path_result( self, value: "t.Union[str, os.PathLike[str]]" ) -> "t.Union[str, bytes, os.PathLike[str]]": if self.type is not None and not isinstance(value, self.type): if self.type is str: return os.fsdecode(value) elif self.type is bytes: return os.fsencode(value) else: return t.cast("os.PathLike[str]", self.type(value)) return value def convert( self, value: "t.Union[str, os.PathLike[str]]", param: t.Optional["Parameter"], ctx: t.Optional["Context"], ) -> "t.Union[str, bytes, os.PathLike[str]]": rv = value is_dash = self.file_okay and self.allow_dash and rv in (b"-", "-") if not is_dash: if self.resolve_path: # os.path.realpath doesn't resolve symlinks on Windows # until Python 3.8. Use pathlib for now. import pathlib rv = os.fsdecode(pathlib.Path(rv).resolve()) try: st = os.stat(rv) except OSError: if not self.exists: return self.coerce_path_result(rv) self.fail( _("{name} {filename!r} does not exist.").format( name=self.name.title(), filename=format_filename(value) ), param, ctx, ) if not self.file_okay and stat.S_ISREG(st.st_mode): self.fail( _("{name} {filename!r} is a file.").format( name=self.name.title(), filename=format_filename(value) ), param, ctx, ) if not self.dir_okay and stat.S_ISDIR(st.st_mode): self.fail( _("{name} {filename!r} is a directory.").format( name=self.name.title(), filename=format_filename(value) ), param, ctx, ) if self.readable and not os.access(rv, os.R_OK): self.fail( _("{name} {filename!r} is not readable.").format( name=self.name.title(), filename=format_filename(value) ), param, ctx, ) if self.writable and not os.access(rv, os.W_OK): self.fail( _("{name} {filename!r} is not writable.").format( name=self.name.title(), filename=format_filename(value) ), param, ctx, ) if self.executable and not os.access(value, os.X_OK): self.fail( _("{name} {filename!r} is not executable.").format( name=self.name.title(), filename=format_filename(value) ), param, ctx, ) return self.coerce_path_result(rv) def shell_complete( self, ctx: "Context", param: "Parameter", incomplete: str ) -> t.List["CompletionItem"]: """Return a special completion marker that tells the completion system to use the shell to provide path completions for only directories or any paths. :param ctx: Invocation context for this command. :param param: The parameter that is requesting completion. :param incomplete: Value being completed. May be empty. .. versionadded:: 8.0 """ from click.shell_completion import CompletionItem type = "dir" if self.dir_okay and not self.file_okay else "file" return [CompletionItem(incomplete, type=type)] class Tuple(CompositeParamType): """The default behavior of Click is to apply a type on a value directly. This works well in most cases, except for when `nargs` is set to a fixed count and different types should be used for different items. In this case the :class:`Tuple` type can be used. This type can only be used if `nargs` is set to a fixed number. For more information see :ref:`tuple-type`. This can be selected by using a Python tuple literal as a type. :param types: a list of types that should be used for the tuple items. """ def __init__(self, types: t.Sequence[t.Union[t.Type[t.Any], ParamType]]) -> None: self.types: t.Sequence[ParamType] = [convert_type(ty) for ty in types] def to_info_dict(self) -> t.Dict[str, t.Any]: info_dict = super().to_info_dict() info_dict["types"] = [t.to_info_dict() for t in self.types] return info_dict @property def name(self) -> str: # type: ignore return f"<{' '.join(ty.name for ty in self.types)}>" @property def arity(self) -> int: # type: ignore return len(self.types) def convert( self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] ) -> t.Any: len_type = len(self.types) len_value = len(value) if len_value != len_type: self.fail( ngettext( "{len_type} values are required, but {len_value} was given.", "{len_type} values are required, but {len_value} were given.", len_value, ).format(len_type=len_type, len_value=len_value), param=param, ctx=ctx, ) return tuple(ty(x, param, ctx) for ty, x in zip(self.types, value)) def convert_type(ty: t.Optional[t.Any], default: t.Optional[t.Any] = None) -> ParamType: """Find the most appropriate :class:`ParamType` for the given Python type. If the type isn't provided, it can be inferred from a default value. """ guessed_type = False if ty is None and default is not None: if isinstance(default, (tuple, list)): # If the default is empty, ty will remain None and will # return STRING. if default: item = default[0] # A tuple of tuples needs to detect the inner types. # Can't call convert recursively because that would # incorrectly unwind the tuple to a single type. if isinstance(item, (tuple, list)): ty = tuple(map(type, item)) else: ty = type(item) else: ty = type(default) guessed_type = True if isinstance(ty, tuple): return Tuple(ty) if isinstance(ty, ParamType): return ty if ty is str or ty is None: return STRING if ty is int: return INT if ty is float: return FLOAT if ty is bool: return BOOL if guessed_type: return STRING if __debug__: try: if issubclass(ty, ParamType): raise AssertionError( f"Attempted to use an uninstantiated parameter type ({ty})." ) except TypeError: # ty is an instance (correct), so issubclass fails. pass return FuncParamType(ty) #: A dummy parameter type that just does nothing. From a user's #: perspective this appears to just be the same as `STRING` but #: internally no string conversion takes place if the input was bytes. #: This is usually useful when working with file paths as they can #: appear in bytes and unicode. #: #: For path related uses the :class:`Path` type is a better choice but #: there are situations where an unprocessed type is useful which is why #: it is is provided. #: #: .. versionadded:: 4.0 UNPROCESSED = UnprocessedParamType() #: A unicode string parameter type which is the implicit default. This #: can also be selected by using ``str`` as type. STRING = StringParamType() #: An integer parameter. This can also be selected by using ``int`` as #: type. INT = IntParamType() #: A floating point value parameter. This can also be selected by using #: ``float`` as type. FLOAT = FloatParamType() #: A boolean parameter. This is the default for boolean flags. This can #: also be selected by using ``bool`` as a type. BOOL = BoolParamType() #: A UUID parameter. UUID = UUIDParameterType() ================================================ FILE: libs/click/utils.py ================================================ import os import re import sys import typing as t from functools import update_wrapper from types import ModuleType from types import TracebackType from ._compat import _default_text_stderr from ._compat import _default_text_stdout from ._compat import _find_binary_writer from ._compat import auto_wrap_for_ansi from ._compat import binary_streams from ._compat import open_stream from ._compat import should_strip_ansi from ._compat import strip_ansi from ._compat import text_streams from ._compat import WIN from .globals import resolve_color_default if t.TYPE_CHECKING: import typing_extensions as te P = te.ParamSpec("P") R = t.TypeVar("R") def _posixify(name: str) -> str: return "-".join(name.split()).lower() def safecall(func: "t.Callable[P, R]") -> "t.Callable[P, t.Optional[R]]": """Wraps a function so that it swallows exceptions.""" def wrapper(*args: "P.args", **kwargs: "P.kwargs") -> t.Optional[R]: try: return func(*args, **kwargs) except Exception: pass return None return update_wrapper(wrapper, func) def make_str(value: t.Any) -> str: """Converts a value into a valid string.""" if isinstance(value, bytes): try: return value.decode(sys.getfilesystemencoding()) except UnicodeError: return value.decode("utf-8", "replace") return str(value) def make_default_short_help(help: str, max_length: int = 45) -> str: """Returns a condensed version of help string.""" # Consider only the first paragraph. paragraph_end = help.find("\n\n") if paragraph_end != -1: help = help[:paragraph_end] # Collapse newlines, tabs, and spaces. words = help.split() if not words: return "" # The first paragraph started with a "no rewrap" marker, ignore it. if words[0] == "\b": words = words[1:] total_length = 0 last_index = len(words) - 1 for i, word in enumerate(words): total_length += len(word) + (i > 0) if total_length > max_length: # too long, truncate break if word[-1] == ".": # sentence end, truncate without "..." return " ".join(words[: i + 1]) if total_length == max_length and i != last_index: break # not at sentence end, truncate with "..." else: return " ".join(words) # no truncation needed # Account for the length of the suffix. total_length += len("...") # remove words until the length is short enough while i > 0: total_length -= len(words[i]) + (i > 0) if total_length <= max_length: break i -= 1 return " ".join(words[:i]) + "..." class LazyFile: """A lazy file works like a regular file but it does not fully open the file but it does perform some basic checks early to see if the filename parameter does make sense. This is useful for safely opening files for writing. """ def __init__( self, filename: t.Union[str, "os.PathLike[str]"], mode: str = "r", encoding: t.Optional[str] = None, errors: t.Optional[str] = "strict", atomic: bool = False, ): self.name: str = os.fspath(filename) self.mode = mode self.encoding = encoding self.errors = errors self.atomic = atomic self._f: t.Optional[t.IO[t.Any]] self.should_close: bool if self.name == "-": self._f, self.should_close = open_stream(filename, mode, encoding, errors) else: if "r" in mode: # Open and close the file in case we're opening it for # reading so that we can catch at least some errors in # some cases early. open(filename, mode).close() self._f = None self.should_close = True def __getattr__(self, name: str) -> t.Any: return getattr(self.open(), name) def __repr__(self) -> str: if self._f is not None: return repr(self._f) return f"" def open(self) -> t.IO[t.Any]: """Opens the file if it's not yet open. This call might fail with a :exc:`FileError`. Not handling this error will produce an error that Click shows. """ if self._f is not None: return self._f try: rv, self.should_close = open_stream( self.name, self.mode, self.encoding, self.errors, atomic=self.atomic ) except OSError as e: from .exceptions import FileError raise FileError(self.name, hint=e.strerror) from e self._f = rv return rv def close(self) -> None: """Closes the underlying file, no matter what.""" if self._f is not None: self._f.close() def close_intelligently(self) -> None: """This function only closes the file if it was opened by the lazy file wrapper. For instance this will never close stdin. """ if self.should_close: self.close() def __enter__(self) -> "LazyFile": return self def __exit__( self, exc_type: t.Optional[t.Type[BaseException]], exc_value: t.Optional[BaseException], tb: t.Optional[TracebackType], ) -> None: self.close_intelligently() def __iter__(self) -> t.Iterator[t.AnyStr]: self.open() return iter(self._f) # type: ignore class KeepOpenFile: def __init__(self, file: t.IO[t.Any]) -> None: self._file: t.IO[t.Any] = file def __getattr__(self, name: str) -> t.Any: return getattr(self._file, name) def __enter__(self) -> "KeepOpenFile": return self def __exit__( self, exc_type: t.Optional[t.Type[BaseException]], exc_value: t.Optional[BaseException], tb: t.Optional[TracebackType], ) -> None: pass def __repr__(self) -> str: return repr(self._file) def __iter__(self) -> t.Iterator[t.AnyStr]: return iter(self._file) def echo( message: t.Optional[t.Any] = None, file: t.Optional[t.IO[t.Any]] = None, nl: bool = True, err: bool = False, color: t.Optional[bool] = None, ) -> None: """Print a message and newline to stdout or a file. This should be used instead of :func:`print` because it provides better support for different data, files, and environments. Compared to :func:`print`, this does the following: - Ensures that the output encoding is not misconfigured on Linux. - Supports Unicode in the Windows console. - Supports writing to binary outputs, and supports writing bytes to text outputs. - Supports colors and styles on Windows. - Removes ANSI color and style codes if the output does not look like an interactive terminal. - Always flushes the output. :param message: The string or bytes to output. Other objects are converted to strings. :param file: The file to write to. Defaults to ``stdout``. :param err: Write to ``stderr`` instead of ``stdout``. :param nl: Print a newline after the message. Enabled by default. :param color: Force showing or hiding colors and other styles. By default Click will remove color if the output does not look like an interactive terminal. .. versionchanged:: 6.0 Support Unicode output on the Windows console. Click does not modify ``sys.stdout``, so ``sys.stdout.write()`` and ``print()`` will still not support Unicode. .. versionchanged:: 4.0 Added the ``color`` parameter. .. versionadded:: 3.0 Added the ``err`` parameter. .. versionchanged:: 2.0 Support colors on Windows if colorama is installed. """ if file is None: if err: file = _default_text_stderr() else: file = _default_text_stdout() # There are no standard streams attached to write to. For example, # pythonw on Windows. if file is None: return # Convert non bytes/text into the native string type. if message is not None and not isinstance(message, (str, bytes, bytearray)): out: t.Optional[t.Union[str, bytes]] = str(message) else: out = message if nl: out = out or "" if isinstance(out, str): out += "\n" else: out += b"\n" if not out: file.flush() return # If there is a message and the value looks like bytes, we manually # need to find the binary stream and write the message in there. # This is done separately so that most stream types will work as you # would expect. Eg: you can write to StringIO for other cases. if isinstance(out, (bytes, bytearray)): binary_file = _find_binary_writer(file) if binary_file is not None: file.flush() binary_file.write(out) binary_file.flush() return # ANSI style code support. For no message or bytes, nothing happens. # When outputting to a file instead of a terminal, strip codes. else: color = resolve_color_default(color) if should_strip_ansi(file, color): out = strip_ansi(out) elif WIN: if auto_wrap_for_ansi is not None: file = auto_wrap_for_ansi(file, color) # type: ignore elif not color: out = strip_ansi(out) file.write(out) # type: ignore file.flush() def get_binary_stream(name: "te.Literal['stdin', 'stdout', 'stderr']") -> t.BinaryIO: """Returns a system stream for byte processing. :param name: the name of the stream to open. Valid names are ``'stdin'``, ``'stdout'`` and ``'stderr'`` """ opener = binary_streams.get(name) if opener is None: raise TypeError(f"Unknown standard stream '{name}'") return opener() def get_text_stream( name: "te.Literal['stdin', 'stdout', 'stderr']", encoding: t.Optional[str] = None, errors: t.Optional[str] = "strict", ) -> t.TextIO: """Returns a system stream for text processing. This usually returns a wrapped stream around a binary stream returned from :func:`get_binary_stream` but it also can take shortcuts for already correctly configured streams. :param name: the name of the stream to open. Valid names are ``'stdin'``, ``'stdout'`` and ``'stderr'`` :param encoding: overrides the detected default encoding. :param errors: overrides the default error mode. """ opener = text_streams.get(name) if opener is None: raise TypeError(f"Unknown standard stream '{name}'") return opener(encoding, errors) def open_file( filename: t.Union[str, "os.PathLike[str]"], mode: str = "r", encoding: t.Optional[str] = None, errors: t.Optional[str] = "strict", lazy: bool = False, atomic: bool = False, ) -> t.IO[t.Any]: """Open a file, with extra behavior to handle ``'-'`` to indicate a standard stream, lazy open on write, and atomic write. Similar to the behavior of the :class:`~click.File` param type. If ``'-'`` is given to open ``stdout`` or ``stdin``, the stream is wrapped so that using it in a context manager will not close it. This makes it possible to use the function without accidentally closing a standard stream: .. code-block:: python with open_file(filename) as f: ... :param filename: The name or Path of the file to open, or ``'-'`` for ``stdin``/``stdout``. :param mode: The mode in which to open the file. :param encoding: The encoding to decode or encode a file opened in text mode. :param errors: The error handling mode. :param lazy: Wait to open the file until it is accessed. For read mode, the file is temporarily opened to raise access errors early, then closed until it is read again. :param atomic: Write to a temporary file and replace the given file on close. .. versionadded:: 3.0 """ if lazy: return t.cast( t.IO[t.Any], LazyFile(filename, mode, encoding, errors, atomic=atomic) ) f, should_close = open_stream(filename, mode, encoding, errors, atomic=atomic) if not should_close: f = t.cast(t.IO[t.Any], KeepOpenFile(f)) return f def format_filename( filename: "t.Union[str, bytes, os.PathLike[str], os.PathLike[bytes]]", shorten: bool = False, ) -> str: """Format a filename as a string for display. Ensures the filename can be displayed by replacing any invalid bytes or surrogate escapes in the name with the replacement character ``�``. Invalid bytes or surrogate escapes will raise an error when written to a stream with ``errors="strict"``. This will typically happen with ``stdout`` when the locale is something like ``en_GB.UTF-8``. Many scenarios *are* safe to write surrogates though, due to PEP 538 and PEP 540, including: - Writing to ``stderr``, which uses ``errors="backslashreplace"``. - The system has ``LANG=C.UTF-8``, ``C``, or ``POSIX``. Python opens stdout and stderr with ``errors="surrogateescape"``. - None of ``LANG/LC_*`` are set. Python assumes ``LANG=C.UTF-8``. - Python is started in UTF-8 mode with ``PYTHONUTF8=1`` or ``-X utf8``. Python opens stdout and stderr with ``errors="surrogateescape"``. :param filename: formats a filename for UI display. This will also convert the filename into unicode without failing. :param shorten: this optionally shortens the filename to strip of the path that leads up to it. """ if shorten: filename = os.path.basename(filename) else: filename = os.fspath(filename) if isinstance(filename, bytes): filename = filename.decode(sys.getfilesystemencoding(), "replace") else: filename = filename.encode("utf-8", "surrogateescape").decode( "utf-8", "replace" ) return filename def get_app_dir(app_name: str, roaming: bool = True, force_posix: bool = False) -> str: r"""Returns the config folder for the application. The default behavior is to return whatever is most appropriate for the operating system. To give you an idea, for an app called ``"Foo Bar"``, something like the following folders could be returned: Mac OS X: ``~/Library/Application Support/Foo Bar`` Mac OS X (POSIX): ``~/.foo-bar`` Unix: ``~/.config/foo-bar`` Unix (POSIX): ``~/.foo-bar`` Windows (roaming): ``C:\Users\\AppData\Roaming\Foo Bar`` Windows (not roaming): ``C:\Users\\AppData\Local\Foo Bar`` .. versionadded:: 2.0 :param app_name: the application name. This should be properly capitalized and can contain whitespace. :param roaming: controls if the folder should be roaming or not on Windows. Has no effect otherwise. :param force_posix: if this is set to `True` then on any POSIX system the folder will be stored in the home folder with a leading dot instead of the XDG config home or darwin's application support folder. """ if WIN: key = "APPDATA" if roaming else "LOCALAPPDATA" folder = os.environ.get(key) if folder is None: folder = os.path.expanduser("~") return os.path.join(folder, app_name) if force_posix: return os.path.join(os.path.expanduser(f"~/.{_posixify(app_name)}")) if sys.platform == "darwin": return os.path.join( os.path.expanduser("~/Library/Application Support"), app_name ) return os.path.join( os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), _posixify(app_name), ) class PacifyFlushWrapper: """This wrapper is used to catch and suppress BrokenPipeErrors resulting from ``.flush()`` being called on broken pipe during the shutdown/final-GC of the Python interpreter. Notably ``.flush()`` is always called on ``sys.stdout`` and ``sys.stderr``. So as to have minimal impact on any other cleanup code, and the case where the underlying file is not a broken pipe, all calls and attributes are proxied. """ def __init__(self, wrapped: t.IO[t.Any]) -> None: self.wrapped = wrapped def flush(self) -> None: try: self.wrapped.flush() except OSError as e: import errno if e.errno != errno.EPIPE: raise def __getattr__(self, attr: str) -> t.Any: return getattr(self.wrapped, attr) def _detect_program_name( path: t.Optional[str] = None, _main: t.Optional[ModuleType] = None ) -> str: """Determine the command used to run the program, for use in help text. If a file or entry point was executed, the file name is returned. If ``python -m`` was used to execute a module or package, ``python -m name`` is returned. This doesn't try to be too precise, the goal is to give a concise name for help text. Files are only shown as their name without the path. ``python`` is only shown for modules, and the full path to ``sys.executable`` is not shown. :param path: The Python file being executed. Python puts this in ``sys.argv[0]``, which is used by default. :param _main: The ``__main__`` module. This should only be passed during internal testing. .. versionadded:: 8.0 Based on command args detection in the Werkzeug reloader. :meta private: """ if _main is None: _main = sys.modules["__main__"] if not path: path = sys.argv[0] # The value of __package__ indicates how Python was called. It may # not exist if a setuptools script is installed as an egg. It may be # set incorrectly for entry points created with pip on Windows. # It is set to "" inside a Shiv or PEX zipapp. if getattr(_main, "__package__", None) in {None, ""} or ( os.name == "nt" and _main.__package__ == "" and not os.path.exists(path) and os.path.exists(f"{path}.exe") ): # Executed a file, like "python app.py". return os.path.basename(path) # Executed a module, like "python -m example". # Rewritten by Python from "-m script" to "/path/to/script.py". # Need to look at main module to determine how it was executed. py_module = t.cast(str, _main.__package__) name = os.path.splitext(os.path.basename(path))[0] # A submodule like "example.cli". if name != "__main__": py_module = f"{py_module}.{name}" return f"python -m {py_module.lstrip('.')}" def _expand_args( args: t.Iterable[str], *, user: bool = True, env: bool = True, glob_recursive: bool = True, ) -> t.List[str]: """Simulate Unix shell expansion with Python functions. See :func:`glob.glob`, :func:`os.path.expanduser`, and :func:`os.path.expandvars`. This is intended for use on Windows, where the shell does not do any expansion. It may not exactly match what a Unix shell would do. :param args: List of command line arguments to expand. :param user: Expand user home directory. :param env: Expand environment variables. :param glob_recursive: ``**`` matches directories recursively. .. versionchanged:: 8.1 Invalid glob patterns are treated as empty expansions rather than raising an error. .. versionadded:: 8.0 :meta private: """ from glob import glob out = [] for arg in args: if user: arg = os.path.expanduser(arg) if env: arg = os.path.expandvars(arg) try: matches = glob(arg, recursive=glob_recursive) except re.error: matches = [] if not matches: out.append(arg) else: out.extend(matches) return out ================================================ FILE: libs/click-8.1.8.dist-info/LICENSE.txt ================================================ Copyright 2014 Pallets Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: libs/click-8.1.8.dist-info/METADATA ================================================ Metadata-Version: 2.3 Name: click Version: 8.1.8 Summary: Composable command line interface toolkit Maintainer-email: Pallets Requires-Python: >=3.7 Description-Content-Type: text/markdown Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Typing :: Typed Requires-Dist: colorama; platform_system == 'Windows' Requires-Dist: importlib-metadata; python_version < '3.8' Project-URL: Changes, https://click.palletsprojects.com/changes/ Project-URL: Chat, https://discord.gg/pallets Project-URL: Documentation, https://click.palletsprojects.com/ Project-URL: Donate, https://palletsprojects.com/donate Project-URL: Source, https://github.com/pallets/click/ # $ click_ Click is a Python package for creating beautiful command line interfaces in a composable way with as little code as necessary. It's the "Command Line Interface Creation Kit". It's highly configurable but comes with sensible defaults out of the box. It aims to make the process of writing command line tools quick and fun while also preventing any frustration caused by the inability to implement an intended CLI API. Click in three points: - Arbitrary nesting of commands - Automatic help page generation - Supports lazy loading of subcommands at runtime ## A Simple Example ```python import click @click.command() @click.option("--count", default=1, help="Number of greetings.") @click.option("--name", prompt="Your name", help="The person to greet.") def hello(count, name): """Simple program that greets NAME for a total of COUNT times.""" for _ in range(count): click.echo(f"Hello, {name}!") if __name__ == '__main__': hello() ``` ``` $ python hello.py --count=3 Your name: Click Hello, Click! Hello, Click! Hello, Click! ``` ## Donate The Pallets organization develops and supports Click and other popular packages. In order to grow the community of contributors and users, and allow the maintainers to devote more time to the projects, [please donate today][]. [please donate today]: https://palletsprojects.com/donate ================================================ FILE: libs/click-8.1.8.dist-info/RECORD ================================================ click/__init__.py,sha256=j1DJeCbga4ribkv5uyvIAzI0oFN13fW9mevDKShFelo,3188 click/_compat.py,sha256=IGKh_J5QdfKELitnRfTGHneejWxoCw_NX9tfMbdcg3w,18730 click/_termui_impl.py,sha256=a5z7I9gOFeMmu7Gb6_RPyQ8GPuVP1EeblixcWSPSQPk,24783 click/_textwrap.py,sha256=10fQ64OcBUMuK7mFvh8363_uoOxPlRItZBmKzRJDgoY,1353 click/_winconsole.py,sha256=5ju3jQkcZD0W27WEMGqmEP4y_crUVzPCqsX_FYb7BO0,7860 click/core.py,sha256=Q1nEVdctZwvIPOlt4vfHko0TYnHCeE40UEEul8Wpyvs,114748 click/decorators.py,sha256=7t6F-QWowtLh6F_6l-4YV4Y4yNTcqFQEu9i37zIz68s,18925 click/exceptions.py,sha256=V7zDT6emqJ8iNl0kF1P5kpFmLMWQ1T1L7aNNKM4YR0w,9600 click/formatting.py,sha256=Frf0-5W33-loyY_i9qrwXR8-STnW3m5gvyxLVUdyxyk,9706 click/globals.py,sha256=cuJ6Bbo073lgEEmhjr394PeM-QFmXM-Ci-wmfsd7H5g,1954 click/parser.py,sha256=h4sndcpF5OHrZQN8vD8IWb5OByvW7ABbhRToxovrqS8,19067 click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 click/shell_completion.py,sha256=TR0dXEGcvWb9Eo3aaQEXGhnvNS3FF4H4QcuLnvAvYo4,18636 click/termui.py,sha256=dLxiS70UOvIYBda_nEEZaPAFOVDVmRs1sEPMuLDowQo,28310 click/testing.py,sha256=3RA8anCf7TZ8-5RAF5it2Te-aWXBAL5VLasQnMiC2ZQ,16282 click/types.py,sha256=BD5Qqq4h-8kawBmOIzJlmq4xzThAf4wCvaOLZSBDNx0,36422 click/utils.py,sha256=ce-IrO9ilII76LGkU354pOdHbepM8UftfNH7SfMU_28,20330 click-8.1.8.dist-info/LICENSE.txt,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 click-8.1.8.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82 click-8.1.8.dist-info/METADATA,sha256=WJtQ6uGS2ybLfvUE4vC0XIhIBr4yFGwjrMBR2fiCQ-Q,2263 click-8.1.8.dist-info/RECORD,, ================================================ FILE: libs/click-8.1.8.dist-info/WHEEL ================================================ Wheel-Version: 1.0 Generator: flit 3.10.1 Root-Is-Purelib: true Tag: py3-none-any ================================================ FILE: libs/colorama/__init__.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. from .initialise import init, deinit, reinit, colorama_text, just_fix_windows_console from .ansi import Fore, Back, Style, Cursor from .ansitowin32 import AnsiToWin32 __version__ = '0.4.6' ================================================ FILE: libs/colorama/ansi.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. ''' This module generates ANSI character codes to printing colors to terminals. See: http://en.wikipedia.org/wiki/ANSI_escape_code ''' CSI = '\033[' OSC = '\033]' BEL = '\a' def code_to_chars(code): return CSI + str(code) + 'm' def set_title(title): return OSC + '2;' + title + BEL def clear_screen(mode=2): return CSI + str(mode) + 'J' def clear_line(mode=2): return CSI + str(mode) + 'K' class AnsiCodes(object): def __init__(self): # the subclasses declare class attributes which are numbers. # Upon instantiation we define instance attributes, which are the same # as the class attributes but wrapped with the ANSI escape sequence for name in dir(self): if not name.startswith('_'): value = getattr(self, name) setattr(self, name, code_to_chars(value)) class AnsiCursor(object): def UP(self, n=1): return CSI + str(n) + 'A' def DOWN(self, n=1): return CSI + str(n) + 'B' def FORWARD(self, n=1): return CSI + str(n) + 'C' def BACK(self, n=1): return CSI + str(n) + 'D' def POS(self, x=1, y=1): return CSI + str(y) + ';' + str(x) + 'H' class AnsiFore(AnsiCodes): BLACK = 30 RED = 31 GREEN = 32 YELLOW = 33 BLUE = 34 MAGENTA = 35 CYAN = 36 WHITE = 37 RESET = 39 # These are fairly well supported, but not part of the standard. LIGHTBLACK_EX = 90 LIGHTRED_EX = 91 LIGHTGREEN_EX = 92 LIGHTYELLOW_EX = 93 LIGHTBLUE_EX = 94 LIGHTMAGENTA_EX = 95 LIGHTCYAN_EX = 96 LIGHTWHITE_EX = 97 class AnsiBack(AnsiCodes): BLACK = 40 RED = 41 GREEN = 42 YELLOW = 43 BLUE = 44 MAGENTA = 45 CYAN = 46 WHITE = 47 RESET = 49 # These are fairly well supported, but not part of the standard. LIGHTBLACK_EX = 100 LIGHTRED_EX = 101 LIGHTGREEN_EX = 102 LIGHTYELLOW_EX = 103 LIGHTBLUE_EX = 104 LIGHTMAGENTA_EX = 105 LIGHTCYAN_EX = 106 LIGHTWHITE_EX = 107 class AnsiStyle(AnsiCodes): BRIGHT = 1 DIM = 2 NORMAL = 22 RESET_ALL = 0 Fore = AnsiFore() Back = AnsiBack() Style = AnsiStyle() Cursor = AnsiCursor() ================================================ FILE: libs/colorama/ansitowin32.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. import re import sys import os from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style, BEL from .winterm import enable_vt_processing, WinTerm, WinColor, WinStyle from .win32 import windll, winapi_test winterm = None if windll is not None: winterm = WinTerm() class StreamWrapper(object): ''' Wraps a stream (such as stdout), acting as a transparent proxy for all attribute access apart from method 'write()', which is delegated to our Converter instance. ''' def __init__(self, wrapped, converter): # double-underscore everything to prevent clashes with names of # attributes on the wrapped stream object. self.__wrapped = wrapped self.__convertor = converter def __getattr__(self, name): return getattr(self.__wrapped, name) def __enter__(self, *args, **kwargs): # special method lookup bypasses __getattr__/__getattribute__, see # https://stackoverflow.com/questions/12632894/why-doesnt-getattr-work-with-exit # thus, contextlib magic methods are not proxied via __getattr__ return self.__wrapped.__enter__(*args, **kwargs) def __exit__(self, *args, **kwargs): return self.__wrapped.__exit__(*args, **kwargs) def __setstate__(self, state): self.__dict__ = state def __getstate__(self): return self.__dict__ def write(self, text): self.__convertor.write(text) def isatty(self): stream = self.__wrapped if 'PYCHARM_HOSTED' in os.environ: if stream is not None and (stream is sys.__stdout__ or stream is sys.__stderr__): return True try: stream_isatty = stream.isatty except AttributeError: return False else: return stream_isatty() @property def closed(self): stream = self.__wrapped try: return stream.closed # AttributeError in the case that the stream doesn't support being closed # ValueError for the case that the stream has already been detached when atexit runs except (AttributeError, ValueError): return True class AnsiToWin32(object): ''' Implements a 'write()' method which, on Windows, will strip ANSI character sequences from the text, and if outputting to a tty, will convert them into win32 function calls. ''' ANSI_CSI_RE = re.compile('\001?\033\\[((?:\\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer ANSI_OSC_RE = re.compile('\001?\033\\]([^\a]*)(\a)\002?') # Operating System Command def __init__(self, wrapped, convert=None, strip=None, autoreset=False): # The wrapped stream (normally sys.stdout or sys.stderr) self.wrapped = wrapped # should we reset colors to defaults after every .write() self.autoreset = autoreset # create the proxy wrapping our output stream self.stream = StreamWrapper(wrapped, self) on_windows = os.name == 'nt' # We test if the WinAPI works, because even if we are on Windows # we may be using a terminal that doesn't support the WinAPI # (e.g. Cygwin Terminal). In this case it's up to the terminal # to support the ANSI codes. conversion_supported = on_windows and winapi_test() try: fd = wrapped.fileno() except Exception: fd = -1 system_has_native_ansi = not on_windows or enable_vt_processing(fd) have_tty = not self.stream.closed and self.stream.isatty() need_conversion = conversion_supported and not system_has_native_ansi # should we strip ANSI sequences from our output? if strip is None: strip = need_conversion or not have_tty self.strip = strip # should we should convert ANSI sequences into win32 calls? if convert is None: convert = need_conversion and have_tty self.convert = convert # dict of ansi codes to win32 functions and parameters self.win32_calls = self.get_win32_calls() # are we wrapping stderr? self.on_stderr = self.wrapped is sys.stderr def should_wrap(self): ''' True if this class is actually needed. If false, then the output stream will not be affected, nor will win32 calls be issued, so wrapping stdout is not actually required. This will generally be False on non-Windows platforms, unless optional functionality like autoreset has been requested using kwargs to init() ''' return self.convert or self.strip or self.autoreset def get_win32_calls(self): if self.convert and winterm: return { AnsiStyle.RESET_ALL: (winterm.reset_all, ), AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT), AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL), AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL), AnsiFore.BLACK: (winterm.fore, WinColor.BLACK), AnsiFore.RED: (winterm.fore, WinColor.RED), AnsiFore.GREEN: (winterm.fore, WinColor.GREEN), AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW), AnsiFore.BLUE: (winterm.fore, WinColor.BLUE), AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA), AnsiFore.CYAN: (winterm.fore, WinColor.CYAN), AnsiFore.WHITE: (winterm.fore, WinColor.GREY), AnsiFore.RESET: (winterm.fore, ), AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True), AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True), AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True), AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True), AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True), AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True), AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True), AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True), AnsiBack.BLACK: (winterm.back, WinColor.BLACK), AnsiBack.RED: (winterm.back, WinColor.RED), AnsiBack.GREEN: (winterm.back, WinColor.GREEN), AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW), AnsiBack.BLUE: (winterm.back, WinColor.BLUE), AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA), AnsiBack.CYAN: (winterm.back, WinColor.CYAN), AnsiBack.WHITE: (winterm.back, WinColor.GREY), AnsiBack.RESET: (winterm.back, ), AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True), AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True), AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True), AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True), AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True), AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True), AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True), AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True), } return dict() def write(self, text): if self.strip or self.convert: self.write_and_convert(text) else: self.wrapped.write(text) self.wrapped.flush() if self.autoreset: self.reset_all() def reset_all(self): if self.convert: self.call_win32('m', (0,)) elif not self.strip and not self.stream.closed: self.wrapped.write(Style.RESET_ALL) def write_and_convert(self, text): ''' Write the given text to our wrapped stream, stripping any ANSI sequences from the text, and optionally converting them into win32 calls. ''' cursor = 0 text = self.convert_osc(text) for match in self.ANSI_CSI_RE.finditer(text): start, end = match.span() self.write_plain_text(text, cursor, start) self.convert_ansi(*match.groups()) cursor = end self.write_plain_text(text, cursor, len(text)) def write_plain_text(self, text, start, end): if start < end: self.wrapped.write(text[start:end]) self.wrapped.flush() def convert_ansi(self, paramstring, command): if self.convert: params = self.extract_params(command, paramstring) self.call_win32(command, params) def extract_params(self, command, paramstring): if command in 'Hf': params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';')) while len(params) < 2: # defaults: params = params + (1,) else: params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0) if len(params) == 0: # defaults: if command in 'JKm': params = (0,) elif command in 'ABCD': params = (1,) return params def call_win32(self, command, params): if command == 'm': for param in params: if param in self.win32_calls: func_args = self.win32_calls[param] func = func_args[0] args = func_args[1:] kwargs = dict(on_stderr=self.on_stderr) func(*args, **kwargs) elif command in 'J': winterm.erase_screen(params[0], on_stderr=self.on_stderr) elif command in 'K': winterm.erase_line(params[0], on_stderr=self.on_stderr) elif command in 'Hf': # cursor position - absolute winterm.set_cursor_position(params, on_stderr=self.on_stderr) elif command in 'ABCD': # cursor position - relative n = params[0] # A - up, B - down, C - forward, D - back x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command] winterm.cursor_adjust(x, y, on_stderr=self.on_stderr) def convert_osc(self, text): for match in self.ANSI_OSC_RE.finditer(text): start, end = match.span() text = text[:start] + text[end:] paramstring, command = match.groups() if command == BEL: if paramstring.count(";") == 1: params = paramstring.split(";") # 0 - change title and icon (we will only change title) # 1 - change icon (we don't support this) # 2 - change title if params[0] in '02': winterm.set_title(params[1]) return text def flush(self): self.wrapped.flush() ================================================ FILE: libs/colorama/initialise.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. import atexit import contextlib import sys from .ansitowin32 import AnsiToWin32 def _wipe_internal_state_for_tests(): global orig_stdout, orig_stderr orig_stdout = None orig_stderr = None global wrapped_stdout, wrapped_stderr wrapped_stdout = None wrapped_stderr = None global atexit_done atexit_done = False global fixed_windows_console fixed_windows_console = False try: # no-op if it wasn't registered atexit.unregister(reset_all) except AttributeError: # python 2: no atexit.unregister. Oh well, we did our best. pass def reset_all(): if AnsiToWin32 is not None: # Issue #74: objects might become None at exit AnsiToWin32(orig_stdout).reset_all() def init(autoreset=False, convert=None, strip=None, wrap=True): if not wrap and any([autoreset, convert, strip]): raise ValueError('wrap=False conflicts with any other arg=True') global wrapped_stdout, wrapped_stderr global orig_stdout, orig_stderr orig_stdout = sys.stdout orig_stderr = sys.stderr if sys.stdout is None: wrapped_stdout = None else: sys.stdout = wrapped_stdout = \ wrap_stream(orig_stdout, convert, strip, autoreset, wrap) if sys.stderr is None: wrapped_stderr = None else: sys.stderr = wrapped_stderr = \ wrap_stream(orig_stderr, convert, strip, autoreset, wrap) global atexit_done if not atexit_done: atexit.register(reset_all) atexit_done = True def deinit(): if orig_stdout is not None: sys.stdout = orig_stdout if orig_stderr is not None: sys.stderr = orig_stderr def just_fix_windows_console(): global fixed_windows_console if sys.platform != "win32": return if fixed_windows_console: return if wrapped_stdout is not None or wrapped_stderr is not None: # Someone already ran init() and it did stuff, so we won't second-guess them return # On newer versions of Windows, AnsiToWin32.__init__ will implicitly enable the # native ANSI support in the console as a side-effect. We only need to actually # replace sys.stdout/stderr if we're in the old-style conversion mode. new_stdout = AnsiToWin32(sys.stdout, convert=None, strip=None, autoreset=False) if new_stdout.convert: sys.stdout = new_stdout new_stderr = AnsiToWin32(sys.stderr, convert=None, strip=None, autoreset=False) if new_stderr.convert: sys.stderr = new_stderr fixed_windows_console = True @contextlib.contextmanager def colorama_text(*args, **kwargs): init(*args, **kwargs) try: yield finally: deinit() def reinit(): if wrapped_stdout is not None: sys.stdout = wrapped_stdout if wrapped_stderr is not None: sys.stderr = wrapped_stderr def wrap_stream(stream, convert, strip, autoreset, wrap): if wrap: wrapper = AnsiToWin32(stream, convert=convert, strip=strip, autoreset=autoreset) if wrapper.should_wrap(): stream = wrapper.stream return stream # Use this for initial setup as well, to reduce code duplication _wipe_internal_state_for_tests() ================================================ FILE: libs/colorama/tests/__init__.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. ================================================ FILE: libs/colorama/tests/ansi_test.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. import sys from unittest import TestCase, main from ..ansi import Back, Fore, Style from ..ansitowin32 import AnsiToWin32 stdout_orig = sys.stdout stderr_orig = sys.stderr class AnsiTest(TestCase): def setUp(self): # sanity check: stdout should be a file or StringIO object. # It will only be AnsiToWin32 if init() has previously wrapped it self.assertNotEqual(type(sys.stdout), AnsiToWin32) self.assertNotEqual(type(sys.stderr), AnsiToWin32) def tearDown(self): sys.stdout = stdout_orig sys.stderr = stderr_orig def testForeAttributes(self): self.assertEqual(Fore.BLACK, '\033[30m') self.assertEqual(Fore.RED, '\033[31m') self.assertEqual(Fore.GREEN, '\033[32m') self.assertEqual(Fore.YELLOW, '\033[33m') self.assertEqual(Fore.BLUE, '\033[34m') self.assertEqual(Fore.MAGENTA, '\033[35m') self.assertEqual(Fore.CYAN, '\033[36m') self.assertEqual(Fore.WHITE, '\033[37m') self.assertEqual(Fore.RESET, '\033[39m') # Check the light, extended versions. self.assertEqual(Fore.LIGHTBLACK_EX, '\033[90m') self.assertEqual(Fore.LIGHTRED_EX, '\033[91m') self.assertEqual(Fore.LIGHTGREEN_EX, '\033[92m') self.assertEqual(Fore.LIGHTYELLOW_EX, '\033[93m') self.assertEqual(Fore.LIGHTBLUE_EX, '\033[94m') self.assertEqual(Fore.LIGHTMAGENTA_EX, '\033[95m') self.assertEqual(Fore.LIGHTCYAN_EX, '\033[96m') self.assertEqual(Fore.LIGHTWHITE_EX, '\033[97m') def testBackAttributes(self): self.assertEqual(Back.BLACK, '\033[40m') self.assertEqual(Back.RED, '\033[41m') self.assertEqual(Back.GREEN, '\033[42m') self.assertEqual(Back.YELLOW, '\033[43m') self.assertEqual(Back.BLUE, '\033[44m') self.assertEqual(Back.MAGENTA, '\033[45m') self.assertEqual(Back.CYAN, '\033[46m') self.assertEqual(Back.WHITE, '\033[47m') self.assertEqual(Back.RESET, '\033[49m') # Check the light, extended versions. self.assertEqual(Back.LIGHTBLACK_EX, '\033[100m') self.assertEqual(Back.LIGHTRED_EX, '\033[101m') self.assertEqual(Back.LIGHTGREEN_EX, '\033[102m') self.assertEqual(Back.LIGHTYELLOW_EX, '\033[103m') self.assertEqual(Back.LIGHTBLUE_EX, '\033[104m') self.assertEqual(Back.LIGHTMAGENTA_EX, '\033[105m') self.assertEqual(Back.LIGHTCYAN_EX, '\033[106m') self.assertEqual(Back.LIGHTWHITE_EX, '\033[107m') def testStyleAttributes(self): self.assertEqual(Style.DIM, '\033[2m') self.assertEqual(Style.NORMAL, '\033[22m') self.assertEqual(Style.BRIGHT, '\033[1m') if __name__ == '__main__': main() ================================================ FILE: libs/colorama/tests/ansitowin32_test.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. from io import StringIO, TextIOWrapper from unittest import TestCase, main try: from contextlib import ExitStack except ImportError: # python 2 from contextlib2 import ExitStack try: from unittest.mock import MagicMock, Mock, patch except ImportError: from mock import MagicMock, Mock, patch from ..ansitowin32 import AnsiToWin32, StreamWrapper from ..win32 import ENABLE_VIRTUAL_TERMINAL_PROCESSING from .utils import osname class StreamWrapperTest(TestCase): def testIsAProxy(self): mockStream = Mock() wrapper = StreamWrapper(mockStream, None) self.assertTrue( wrapper.random_attr is mockStream.random_attr ) def testDelegatesWrite(self): mockStream = Mock() mockConverter = Mock() wrapper = StreamWrapper(mockStream, mockConverter) wrapper.write('hello') self.assertTrue(mockConverter.write.call_args, (('hello',), {})) def testDelegatesContext(self): mockConverter = Mock() s = StringIO() with StreamWrapper(s, mockConverter) as fp: fp.write(u'hello') self.assertTrue(s.closed) def testProxyNoContextManager(self): mockStream = MagicMock() mockStream.__enter__.side_effect = AttributeError() mockConverter = Mock() with self.assertRaises(AttributeError) as excinfo: with StreamWrapper(mockStream, mockConverter) as wrapper: wrapper.write('hello') def test_closed_shouldnt_raise_on_closed_stream(self): stream = StringIO() stream.close() wrapper = StreamWrapper(stream, None) self.assertEqual(wrapper.closed, True) def test_closed_shouldnt_raise_on_detached_stream(self): stream = TextIOWrapper(StringIO()) stream.detach() wrapper = StreamWrapper(stream, None) self.assertEqual(wrapper.closed, True) class AnsiToWin32Test(TestCase): def testInit(self): mockStdout = Mock() auto = Mock() stream = AnsiToWin32(mockStdout, autoreset=auto) self.assertEqual(stream.wrapped, mockStdout) self.assertEqual(stream.autoreset, auto) @patch('colorama.ansitowin32.winterm', None) @patch('colorama.ansitowin32.winapi_test', lambda *_: True) def testStripIsTrueOnWindows(self): with osname('nt'): mockStdout = Mock() stream = AnsiToWin32(mockStdout) self.assertTrue(stream.strip) def testStripIsFalseOffWindows(self): with osname('posix'): mockStdout = Mock(closed=False) stream = AnsiToWin32(mockStdout) self.assertFalse(stream.strip) def testWriteStripsAnsi(self): mockStdout = Mock() stream = AnsiToWin32(mockStdout) stream.wrapped = Mock() stream.write_and_convert = Mock() stream.strip = True stream.write('abc') self.assertFalse(stream.wrapped.write.called) self.assertEqual(stream.write_and_convert.call_args, (('abc',), {})) def testWriteDoesNotStripAnsi(self): mockStdout = Mock() stream = AnsiToWin32(mockStdout) stream.wrapped = Mock() stream.write_and_convert = Mock() stream.strip = False stream.convert = False stream.write('abc') self.assertFalse(stream.write_and_convert.called) self.assertEqual(stream.wrapped.write.call_args, (('abc',), {})) def assert_autoresets(self, convert, autoreset=True): stream = AnsiToWin32(Mock()) stream.convert = convert stream.reset_all = Mock() stream.autoreset = autoreset stream.winterm = Mock() stream.write('abc') self.assertEqual(stream.reset_all.called, autoreset) def testWriteAutoresets(self): self.assert_autoresets(convert=True) self.assert_autoresets(convert=False) self.assert_autoresets(convert=True, autoreset=False) self.assert_autoresets(convert=False, autoreset=False) def testWriteAndConvertWritesPlainText(self): stream = AnsiToWin32(Mock()) stream.write_and_convert( 'abc' ) self.assertEqual( stream.wrapped.write.call_args, (('abc',), {}) ) def testWriteAndConvertStripsAllValidAnsi(self): stream = AnsiToWin32(Mock()) stream.call_win32 = Mock() data = [ 'abc\033[mdef', 'abc\033[0mdef', 'abc\033[2mdef', 'abc\033[02mdef', 'abc\033[002mdef', 'abc\033[40mdef', 'abc\033[040mdef', 'abc\033[0;1mdef', 'abc\033[40;50mdef', 'abc\033[50;30;40mdef', 'abc\033[Adef', 'abc\033[0Gdef', 'abc\033[1;20;128Hdef', ] for datum in data: stream.wrapped.write.reset_mock() stream.write_and_convert( datum ) self.assertEqual( [args[0] for args in stream.wrapped.write.call_args_list], [ ('abc',), ('def',) ] ) def testWriteAndConvertSkipsEmptySnippets(self): stream = AnsiToWin32(Mock()) stream.call_win32 = Mock() stream.write_and_convert( '\033[40m\033[41m' ) self.assertFalse( stream.wrapped.write.called ) def testWriteAndConvertCallsWin32WithParamsAndCommand(self): stream = AnsiToWin32(Mock()) stream.convert = True stream.call_win32 = Mock() stream.extract_params = Mock(return_value='params') data = { 'abc\033[adef': ('a', 'params'), 'abc\033[;;bdef': ('b', 'params'), 'abc\033[0cdef': ('c', 'params'), 'abc\033[;;0;;Gdef': ('G', 'params'), 'abc\033[1;20;128Hdef': ('H', 'params'), } for datum, expected in data.items(): stream.call_win32.reset_mock() stream.write_and_convert( datum ) self.assertEqual( stream.call_win32.call_args[0], expected ) def test_reset_all_shouldnt_raise_on_closed_orig_stdout(self): stream = StringIO() converter = AnsiToWin32(stream) stream.close() converter.reset_all() def test_wrap_shouldnt_raise_on_closed_orig_stdout(self): stream = StringIO() stream.close() with \ patch("colorama.ansitowin32.os.name", "nt"), \ patch("colorama.ansitowin32.winapi_test", lambda: True): converter = AnsiToWin32(stream) self.assertTrue(converter.strip) self.assertFalse(converter.convert) def test_wrap_shouldnt_raise_on_missing_closed_attr(self): with \ patch("colorama.ansitowin32.os.name", "nt"), \ patch("colorama.ansitowin32.winapi_test", lambda: True): converter = AnsiToWin32(object()) self.assertTrue(converter.strip) self.assertFalse(converter.convert) def testExtractParams(self): stream = AnsiToWin32(Mock()) data = { '': (0,), ';;': (0,), '2': (2,), ';;002;;': (2,), '0;1': (0, 1), ';;003;;456;;': (3, 456), '11;22;33;44;55': (11, 22, 33, 44, 55), } for datum, expected in data.items(): self.assertEqual(stream.extract_params('m', datum), expected) def testCallWin32UsesLookup(self): listener = Mock() stream = AnsiToWin32(listener) stream.win32_calls = { 1: (lambda *_, **__: listener(11),), 2: (lambda *_, **__: listener(22),), 3: (lambda *_, **__: listener(33),), } stream.call_win32('m', (3, 1, 99, 2)) self.assertEqual( [a[0][0] for a in listener.call_args_list], [33, 11, 22] ) def test_osc_codes(self): mockStdout = Mock() stream = AnsiToWin32(mockStdout, convert=True) with patch('colorama.ansitowin32.winterm') as winterm: data = [ '\033]0\x07', # missing arguments '\033]0;foo\x08', # wrong OSC command '\033]0;colorama_test_title\x07', # should work '\033]1;colorama_test_title\x07', # wrong set command '\033]2;colorama_test_title\x07', # should work '\033]' + ';' * 64 + '\x08', # see issue #247 ] for code in data: stream.write(code) self.assertEqual(winterm.set_title.call_count, 2) def test_native_windows_ansi(self): with ExitStack() as stack: def p(a, b): stack.enter_context(patch(a, b, create=True)) # Pretend to be on Windows p("colorama.ansitowin32.os.name", "nt") p("colorama.ansitowin32.winapi_test", lambda: True) p("colorama.win32.winapi_test", lambda: True) p("colorama.winterm.win32.windll", "non-None") p("colorama.winterm.get_osfhandle", lambda _: 1234) # Pretend that our mock stream has native ANSI support p( "colorama.winterm.win32.GetConsoleMode", lambda _: ENABLE_VIRTUAL_TERMINAL_PROCESSING, ) SetConsoleMode = Mock() p("colorama.winterm.win32.SetConsoleMode", SetConsoleMode) stdout = Mock() stdout.closed = False stdout.isatty.return_value = True stdout.fileno.return_value = 1 # Our fake console says it has native vt support, so AnsiToWin32 should # enable that support and do nothing else. stream = AnsiToWin32(stdout) SetConsoleMode.assert_called_with(1234, ENABLE_VIRTUAL_TERMINAL_PROCESSING) self.assertFalse(stream.strip) self.assertFalse(stream.convert) self.assertFalse(stream.should_wrap()) # Now let's pretend we're on an old Windows console, that doesn't have # native ANSI support. p("colorama.winterm.win32.GetConsoleMode", lambda _: 0) SetConsoleMode = Mock() p("colorama.winterm.win32.SetConsoleMode", SetConsoleMode) stream = AnsiToWin32(stdout) SetConsoleMode.assert_called_with(1234, ENABLE_VIRTUAL_TERMINAL_PROCESSING) self.assertTrue(stream.strip) self.assertTrue(stream.convert) self.assertTrue(stream.should_wrap()) if __name__ == '__main__': main() ================================================ FILE: libs/colorama/tests/initialise_test.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. import sys from unittest import TestCase, main, skipUnless try: from unittest.mock import patch, Mock except ImportError: from mock import patch, Mock from ..ansitowin32 import StreamWrapper from ..initialise import init, just_fix_windows_console, _wipe_internal_state_for_tests from .utils import osname, replace_by orig_stdout = sys.stdout orig_stderr = sys.stderr class InitTest(TestCase): @skipUnless(sys.stdout.isatty(), "sys.stdout is not a tty") def setUp(self): # sanity check self.assertNotWrapped() def tearDown(self): _wipe_internal_state_for_tests() sys.stdout = orig_stdout sys.stderr = orig_stderr def assertWrapped(self): self.assertIsNot(sys.stdout, orig_stdout, 'stdout should be wrapped') self.assertIsNot(sys.stderr, orig_stderr, 'stderr should be wrapped') self.assertTrue(isinstance(sys.stdout, StreamWrapper), 'bad stdout wrapper') self.assertTrue(isinstance(sys.stderr, StreamWrapper), 'bad stderr wrapper') def assertNotWrapped(self): self.assertIs(sys.stdout, orig_stdout, 'stdout should not be wrapped') self.assertIs(sys.stderr, orig_stderr, 'stderr should not be wrapped') @patch('colorama.initialise.reset_all') @patch('colorama.ansitowin32.winapi_test', lambda *_: True) @patch('colorama.ansitowin32.enable_vt_processing', lambda *_: False) def testInitWrapsOnWindows(self, _): with osname("nt"): init() self.assertWrapped() @patch('colorama.initialise.reset_all') @patch('colorama.ansitowin32.winapi_test', lambda *_: False) def testInitDoesntWrapOnEmulatedWindows(self, _): with osname("nt"): init() self.assertNotWrapped() def testInitDoesntWrapOnNonWindows(self): with osname("posix"): init() self.assertNotWrapped() def testInitDoesntWrapIfNone(self): with replace_by(None): init() # We can't use assertNotWrapped here because replace_by(None) # changes stdout/stderr already. self.assertIsNone(sys.stdout) self.assertIsNone(sys.stderr) def testInitAutoresetOnWrapsOnAllPlatforms(self): with osname("posix"): init(autoreset=True) self.assertWrapped() def testInitWrapOffDoesntWrapOnWindows(self): with osname("nt"): init(wrap=False) self.assertNotWrapped() def testInitWrapOffIncompatibleWithAutoresetOn(self): self.assertRaises(ValueError, lambda: init(autoreset=True, wrap=False)) @patch('colorama.win32.SetConsoleTextAttribute') @patch('colorama.initialise.AnsiToWin32') def testAutoResetPassedOn(self, mockATW32, _): with osname("nt"): init(autoreset=True) self.assertEqual(len(mockATW32.call_args_list), 2) self.assertEqual(mockATW32.call_args_list[1][1]['autoreset'], True) self.assertEqual(mockATW32.call_args_list[0][1]['autoreset'], True) @patch('colorama.initialise.AnsiToWin32') def testAutoResetChangeable(self, mockATW32): with osname("nt"): init() init(autoreset=True) self.assertEqual(len(mockATW32.call_args_list), 4) self.assertEqual(mockATW32.call_args_list[2][1]['autoreset'], True) self.assertEqual(mockATW32.call_args_list[3][1]['autoreset'], True) init() self.assertEqual(len(mockATW32.call_args_list), 6) self.assertEqual( mockATW32.call_args_list[4][1]['autoreset'], False) self.assertEqual( mockATW32.call_args_list[5][1]['autoreset'], False) @patch('colorama.initialise.atexit.register') def testAtexitRegisteredOnlyOnce(self, mockRegister): init() self.assertTrue(mockRegister.called) mockRegister.reset_mock() init() self.assertFalse(mockRegister.called) class JustFixWindowsConsoleTest(TestCase): def _reset(self): _wipe_internal_state_for_tests() sys.stdout = orig_stdout sys.stderr = orig_stderr def tearDown(self): self._reset() @patch("colorama.ansitowin32.winapi_test", lambda: True) def testJustFixWindowsConsole(self): if sys.platform != "win32": # just_fix_windows_console should be a no-op just_fix_windows_console() self.assertIs(sys.stdout, orig_stdout) self.assertIs(sys.stderr, orig_stderr) else: def fake_std(): # Emulate stdout=not a tty, stderr=tty # to check that we handle both cases correctly stdout = Mock() stdout.closed = False stdout.isatty.return_value = False stdout.fileno.return_value = 1 sys.stdout = stdout stderr = Mock() stderr.closed = False stderr.isatty.return_value = True stderr.fileno.return_value = 2 sys.stderr = stderr for native_ansi in [False, True]: with patch( 'colorama.ansitowin32.enable_vt_processing', lambda *_: native_ansi ): self._reset() fake_std() # Regular single-call test prev_stdout = sys.stdout prev_stderr = sys.stderr just_fix_windows_console() self.assertIs(sys.stdout, prev_stdout) if native_ansi: self.assertIs(sys.stderr, prev_stderr) else: self.assertIsNot(sys.stderr, prev_stderr) # second call without resetting is always a no-op prev_stdout = sys.stdout prev_stderr = sys.stderr just_fix_windows_console() self.assertIs(sys.stdout, prev_stdout) self.assertIs(sys.stderr, prev_stderr) self._reset() fake_std() # If init() runs first, just_fix_windows_console should be a no-op init() prev_stdout = sys.stdout prev_stderr = sys.stderr just_fix_windows_console() self.assertIs(prev_stdout, sys.stdout) self.assertIs(prev_stderr, sys.stderr) if __name__ == '__main__': main() ================================================ FILE: libs/colorama/tests/isatty_test.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. import sys from unittest import TestCase, main from ..ansitowin32 import StreamWrapper, AnsiToWin32 from .utils import pycharm, replace_by, replace_original_by, StreamTTY, StreamNonTTY def is_a_tty(stream): return StreamWrapper(stream, None).isatty() class IsattyTest(TestCase): def test_TTY(self): tty = StreamTTY() self.assertTrue(is_a_tty(tty)) with pycharm(): self.assertTrue(is_a_tty(tty)) def test_nonTTY(self): non_tty = StreamNonTTY() self.assertFalse(is_a_tty(non_tty)) with pycharm(): self.assertFalse(is_a_tty(non_tty)) def test_withPycharm(self): with pycharm(): self.assertTrue(is_a_tty(sys.stderr)) self.assertTrue(is_a_tty(sys.stdout)) def test_withPycharmTTYOverride(self): tty = StreamTTY() with pycharm(), replace_by(tty): self.assertTrue(is_a_tty(tty)) def test_withPycharmNonTTYOverride(self): non_tty = StreamNonTTY() with pycharm(), replace_by(non_tty): self.assertFalse(is_a_tty(non_tty)) def test_withPycharmNoneOverride(self): with pycharm(): with replace_by(None), replace_original_by(None): self.assertFalse(is_a_tty(None)) self.assertFalse(is_a_tty(StreamNonTTY())) self.assertTrue(is_a_tty(StreamTTY())) def test_withPycharmStreamWrapped(self): with pycharm(): self.assertTrue(AnsiToWin32(StreamTTY()).stream.isatty()) self.assertFalse(AnsiToWin32(StreamNonTTY()).stream.isatty()) self.assertTrue(AnsiToWin32(sys.stdout).stream.isatty()) self.assertTrue(AnsiToWin32(sys.stderr).stream.isatty()) if __name__ == '__main__': main() ================================================ FILE: libs/colorama/tests/utils.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. from contextlib import contextmanager from io import StringIO import sys import os class StreamTTY(StringIO): def isatty(self): return True class StreamNonTTY(StringIO): def isatty(self): return False @contextmanager def osname(name): orig = os.name os.name = name yield os.name = orig @contextmanager def replace_by(stream): orig_stdout = sys.stdout orig_stderr = sys.stderr sys.stdout = stream sys.stderr = stream yield sys.stdout = orig_stdout sys.stderr = orig_stderr @contextmanager def replace_original_by(stream): orig_stdout = sys.__stdout__ orig_stderr = sys.__stderr__ sys.__stdout__ = stream sys.__stderr__ = stream yield sys.__stdout__ = orig_stdout sys.__stderr__ = orig_stderr @contextmanager def pycharm(): os.environ["PYCHARM_HOSTED"] = "1" non_tty = StreamNonTTY() with replace_by(non_tty), replace_original_by(non_tty): yield del os.environ["PYCHARM_HOSTED"] ================================================ FILE: libs/colorama/tests/winterm_test.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. import sys from unittest import TestCase, main, skipUnless try: from unittest.mock import Mock, patch except ImportError: from mock import Mock, patch from ..winterm import WinColor, WinStyle, WinTerm class WinTermTest(TestCase): @patch('colorama.winterm.win32') def testInit(self, mockWin32): mockAttr = Mock() mockAttr.wAttributes = 7 + 6 * 16 + 8 mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr term = WinTerm() self.assertEqual(term._fore, 7) self.assertEqual(term._back, 6) self.assertEqual(term._style, 8) @skipUnless(sys.platform.startswith("win"), "requires Windows") def testGetAttrs(self): term = WinTerm() term._fore = 0 term._back = 0 term._style = 0 self.assertEqual(term.get_attrs(), 0) term._fore = WinColor.YELLOW self.assertEqual(term.get_attrs(), WinColor.YELLOW) term._back = WinColor.MAGENTA self.assertEqual( term.get_attrs(), WinColor.YELLOW + WinColor.MAGENTA * 16) term._style = WinStyle.BRIGHT self.assertEqual( term.get_attrs(), WinColor.YELLOW + WinColor.MAGENTA * 16 + WinStyle.BRIGHT) @patch('colorama.winterm.win32') def testResetAll(self, mockWin32): mockAttr = Mock() mockAttr.wAttributes = 1 + 2 * 16 + 8 mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr term = WinTerm() term.set_console = Mock() term._fore = -1 term._back = -1 term._style = -1 term.reset_all() self.assertEqual(term._fore, 1) self.assertEqual(term._back, 2) self.assertEqual(term._style, 8) self.assertEqual(term.set_console.called, True) @skipUnless(sys.platform.startswith("win"), "requires Windows") def testFore(self): term = WinTerm() term.set_console = Mock() term._fore = 0 term.fore(5) self.assertEqual(term._fore, 5) self.assertEqual(term.set_console.called, True) @skipUnless(sys.platform.startswith("win"), "requires Windows") def testBack(self): term = WinTerm() term.set_console = Mock() term._back = 0 term.back(5) self.assertEqual(term._back, 5) self.assertEqual(term.set_console.called, True) @skipUnless(sys.platform.startswith("win"), "requires Windows") def testStyle(self): term = WinTerm() term.set_console = Mock() term._style = 0 term.style(22) self.assertEqual(term._style, 22) self.assertEqual(term.set_console.called, True) @patch('colorama.winterm.win32') def testSetConsole(self, mockWin32): mockAttr = Mock() mockAttr.wAttributes = 0 mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr term = WinTerm() term.windll = Mock() term.set_console() self.assertEqual( mockWin32.SetConsoleTextAttribute.call_args, ((mockWin32.STDOUT, term.get_attrs()), {}) ) @patch('colorama.winterm.win32') def testSetConsoleOnStderr(self, mockWin32): mockAttr = Mock() mockAttr.wAttributes = 0 mockWin32.GetConsoleScreenBufferInfo.return_value = mockAttr term = WinTerm() term.windll = Mock() term.set_console(on_stderr=True) self.assertEqual( mockWin32.SetConsoleTextAttribute.call_args, ((mockWin32.STDERR, term.get_attrs()), {}) ) if __name__ == '__main__': main() ================================================ FILE: libs/colorama/win32.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. # from winbase.h STDOUT = -11 STDERR = -12 ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004 try: import ctypes from ctypes import LibraryLoader windll = LibraryLoader(ctypes.WinDLL) from ctypes import wintypes except (AttributeError, ImportError): windll = None SetConsoleTextAttribute = lambda *_: None winapi_test = lambda *_: None else: from ctypes import byref, Structure, c_char, POINTER COORD = wintypes._COORD class CONSOLE_SCREEN_BUFFER_INFO(Structure): """struct in wincon.h.""" _fields_ = [ ("dwSize", COORD), ("dwCursorPosition", COORD), ("wAttributes", wintypes.WORD), ("srWindow", wintypes.SMALL_RECT), ("dwMaximumWindowSize", COORD), ] def __str__(self): return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % ( self.dwSize.Y, self.dwSize.X , self.dwCursorPosition.Y, self.dwCursorPosition.X , self.wAttributes , self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right , self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X ) _GetStdHandle = windll.kernel32.GetStdHandle _GetStdHandle.argtypes = [ wintypes.DWORD, ] _GetStdHandle.restype = wintypes.HANDLE _GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo _GetConsoleScreenBufferInfo.argtypes = [ wintypes.HANDLE, POINTER(CONSOLE_SCREEN_BUFFER_INFO), ] _GetConsoleScreenBufferInfo.restype = wintypes.BOOL _SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute _SetConsoleTextAttribute.argtypes = [ wintypes.HANDLE, wintypes.WORD, ] _SetConsoleTextAttribute.restype = wintypes.BOOL _SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition _SetConsoleCursorPosition.argtypes = [ wintypes.HANDLE, COORD, ] _SetConsoleCursorPosition.restype = wintypes.BOOL _FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA _FillConsoleOutputCharacterA.argtypes = [ wintypes.HANDLE, c_char, wintypes.DWORD, COORD, POINTER(wintypes.DWORD), ] _FillConsoleOutputCharacterA.restype = wintypes.BOOL _FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute _FillConsoleOutputAttribute.argtypes = [ wintypes.HANDLE, wintypes.WORD, wintypes.DWORD, COORD, POINTER(wintypes.DWORD), ] _FillConsoleOutputAttribute.restype = wintypes.BOOL _SetConsoleTitleW = windll.kernel32.SetConsoleTitleW _SetConsoleTitleW.argtypes = [ wintypes.LPCWSTR ] _SetConsoleTitleW.restype = wintypes.BOOL _GetConsoleMode = windll.kernel32.GetConsoleMode _GetConsoleMode.argtypes = [ wintypes.HANDLE, POINTER(wintypes.DWORD) ] _GetConsoleMode.restype = wintypes.BOOL _SetConsoleMode = windll.kernel32.SetConsoleMode _SetConsoleMode.argtypes = [ wintypes.HANDLE, wintypes.DWORD ] _SetConsoleMode.restype = wintypes.BOOL def _winapi_test(handle): csbi = CONSOLE_SCREEN_BUFFER_INFO() success = _GetConsoleScreenBufferInfo( handle, byref(csbi)) return bool(success) def winapi_test(): return any(_winapi_test(h) for h in (_GetStdHandle(STDOUT), _GetStdHandle(STDERR))) def GetConsoleScreenBufferInfo(stream_id=STDOUT): handle = _GetStdHandle(stream_id) csbi = CONSOLE_SCREEN_BUFFER_INFO() success = _GetConsoleScreenBufferInfo( handle, byref(csbi)) return csbi def SetConsoleTextAttribute(stream_id, attrs): handle = _GetStdHandle(stream_id) return _SetConsoleTextAttribute(handle, attrs) def SetConsoleCursorPosition(stream_id, position, adjust=True): position = COORD(*position) # If the position is out of range, do nothing. if position.Y <= 0 or position.X <= 0: return # Adjust for Windows' SetConsoleCursorPosition: # 1. being 0-based, while ANSI is 1-based. # 2. expecting (x,y), while ANSI uses (y,x). adjusted_position = COORD(position.Y - 1, position.X - 1) if adjust: # Adjust for viewport's scroll position sr = GetConsoleScreenBufferInfo(STDOUT).srWindow adjusted_position.Y += sr.Top adjusted_position.X += sr.Left # Resume normal processing handle = _GetStdHandle(stream_id) return _SetConsoleCursorPosition(handle, adjusted_position) def FillConsoleOutputCharacter(stream_id, char, length, start): handle = _GetStdHandle(stream_id) char = c_char(char.encode()) length = wintypes.DWORD(length) num_written = wintypes.DWORD(0) # Note that this is hard-coded for ANSI (vs wide) bytes. success = _FillConsoleOutputCharacterA( handle, char, length, start, byref(num_written)) return num_written.value def FillConsoleOutputAttribute(stream_id, attr, length, start): ''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )''' handle = _GetStdHandle(stream_id) attribute = wintypes.WORD(attr) length = wintypes.DWORD(length) num_written = wintypes.DWORD(0) # Note that this is hard-coded for ANSI (vs wide) bytes. return _FillConsoleOutputAttribute( handle, attribute, length, start, byref(num_written)) def SetConsoleTitle(title): return _SetConsoleTitleW(title) def GetConsoleMode(handle): mode = wintypes.DWORD() success = _GetConsoleMode(handle, byref(mode)) if not success: raise ctypes.WinError() return mode.value def SetConsoleMode(handle, mode): success = _SetConsoleMode(handle, mode) if not success: raise ctypes.WinError() ================================================ FILE: libs/colorama/winterm.py ================================================ # Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. try: from msvcrt import get_osfhandle except ImportError: def get_osfhandle(_): raise OSError("This isn't windows!") from . import win32 # from wincon.h class WinColor(object): BLACK = 0 BLUE = 1 GREEN = 2 CYAN = 3 RED = 4 MAGENTA = 5 YELLOW = 6 GREY = 7 # from wincon.h class WinStyle(object): NORMAL = 0x00 # dim text, dim background BRIGHT = 0x08 # bright text, dim background BRIGHT_BACKGROUND = 0x80 # dim text, bright background class WinTerm(object): def __init__(self): self._default = win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes self.set_attrs(self._default) self._default_fore = self._fore self._default_back = self._back self._default_style = self._style # In order to emulate LIGHT_EX in windows, we borrow the BRIGHT style. # So that LIGHT_EX colors and BRIGHT style do not clobber each other, # we track them separately, since LIGHT_EX is overwritten by Fore/Back # and BRIGHT is overwritten by Style codes. self._light = 0 def get_attrs(self): return self._fore + self._back * 16 + (self._style | self._light) def set_attrs(self, value): self._fore = value & 7 self._back = (value >> 4) & 7 self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND) def reset_all(self, on_stderr=None): self.set_attrs(self._default) self.set_console(attrs=self._default) self._light = 0 def fore(self, fore=None, light=False, on_stderr=False): if fore is None: fore = self._default_fore self._fore = fore # Emulate LIGHT_EX with BRIGHT Style if light: self._light |= WinStyle.BRIGHT else: self._light &= ~WinStyle.BRIGHT self.set_console(on_stderr=on_stderr) def back(self, back=None, light=False, on_stderr=False): if back is None: back = self._default_back self._back = back # Emulate LIGHT_EX with BRIGHT_BACKGROUND Style if light: self._light |= WinStyle.BRIGHT_BACKGROUND else: self._light &= ~WinStyle.BRIGHT_BACKGROUND self.set_console(on_stderr=on_stderr) def style(self, style=None, on_stderr=False): if style is None: style = self._default_style self._style = style self.set_console(on_stderr=on_stderr) def set_console(self, attrs=None, on_stderr=False): if attrs is None: attrs = self.get_attrs() handle = win32.STDOUT if on_stderr: handle = win32.STDERR win32.SetConsoleTextAttribute(handle, attrs) def get_position(self, handle): position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition # Because Windows coordinates are 0-based, # and win32.SetConsoleCursorPosition expects 1-based. position.X += 1 position.Y += 1 return position def set_cursor_position(self, position=None, on_stderr=False): if position is None: # I'm not currently tracking the position, so there is no default. # position = self.get_position() return handle = win32.STDOUT if on_stderr: handle = win32.STDERR win32.SetConsoleCursorPosition(handle, position) def cursor_adjust(self, x, y, on_stderr=False): handle = win32.STDOUT if on_stderr: handle = win32.STDERR position = self.get_position(handle) adjusted_position = (position.Y + y, position.X + x) win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False) def erase_screen(self, mode=0, on_stderr=False): # 0 should clear from the cursor to the end of the screen. # 1 should clear from the cursor to the beginning of the screen. # 2 should clear the entire screen, and move cursor to (1,1) handle = win32.STDOUT if on_stderr: handle = win32.STDERR csbi = win32.GetConsoleScreenBufferInfo(handle) # get the number of character cells in the current buffer cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y # get number of character cells before current cursor position cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X if mode == 0: from_coord = csbi.dwCursorPosition cells_to_erase = cells_in_screen - cells_before_cursor elif mode == 1: from_coord = win32.COORD(0, 0) cells_to_erase = cells_before_cursor elif mode == 2: from_coord = win32.COORD(0, 0) cells_to_erase = cells_in_screen else: # invalid mode return # fill the entire screen with blanks win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) # now set the buffer's attributes accordingly win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) if mode == 2: # put the cursor where needed win32.SetConsoleCursorPosition(handle, (1, 1)) def erase_line(self, mode=0, on_stderr=False): # 0 should clear from the cursor to the end of the line. # 1 should clear from the cursor to the beginning of the line. # 2 should clear the entire line. handle = win32.STDOUT if on_stderr: handle = win32.STDERR csbi = win32.GetConsoleScreenBufferInfo(handle) if mode == 0: from_coord = csbi.dwCursorPosition cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X elif mode == 1: from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) cells_to_erase = csbi.dwCursorPosition.X elif mode == 2: from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) cells_to_erase = csbi.dwSize.X else: # invalid mode return # fill the entire screen with blanks win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) # now set the buffer's attributes accordingly win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) def set_title(self, title): win32.SetConsoleTitle(title) def enable_vt_processing(fd): if win32.windll is None or not win32.winapi_test(): return False try: handle = get_osfhandle(fd) mode = win32.GetConsoleMode(handle) win32.SetConsoleMode( handle, mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING, ) mode = win32.GetConsoleMode(handle) if mode & win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING: return True # Can get TypeError in testsuite where 'fd' is a Mock() except (OSError, TypeError): return False ================================================ FILE: libs/colorama-0.4.6.dist-info/METADATA ================================================ Metadata-Version: 2.1 Name: colorama Version: 0.4.6 Summary: Cross-platform colored terminal text. Project-URL: Homepage, https://github.com/tartley/colorama Author-email: Jonathan Hartley License-File: LICENSE.txt Keywords: ansi,color,colour,crossplatform,terminal,text,windows,xplatform Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Terminals Requires-Python: !=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7 Description-Content-Type: text/x-rst .. image:: https://img.shields.io/pypi/v/colorama.svg :target: https://pypi.org/project/colorama/ :alt: Latest Version .. image:: https://img.shields.io/pypi/pyversions/colorama.svg :target: https://pypi.org/project/colorama/ :alt: Supported Python versions .. image:: https://github.com/tartley/colorama/actions/workflows/test.yml/badge.svg :target: https://github.com/tartley/colorama/actions/workflows/test.yml :alt: Build Status Colorama ======== Makes ANSI escape character sequences (for producing colored terminal text and cursor positioning) work under MS Windows. .. |donate| image:: https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif :target: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=2MZ9D2GMLYCUJ&item_name=Colorama¤cy_code=USD :alt: Donate with Paypal `PyPI for releases `_ | `Github for source `_ | `Colorama for enterprise on Tidelift `_ If you find Colorama useful, please |donate| to the authors. Thank you! Installation ------------ Tested on CPython 2.7, 3.7, 3.8, 3.9 and 3.10 and Pypy 2.7 and 3.8. No requirements other than the standard library. .. code-block:: bash pip install colorama # or conda install -c anaconda colorama Description ----------- ANSI escape character sequences have long been used to produce colored terminal text and cursor positioning on Unix and Macs. Colorama makes this work on Windows, too, by wrapping ``stdout``, stripping ANSI sequences it finds (which would appear as gobbledygook in the output), and converting them into the appropriate win32 calls to modify the state of the terminal. On other platforms, Colorama does nothing. This has the upshot of providing a simple cross-platform API for printing colored terminal text from Python, and has the happy side-effect that existing applications or libraries which use ANSI sequences to produce colored output on Linux or Macs can now also work on Windows, simply by calling ``colorama.just_fix_windows_console()`` (since v0.4.6) or ``colorama.init()`` (all versions, but may have other side-effects – see below). An alternative approach is to install ``ansi.sys`` on Windows machines, which provides the same behaviour for all applications running in terminals. Colorama is intended for situations where that isn't easy (e.g., maybe your app doesn't have an installer.) Demo scripts in the source code repository print some colored text using ANSI sequences. Compare their output under Gnome-terminal's built in ANSI handling, versus on Windows Command-Prompt using Colorama: .. image:: https://github.com/tartley/colorama/raw/master/screenshots/ubuntu-demo.png :width: 661 :height: 357 :alt: ANSI sequences on Ubuntu under gnome-terminal. .. image:: https://github.com/tartley/colorama/raw/master/screenshots/windows-demo.png :width: 668 :height: 325 :alt: Same ANSI sequences on Windows, using Colorama. These screenshots show that, on Windows, Colorama does not support ANSI 'dim text'; it looks the same as 'normal text'. Usage ----- Initialisation .............. If the only thing you want from Colorama is to get ANSI escapes to work on Windows, then run: .. code-block:: python from colorama import just_fix_windows_console just_fix_windows_console() If you're on a recent version of Windows 10 or better, and your stdout/stderr are pointing to a Windows console, then this will flip the magic configuration switch to enable Windows' built-in ANSI support. If you're on an older version of Windows, and your stdout/stderr are pointing to a Windows console, then this will wrap ``sys.stdout`` and/or ``sys.stderr`` in a magic file object that intercepts ANSI escape sequences and issues the appropriate Win32 calls to emulate them. In all other circumstances, it does nothing whatsoever. Basically the idea is that this makes Windows act like Unix with respect to ANSI escape handling. It's safe to call this function multiple times. It's safe to call this function on non-Windows platforms, but it won't do anything. It's safe to call this function when one or both of your stdout/stderr are redirected to a file – it won't do anything to those streams. Alternatively, you can use the older interface with more features (but also more potential footguns): .. code-block:: python from colorama import init init() This does the same thing as ``just_fix_windows_console``, except for the following differences: - It's not safe to call ``init`` multiple times; you can end up with multiple layers of wrapping and broken ANSI support. - Colorama will apply a heuristic to guess whether stdout/stderr support ANSI, and if it thinks they don't, then it will wrap ``sys.stdout`` and ``sys.stderr`` in a magic file object that strips out ANSI escape sequences before printing them. This happens on all platforms, and can be convenient if you want to write your code to emit ANSI escape sequences unconditionally, and let Colorama decide whether they should actually be output. But note that Colorama's heuristic is not particularly clever. - ``init`` also accepts explicit keyword args to enable/disable various functionality – see below. To stop using Colorama before your program exits, simply call ``deinit()``. This will restore ``stdout`` and ``stderr`` to their original values, so that Colorama is disabled. To resume using Colorama again, call ``reinit()``; it is cheaper than calling ``init()`` again (but does the same thing). Most users should depend on ``colorama >= 0.4.6``, and use ``just_fix_windows_console``. The old ``init`` interface will be supported indefinitely for backwards compatibility, but we don't plan to fix any issues with it, also for backwards compatibility. Colored Output .............. Cross-platform printing of colored text can then be done using Colorama's constant shorthand for ANSI escape sequences. These are deliberately rudimentary, see below. .. code-block:: python from colorama import Fore, Back, Style print(Fore.RED + 'some red text') print(Back.GREEN + 'and with a green background') print(Style.DIM + 'and in dim text') print(Style.RESET_ALL) print('back to normal now') ...or simply by manually printing ANSI sequences from your own code: .. code-block:: python print('\033[31m' + 'some red text') print('\033[39m') # and reset to default color ...or, Colorama can be used in conjunction with existing ANSI libraries such as the venerable `Termcolor `_ the fabulous `Blessings `_, or the incredible `_Rich `_. If you wish Colorama's Fore, Back and Style constants were more capable, then consider using one of the above highly capable libraries to generate colors, etc, and use Colorama just for its primary purpose: to convert those ANSI sequences to also work on Windows: SIMILARLY, do not send PRs adding the generation of new ANSI types to Colorama. We are only interested in converting ANSI codes to win32 API calls, not shortcuts like the above to generate ANSI characters. .. code-block:: python from colorama import just_fix_windows_console from termcolor import colored # use Colorama to make Termcolor work on Windows too just_fix_windows_console() # then use Termcolor for all colored text output print(colored('Hello, World!', 'green', 'on_red')) Available formatting constants are:: Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET. Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET. Style: DIM, NORMAL, BRIGHT, RESET_ALL ``Style.RESET_ALL`` resets foreground, background, and brightness. Colorama will perform this reset automatically on program exit. These are fairly well supported, but not part of the standard:: Fore: LIGHTBLACK_EX, LIGHTRED_EX, LIGHTGREEN_EX, LIGHTYELLOW_EX, LIGHTBLUE_EX, LIGHTMAGENTA_EX, LIGHTCYAN_EX, LIGHTWHITE_EX Back: LIGHTBLACK_EX, LIGHTRED_EX, LIGHTGREEN_EX, LIGHTYELLOW_EX, LIGHTBLUE_EX, LIGHTMAGENTA_EX, LIGHTCYAN_EX, LIGHTWHITE_EX Cursor Positioning .................. ANSI codes to reposition the cursor are supported. See ``demos/demo06.py`` for an example of how to generate them. Init Keyword Args ................. ``init()`` accepts some ``**kwargs`` to override default behaviour. init(autoreset=False): If you find yourself repeatedly sending reset sequences to turn off color changes at the end of every print, then ``init(autoreset=True)`` will automate that: .. code-block:: python from colorama import init init(autoreset=True) print(Fore.RED + 'some red text') print('automatically back to default color again') init(strip=None): Pass ``True`` or ``False`` to override whether ANSI codes should be stripped from the output. The default behaviour is to strip if on Windows or if output is redirected (not a tty). init(convert=None): Pass ``True`` or ``False`` to override whether to convert ANSI codes in the output into win32 calls. The default behaviour is to convert if on Windows and output is to a tty (terminal). init(wrap=True): On Windows, Colorama works by replacing ``sys.stdout`` and ``sys.stderr`` with proxy objects, which override the ``.write()`` method to do their work. If this wrapping causes you problems, then this can be disabled by passing ``init(wrap=False)``. The default behaviour is to wrap if ``autoreset`` or ``strip`` or ``convert`` are True. When wrapping is disabled, colored printing on non-Windows platforms will continue to work as normal. To do cross-platform colored output, you can use Colorama's ``AnsiToWin32`` proxy directly: .. code-block:: python import sys from colorama import init, AnsiToWin32 init(wrap=False) stream = AnsiToWin32(sys.stderr).stream # Python 2 print >>stream, Fore.BLUE + 'blue text on stderr' # Python 3 print(Fore.BLUE + 'blue text on stderr', file=stream) Recognised ANSI Sequences ......................... ANSI sequences generally take the form:: ESC [ ; ... Where ```` is an integer, and ```` is a single letter. Zero or more params are passed to a ````. If no params are passed, it is generally synonymous with passing a single zero. No spaces exist in the sequence; they have been inserted here simply to read more easily. The only ANSI sequences that Colorama converts into win32 calls are:: ESC [ 0 m # reset all (colors and brightness) ESC [ 1 m # bright ESC [ 2 m # dim (looks same as normal brightness) ESC [ 22 m # normal brightness # FOREGROUND: ESC [ 30 m # black ESC [ 31 m # red ESC [ 32 m # green ESC [ 33 m # yellow ESC [ 34 m # blue ESC [ 35 m # magenta ESC [ 36 m # cyan ESC [ 37 m # white ESC [ 39 m # reset # BACKGROUND ESC [ 40 m # black ESC [ 41 m # red ESC [ 42 m # green ESC [ 43 m # yellow ESC [ 44 m # blue ESC [ 45 m # magenta ESC [ 46 m # cyan ESC [ 47 m # white ESC [ 49 m # reset # cursor positioning ESC [ y;x H # position cursor at x across, y down ESC [ y;x f # position cursor at x across, y down ESC [ n A # move cursor n lines up ESC [ n B # move cursor n lines down ESC [ n C # move cursor n characters forward ESC [ n D # move cursor n characters backward # clear the screen ESC [ mode J # clear the screen # clear the line ESC [ mode K # clear the line Multiple numeric params to the ``'m'`` command can be combined into a single sequence:: ESC [ 36 ; 45 ; 1 m # bright cyan text on magenta background All other ANSI sequences of the form ``ESC [ ; ... `` are silently stripped from the output on Windows. Any other form of ANSI sequence, such as single-character codes or alternative initial characters, are not recognised or stripped. It would be cool to add them though. Let me know if it would be useful for you, via the Issues on GitHub. Status & Known Problems ----------------------- I've personally only tested it on Windows XP (CMD, Console2), Ubuntu (gnome-terminal, xterm), and OS X. Some valid ANSI sequences aren't recognised. If you're hacking on the code, see `README-hacking.md`_. ESPECIALLY, see the explanation there of why we do not want PRs that allow Colorama to generate new types of ANSI codes. See outstanding issues and wish-list: https://github.com/tartley/colorama/issues If anything doesn't work for you, or doesn't do what you expected or hoped for, I'd love to hear about it on that issues list, would be delighted by patches, and would be happy to grant commit access to anyone who submits a working patch or two. .. _README-hacking.md: README-hacking.md License ------- Copyright Jonathan Hartley & Arnon Yaari, 2013-2020. BSD 3-Clause license; see LICENSE file. Professional support -------------------- .. |tideliftlogo| image:: https://cdn2.hubspot.net/hubfs/4008838/website/logos/logos_for_download/Tidelift_primary-shorthand-logo.png :alt: Tidelift :target: https://tidelift.com/subscription/pkg/pypi-colorama?utm_source=pypi-colorama&utm_medium=referral&utm_campaign=readme .. list-table:: :widths: 10 100 * - |tideliftlogo| - Professional support for colorama is available as part of the `Tidelift Subscription`_. Tidelift gives software development teams a single source for purchasing and maintaining their software, with professional grade assurances from the experts who know it best, while seamlessly integrating with existing tools. .. _Tidelift Subscription: https://tidelift.com/subscription/pkg/pypi-colorama?utm_source=pypi-colorama&utm_medium=referral&utm_campaign=readme Thanks ------ See the CHANGELOG for more thanks! * Marc Schlaich (schlamar) for a ``setup.py`` fix for Python2.5. * Marc Abramowitz, reported & fixed a crash on exit with closed ``stdout``, providing a solution to issue #7's setuptools/distutils debate, and other fixes. * User 'eryksun', for guidance on correctly instantiating ``ctypes.windll``. * Matthew McCormick for politely pointing out a longstanding crash on non-Win. * Ben Hoyt, for a magnificent fix under 64-bit Windows. * Jesse at Empty Square for submitting a fix for examples in the README. * User 'jamessp', an observant documentation fix for cursor positioning. * User 'vaal1239', Dave Mckee & Lackner Kristof for a tiny but much-needed Win7 fix. * Julien Stuyck, for wisely suggesting Python3 compatible updates to README. * Daniel Griffith for multiple fabulous patches. * Oscar Lesta for a valuable fix to stop ANSI chars being sent to non-tty output. * Roger Binns, for many suggestions, valuable feedback, & bug reports. * Tim Golden for thought and much appreciated feedback on the initial idea. * User 'Zearin' for updates to the README file. * John Szakmeister for adding support for light colors * Charles Merriam for adding documentation to demos * Jurko for a fix on 64-bit Windows CPython2.5 w/o ctypes * Florian Bruhin for a fix when stdout or stderr are None * Thomas Weininger for fixing ValueError on Windows * Remi Rampin for better Github integration and fixes to the README file * Simeon Visser for closing a file handle using 'with' and updating classifiers to include Python 3.3 and 3.4 * Andy Neff for fixing RESET of LIGHT_EX colors. * Jonathan Hartley for the initial idea and implementation. ================================================ FILE: libs/colorama-0.4.6.dist-info/RECORD ================================================ colorama/__init__.py,sha256=wePQA4U20tKgYARySLEC047ucNX-g8pRLpYBuiHlLb8,266 colorama/ansi.py,sha256=Top4EeEuaQdBWdteKMEcGOTeKeF19Q-Wo_6_Cj5kOzQ,2522 colorama/ansitowin32.py,sha256=vPNYa3OZbxjbuFyaVo0Tmhmy1FZ1lKMWCnT7odXpItk,11128 colorama/initialise.py,sha256=-hIny86ClXo39ixh5iSCfUIa2f_h_bgKRDW7gqs-KLU,3325 colorama/win32.py,sha256=YQOKwMTwtGBbsY4dL5HYTvwTeP9wIQra5MvPNddpxZs,6181 colorama/winterm.py,sha256=XCQFDHjPi6AHYNdZwy0tA02H-Jh48Jp-HvCjeLeLp3U,7134 colorama/tests/__init__.py,sha256=MkgPAEzGQd-Rq0w0PZXSX2LadRWhUECcisJY8lSrm4Q,75 colorama/tests/ansi_test.py,sha256=FeViDrUINIZcr505PAxvU4AjXz1asEiALs9GXMhwRaE,2839 colorama/tests/ansitowin32_test.py,sha256=RN7AIhMJ5EqDsYaCjVo-o4u8JzDD4ukJbmevWKS70rY,10678 colorama/tests/initialise_test.py,sha256=BbPy-XfyHwJ6zKozuQOvNvQZzsx9vdb_0bYXn7hsBTc,6741 colorama/tests/isatty_test.py,sha256=Pg26LRpv0yQDB5Ac-sxgVXG7hsA1NYvapFgApZfYzZg,1866 colorama/tests/utils.py,sha256=1IIRylG39z5-dzq09R_ngufxyPZxgldNbrxKxUGwGKE,1079 colorama/tests/winterm_test.py,sha256=qoWFPEjym5gm2RuMwpf3pOis3a5r_PJZFCzK254JL8A,3709 colorama-0.4.6.dist-info/METADATA,sha256=e67SnrUMOym9sz_4TjF3vxvAV4T3aF7NyqRHHH3YEMw,17158 colorama-0.4.6.dist-info/WHEEL,sha256=cdcF4Fbd0FPtw2EMIOwH-3rSOTUdTCeOSXRMD1iLUb8,105 colorama-0.4.6.dist-info/licenses/LICENSE.txt,sha256=ysNcAmhuXQSlpxQL-zs25zrtSWZW6JEQLkKIhteTAxg,1491 colorama-0.4.6.dist-info/RECORD,, ================================================ FILE: libs/colorama-0.4.6.dist-info/WHEEL ================================================ Wheel-Version: 1.0 Generator: hatchling 1.11.1 Root-Is-Purelib: true Tag: py2-none-any Tag: py3-none-any ================================================ FILE: libs/colorama-0.4.6.dist-info/licenses/LICENSE.txt ================================================ Copyright (c) 2010 Jonathan Hartley All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holders, nor those of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: libs/loguru/__init__.py ================================================ """ The Loguru library provides a pre-instanced logger to facilitate dealing with logging in Python. Just ``from loguru import logger``. """ import atexit as _atexit import sys as _sys from . import _defaults from ._logger import Core as _Core from ._logger import Logger as _Logger __version__ = "0.7.3" __all__ = ["logger"] logger = _Logger( core=_Core(), exception=None, depth=0, record=False, lazy=False, colors=False, raw=False, capture=True, patchers=[], extra={}, ) if _defaults.LOGURU_AUTOINIT and _sys.stderr: logger.add(_sys.stderr) _atexit.register(logger.remove) ================================================ FILE: libs/loguru/__init__.pyi ================================================ import sys from asyncio import AbstractEventLoop from datetime import datetime, time, timedelta from logging import Handler from multiprocessing.context import BaseContext from types import TracebackType from typing import ( Any, BinaryIO, Callable, Dict, Generator, Generic, List, NamedTuple, NewType, Optional, Pattern, Sequence, TextIO, Tuple, Type, TypeVar, Union, overload, ) if sys.version_info >= (3, 6): from typing import Awaitable else: from typing_extensions import Awaitable if sys.version_info >= (3, 6): from os import PathLike from typing import ContextManager PathLikeStr = PathLike[str] else: from pathlib import PurePath as PathLikeStr from typing_extensions import ContextManager if sys.version_info >= (3, 8): from typing import Protocol, TypedDict else: from typing_extensions import Protocol, TypedDict _T = TypeVar("_T") _F = TypeVar("_F", bound=Callable[..., Any]) ExcInfo = Tuple[Optional[Type[BaseException]], Optional[BaseException], Optional[TracebackType]] class _GeneratorContextManager(ContextManager[_T], Generic[_T]): def __call__(self, func: _F) -> _F: ... def __exit__( self, typ: Optional[Type[BaseException]], value: Optional[BaseException], traceback: Optional[TracebackType], ) -> Optional[bool]: ... Catcher = NewType("Catcher", _GeneratorContextManager[None]) Contextualizer = NewType("Contextualizer", _GeneratorContextManager[None]) AwaitableCompleter = Awaitable[None] class Level(NamedTuple): name: str no: int color: str icon: str class _RecordAttribute: def __format__(self, spec: str) -> str: ... class RecordFile(_RecordAttribute): name: str path: str class RecordLevel(_RecordAttribute): name: str no: int icon: str class RecordThread(_RecordAttribute): id: int name: str class RecordProcess(_RecordAttribute): id: int name: str class RecordException(NamedTuple): type: Optional[Type[BaseException]] value: Optional[BaseException] traceback: Optional[TracebackType] class Record(TypedDict): elapsed: timedelta exception: Optional[RecordException] extra: Dict[Any, Any] file: RecordFile function: str level: RecordLevel line: int message: str module: str name: Optional[str] process: RecordProcess thread: RecordThread time: datetime class Message(str): record: Record class Writable(Protocol): def write(self, message: Message) -> None: ... FilterDict = Dict[Optional[str], Union[str, int, bool]] FilterFunction = Callable[[Record], bool] FormatFunction = Callable[[Record], str] PatcherFunction = Callable[[Record], None] RotationFunction = Callable[[Message, TextIO], bool] RetentionFunction = Callable[[List[str]], None] CompressionFunction = Callable[[str], None] StandardOpener = Callable[[str, int], int] class BasicHandlerConfig(TypedDict, total=False): sink: Union[TextIO, Writable, Callable[[Message], None], Handler] level: Union[str, int] format: Union[str, FormatFunction] filter: Optional[Union[str, FilterFunction, FilterDict]] colorize: Optional[bool] serialize: bool backtrace: bool diagnose: bool enqueue: bool catch: bool class FileHandlerConfig(TypedDict, total=False): sink: Union[str, PathLikeStr] level: Union[str, int] format: Union[str, FormatFunction] filter: Optional[Union[str, FilterFunction, FilterDict]] colorize: Optional[bool] serialize: bool backtrace: bool diagnose: bool enqueue: bool catch: bool rotation: Optional[Union[str, int, time, timedelta, RotationFunction]] retention: Optional[Union[str, int, timedelta, RetentionFunction]] compression: Optional[Union[str, CompressionFunction]] delay: bool watch: bool mode: str buffering: int encoding: str errors: Optional[str] newline: Optional[str] closefd: bool opener: Optional[StandardOpener] class AsyncHandlerConfig(TypedDict, total=False): sink: Callable[[Message], Awaitable[None]] level: Union[str, int] format: Union[str, FormatFunction] filter: Optional[Union[str, FilterFunction, FilterDict]] colorize: Optional[bool] serialize: bool backtrace: bool diagnose: bool enqueue: bool catch: bool context: Optional[Union[str, BaseContext]] loop: Optional[AbstractEventLoop] HandlerConfig = Union[BasicHandlerConfig, FileHandlerConfig, AsyncHandlerConfig] class LevelConfig(TypedDict, total=False): name: str no: int color: str icon: str ActivationConfig = Tuple[Optional[str], bool] class Logger: @overload def add( self, sink: Union[TextIO, Writable, Callable[[Message], None], Handler], *, level: Union[str, int] = ..., format: Union[str, FormatFunction] = ..., filter: Optional[Union[str, FilterFunction, FilterDict]] = ..., colorize: Optional[bool] = ..., serialize: bool = ..., backtrace: bool = ..., diagnose: bool = ..., enqueue: bool = ..., context: Optional[Union[str, BaseContext]] = ..., catch: bool = ... ) -> int: ... @overload def add( self, sink: Callable[[Message], Awaitable[None]], *, level: Union[str, int] = ..., format: Union[str, FormatFunction] = ..., filter: Optional[Union[str, FilterFunction, FilterDict]] = ..., colorize: Optional[bool] = ..., serialize: bool = ..., backtrace: bool = ..., diagnose: bool = ..., enqueue: bool = ..., catch: bool = ..., context: Optional[Union[str, BaseContext]] = ..., loop: Optional[AbstractEventLoop] = ... ) -> int: ... @overload def add( self, sink: Union[str, PathLikeStr], *, level: Union[str, int] = ..., format: Union[str, FormatFunction] = ..., filter: Optional[Union[str, FilterFunction, FilterDict]] = ..., colorize: Optional[bool] = ..., serialize: bool = ..., backtrace: bool = ..., diagnose: bool = ..., enqueue: bool = ..., context: Optional[Union[str, BaseContext]] = ..., catch: bool = ..., rotation: Optional[Union[str, int, time, timedelta, RotationFunction]] = ..., retention: Optional[Union[str, int, timedelta, RetentionFunction]] = ..., compression: Optional[Union[str, CompressionFunction]] = ..., delay: bool = ..., watch: bool = ..., mode: str = ..., buffering: int = ..., encoding: str = ..., errors: Optional[str] = ..., newline: Optional[str] = ..., closefd: bool = ..., opener: Optional[StandardOpener] = ..., ) -> int: ... def remove(self, handler_id: Optional[int] = ...) -> None: ... def complete(self) -> AwaitableCompleter: ... @overload def catch( self, exception: Union[Type[BaseException], Tuple[Type[BaseException], ...]] = ..., *, level: Union[str, int] = ..., reraise: bool = ..., onerror: Optional[Callable[[BaseException], None]] = ..., exclude: Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]] = ..., default: Any = ..., message: str = ... ) -> Catcher: ... @overload def catch(self, function: _F) -> _F: ... def opt( self, *, exception: Optional[Union[bool, ExcInfo, BaseException]] = ..., record: bool = ..., lazy: bool = ..., colors: bool = ..., raw: bool = ..., capture: bool = ..., depth: int = ..., ansi: bool = ... ) -> Logger: ... def bind(__self, **kwargs: Any) -> Logger: ... # noqa: N805 def contextualize(__self, **kwargs: Any) -> Contextualizer: ... # noqa: N805 def patch(self, patcher: PatcherFunction) -> Logger: ... @overload def level(self, name: str) -> Level: ... @overload def level( self, name: str, no: int = ..., color: Optional[str] = ..., icon: Optional[str] = ... ) -> Level: ... @overload def level( self, name: str, no: Optional[int] = ..., color: Optional[str] = ..., icon: Optional[str] = ..., ) -> Level: ... def disable(self, name: Optional[str]) -> None: ... def enable(self, name: Optional[str]) -> None: ... def configure( self, *, handlers: Optional[Sequence[HandlerConfig]] = ..., levels: Optional[Sequence[LevelConfig]] = ..., extra: Optional[Dict[Any, Any]] = ..., patcher: Optional[PatcherFunction] = ..., activation: Optional[Sequence[ActivationConfig]] = ... ) -> List[int]: ... # @staticmethod cannot be used with @overload in mypy (python/mypy#7781). # However Logger is not exposed and logger is an instance of Logger # so for type checkers it is all the same whether it is defined here # as a static method or an instance method. @overload def parse( self, file: Union[str, PathLikeStr, TextIO], pattern: Union[str, Pattern[str]], *, cast: Union[Dict[str, Callable[[str], Any]], Callable[[Dict[str, str]], None]] = ..., chunk: int = ... ) -> Generator[Dict[str, Any], None, None]: ... @overload def parse( self, file: BinaryIO, pattern: Union[bytes, Pattern[bytes]], *, cast: Union[Dict[str, Callable[[bytes], Any]], Callable[[Dict[str, bytes]], None]] = ..., chunk: int = ... ) -> Generator[Dict[str, Any], None, None]: ... @overload def trace(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def trace(__self, __message: Any) -> None: ... # noqa: N805 @overload def debug(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def debug(__self, __message: Any) -> None: ... # noqa: N805 @overload def info(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def info(__self, __message: Any) -> None: ... # noqa: N805 @overload def success(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def success(__self, __message: Any) -> None: ... # noqa: N805 @overload def warning(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def warning(__self, __message: Any) -> None: ... # noqa: N805 @overload def error(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def error(__self, __message: Any) -> None: ... # noqa: N805 @overload def critical(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def critical(__self, __message: Any) -> None: ... # noqa: N805 @overload def exception(__self, __message: str, *args: Any, **kwargs: Any) -> None: ... # noqa: N805 @overload def exception(__self, __message: Any) -> None: ... # noqa: N805 @overload def log( __self, __level: Union[int, str], __message: str, *args: Any, **kwargs: Any # noqa: N805 ) -> None: ... @overload def log(__self, __level: Union[int, str], __message: Any) -> None: ... # noqa: N805 def start(self, *args: Any, **kwargs: Any) -> int: ... def stop(self, *args: Any, **kwargs: Any) -> None: ... logger: Logger ================================================ FILE: libs/loguru/_asyncio_loop.py ================================================ import asyncio import sys def load_loop_functions(): if sys.version_info >= (3, 7): def get_task_loop(task): return task.get_loop() get_running_loop = asyncio.get_running_loop else: def get_task_loop(task): return task._loop def get_running_loop(): loop = asyncio.get_event_loop() if not loop.is_running(): raise RuntimeError("There is no running event loop") return loop return get_task_loop, get_running_loop get_task_loop, get_running_loop = load_loop_functions() ================================================ FILE: libs/loguru/_better_exceptions.py ================================================ import builtins import inspect import io import keyword import linecache import os import re import sys import sysconfig import tokenize import traceback if sys.version_info >= (3, 11): def is_exception_group(exc): return isinstance(exc, ExceptionGroup) else: try: from exceptiongroup import ExceptionGroup except ImportError: def is_exception_group(exc): return False else: def is_exception_group(exc): return isinstance(exc, ExceptionGroup) class SyntaxHighlighter: _default_style = frozenset( { "comment": "\x1b[30m\x1b[1m{}\x1b[0m", "keyword": "\x1b[35m\x1b[1m{}\x1b[0m", "builtin": "\x1b[1m{}\x1b[0m", "string": "\x1b[36m{}\x1b[0m", "number": "\x1b[34m\x1b[1m{}\x1b[0m", "operator": "\x1b[35m\x1b[1m{}\x1b[0m", "punctuation": "\x1b[1m{}\x1b[0m", "constant": "\x1b[36m\x1b[1m{}\x1b[0m", "identifier": "\x1b[1m{}\x1b[0m", "other": "{}", }.items() ) _builtins = frozenset(dir(builtins)) _constants = frozenset({"True", "False", "None"}) _punctuation = frozenset({"(", ")", "[", "]", "{", "}", ":", ",", ";"}) if sys.version_info >= (3, 12): _strings = frozenset( {tokenize.STRING, tokenize.FSTRING_START, tokenize.FSTRING_MIDDLE, tokenize.FSTRING_END} ) _fstring_middle = tokenize.FSTRING_MIDDLE else: _strings = frozenset({tokenize.STRING}) _fstring_middle = None def __init__(self, style=None): self._style = style or dict(self._default_style) def highlight(self, source): style = self._style row, column = 0, 0 output = "" for token in self.tokenize(source): type_, string, (start_row, start_column), (_, end_column), line = token if type_ == self._fstring_middle: # When an f-string contains "{{" or "}}", they appear as "{" or "}" in the "string" # attribute of the token. However, they do not count in the column position. end_column += string.count("{") + string.count("}") if type_ == tokenize.NAME: if string in self._constants: color = style["constant"] elif keyword.iskeyword(string): color = style["keyword"] elif string in self._builtins: color = style["builtin"] else: color = style["identifier"] elif type_ == tokenize.OP: if string in self._punctuation: color = style["punctuation"] else: color = style["operator"] elif type_ == tokenize.NUMBER: color = style["number"] elif type_ in self._strings: color = style["string"] elif type_ == tokenize.COMMENT: color = style["comment"] else: color = style["other"] if start_row != row: source = source[column:] row, column = start_row, 0 if type_ != tokenize.ENCODING: output += line[column:start_column] output += color.format(line[start_column:end_column]) column = end_column output += source[column:] return output @staticmethod def tokenize(source): # Worth reading: https://www.asmeurer.com/brown-water-python/ source = source.encode("utf-8") source = io.BytesIO(source) try: yield from tokenize.tokenize(source.readline) except tokenize.TokenError: return class ExceptionFormatter: _default_theme = frozenset( { "introduction": "\x1b[33m\x1b[1m{}\x1b[0m", "cause": "\x1b[1m{}\x1b[0m", "context": "\x1b[1m{}\x1b[0m", "dirname": "\x1b[32m{}\x1b[0m", "basename": "\x1b[32m\x1b[1m{}\x1b[0m", "line": "\x1b[33m{}\x1b[0m", "function": "\x1b[35m{}\x1b[0m", "exception_type": "\x1b[31m\x1b[1m{}\x1b[0m", "exception_value": "\x1b[1m{}\x1b[0m", "arrows": "\x1b[36m{}\x1b[0m", "value": "\x1b[36m\x1b[1m{}\x1b[0m", }.items() ) def __init__( self, colorize=False, backtrace=False, diagnose=True, theme=None, style=None, max_length=128, encoding="ascii", hidden_frames_filename=None, prefix="", ): self._colorize = colorize self._diagnose = diagnose self._theme = theme or dict(self._default_theme) self._backtrace = backtrace self._syntax_highlighter = SyntaxHighlighter(style) self._max_length = max_length self._encoding = encoding self._hidden_frames_filename = hidden_frames_filename self._prefix = prefix self._lib_dirs = self._get_lib_dirs() self._pipe_char = self._get_char("\u2502", "|") self._cap_char = self._get_char("\u2514", "->") self._catch_point_identifier = " " @staticmethod def _get_lib_dirs(): schemes = sysconfig.get_scheme_names() names = ["stdlib", "platstdlib", "platlib", "purelib"] paths = {sysconfig.get_path(name, scheme) for scheme in schemes for name in names} return [os.path.abspath(path).lower() + os.sep for path in paths if path in sys.path] @staticmethod def _indent(text, count, *, prefix="| "): if count == 0: yield text return for line in text.splitlines(True): indented = " " * count + prefix + line yield indented.rstrip() + "\n" def _get_char(self, char, default): try: char.encode(self._encoding) except (UnicodeEncodeError, LookupError): return default else: return char def _is_file_mine(self, file): filepath = os.path.abspath(file).lower() if not filepath.endswith(".py"): return False return not any(filepath.startswith(d) for d in self._lib_dirs) def _extract_frames(self, tb, is_first, *, limit=None, from_decorator=False): frames, final_source = [], None if tb is None or (limit is not None and limit <= 0): return frames, final_source def is_valid(frame): return frame.f_code.co_filename != self._hidden_frames_filename def get_info(frame, lineno): filename = frame.f_code.co_filename function = frame.f_code.co_name source = linecache.getline(filename, lineno).strip() return filename, lineno, function, source infos = [] if is_valid(tb.tb_frame): infos.append((get_info(tb.tb_frame, tb.tb_lineno), tb.tb_frame)) get_parent_only = from_decorator and not self._backtrace if (self._backtrace and is_first) or get_parent_only: frame = tb.tb_frame.f_back while frame: if is_valid(frame): infos.insert(0, (get_info(frame, frame.f_lineno), frame)) if get_parent_only: break frame = frame.f_back if infos and not get_parent_only: (filename, lineno, function, source), frame = infos[-1] function += self._catch_point_identifier infos[-1] = ((filename, lineno, function, source), frame) tb = tb.tb_next while tb: if is_valid(tb.tb_frame): infos.append((get_info(tb.tb_frame, tb.tb_lineno), tb.tb_frame)) tb = tb.tb_next if limit is not None: infos = infos[-limit:] for (filename, lineno, function, source), frame in infos: final_source = source if source: colorize = self._colorize and self._is_file_mine(filename) lines = [] if colorize: lines.append(self._syntax_highlighter.highlight(source)) else: lines.append(source) if self._diagnose: relevant_values = self._get_relevant_values(source, frame) values = self._format_relevant_values(list(relevant_values), colorize) lines += list(values) source = "\n ".join(lines) frames.append((filename, lineno, function, source)) return frames, final_source def _get_relevant_values(self, source, frame): value = None pending = None is_attribute = False is_valid_value = False is_assignment = True for token in self._syntax_highlighter.tokenize(source): type_, string, (_, col), *_ = token if pending is not None: # Keyword arguments are ignored if type_ != tokenize.OP or string != "=" or is_assignment: yield pending pending = None if type_ == tokenize.NAME and not keyword.iskeyword(string): if not is_attribute: for variables in (frame.f_locals, frame.f_globals): try: value = variables[string] except KeyError: continue else: is_valid_value = True pending = (col, self._format_value(value)) break elif is_valid_value: try: value = inspect.getattr_static(value, string) except AttributeError: is_valid_value = False else: yield (col, self._format_value(value)) elif type_ == tokenize.OP and string == ".": is_attribute = True is_assignment = False elif type_ == tokenize.OP and string == ";": is_assignment = True is_attribute = False is_valid_value = False else: is_attribute = False is_valid_value = False is_assignment = False if pending is not None: yield pending def _format_relevant_values(self, relevant_values, colorize): for i in reversed(range(len(relevant_values))): col, value = relevant_values[i] pipe_cols = [pcol for pcol, _ in relevant_values[:i]] pre_line = "" index = 0 for pc in pipe_cols: pre_line += (" " * (pc - index)) + self._pipe_char index = pc + 1 pre_line += " " * (col - index) value_lines = value.split("\n") for n, value_line in enumerate(value_lines): if n == 0: arrows = pre_line + self._cap_char + " " else: arrows = pre_line + " " * (len(self._cap_char) + 1) if colorize: arrows = self._theme["arrows"].format(arrows) value_line = self._theme["value"].format(value_line) yield arrows + value_line def _format_value(self, v): try: v = repr(v) except Exception: v = "" % type(v).__name__ max_length = self._max_length if max_length is not None and len(v) > max_length: v = v[: max_length - 3] + "..." return v def _format_locations(self, frames_lines, *, has_introduction): prepend_with_new_line = has_introduction regex = r'^ File "(?P.*?)", line (?P[^,]+)(?:, in (?P.*))?\n' for frame in frames_lines: match = re.match(regex, frame) if match: file, line, function = match.group("file", "line", "function") is_mine = self._is_file_mine(file) if function is not None: pattern = ' File "{}", line {}, in {}\n' else: pattern = ' File "{}", line {}\n' if self._backtrace and function and function.endswith(self._catch_point_identifier): function = function[: -len(self._catch_point_identifier)] pattern = ">" + pattern[1:] if self._colorize and is_mine: dirname, basename = os.path.split(file) if dirname: dirname += os.sep dirname = self._theme["dirname"].format(dirname) basename = self._theme["basename"].format(basename) file = dirname + basename line = self._theme["line"].format(line) function = self._theme["function"].format(function) if self._diagnose and (is_mine or prepend_with_new_line): pattern = "\n" + pattern location = pattern.format(file, line, function) frame = location + frame[match.end() :] prepend_with_new_line = is_mine yield frame def _format_exception( self, value, tb, *, seen=None, is_first=False, from_decorator=False, group_nesting=0 ): # Implemented from built-in traceback module: # https://github.com/python/cpython/blob/a5b76167/Lib/traceback.py#L468 exc_type, exc_value, exc_traceback = type(value), value, tb if seen is None: seen = set() seen.add(id(exc_value)) if exc_value: if exc_value.__cause__ is not None and id(exc_value.__cause__) not in seen: yield from self._format_exception( exc_value.__cause__, exc_value.__cause__.__traceback__, seen=seen, group_nesting=group_nesting, ) cause = "The above exception was the direct cause of the following exception:" if self._colorize: cause = self._theme["cause"].format(cause) if self._diagnose: yield from self._indent("\n\n" + cause + "\n\n\n", group_nesting) else: yield from self._indent("\n" + cause + "\n\n", group_nesting) elif ( exc_value.__context__ is not None and id(exc_value.__context__) not in seen and not exc_value.__suppress_context__ ): yield from self._format_exception( exc_value.__context__, exc_value.__context__.__traceback__, seen=seen, group_nesting=group_nesting, ) context = "During handling of the above exception, another exception occurred:" if self._colorize: context = self._theme["context"].format(context) if self._diagnose: yield from self._indent("\n\n" + context + "\n\n\n", group_nesting) else: yield from self._indent("\n" + context + "\n\n", group_nesting) is_grouped = is_exception_group(value) if is_grouped and group_nesting == 0: yield from self._format_exception( value, tb, seen=seen, group_nesting=1, is_first=is_first, from_decorator=from_decorator, ) return try: traceback_limit = sys.tracebacklimit except AttributeError: traceback_limit = None frames, final_source = self._extract_frames( exc_traceback, is_first, limit=traceback_limit, from_decorator=from_decorator ) exception_only = traceback.format_exception_only(exc_type, exc_value) # Determining the correct index for the "Exception: message" part in the formatted exception # is challenging. This is because it might be preceded by multiple lines specific to # "SyntaxError" or followed by various notes. However, we can make an educated guess based # on the indentation; the preliminary context for "SyntaxError" is always indented, while # the Exception itself is not. This allows us to identify the correct index for the # exception message. no_indented_indexes = (i for i, p in enumerate(exception_only) if not p.startswith(" ")) error_message_index = next(no_indented_indexes, None) if error_message_index is not None: # Remove final new line temporarily. error_message = exception_only[error_message_index][:-1] if self._colorize: if ":" in error_message: exception_type, exception_value = error_message.split(":", 1) exception_type = self._theme["exception_type"].format(exception_type) exception_value = self._theme["exception_value"].format(exception_value) error_message = exception_type + ":" + exception_value else: error_message = self._theme["exception_type"].format(error_message) if self._diagnose and frames: if issubclass(exc_type, AssertionError) and not str(exc_value) and final_source: if self._colorize: final_source = self._syntax_highlighter.highlight(final_source) error_message += ": " + final_source error_message = "\n" + error_message exception_only[error_message_index] = error_message + "\n" if is_first: yield self._prefix has_introduction = bool(frames) if has_introduction: if is_grouped: introduction = "Exception Group Traceback (most recent call last):" else: introduction = "Traceback (most recent call last):" if self._colorize: introduction = self._theme["introduction"].format(introduction) if group_nesting == 1: # Implies we're processing the root ExceptionGroup. yield from self._indent(introduction + "\n", group_nesting, prefix="+ ") else: yield from self._indent(introduction + "\n", group_nesting) frames_lines = self._format_list(frames) + exception_only if self._colorize or self._backtrace or self._diagnose: frames_lines = self._format_locations(frames_lines, has_introduction=has_introduction) yield from self._indent("".join(frames_lines), group_nesting) if is_grouped: exc = None for n, exc in enumerate(value.exceptions, start=1): ruler = "+" + (" %s " % ("..." if n > 15 else n)).center(35, "-") yield from self._indent(ruler, group_nesting, prefix="+-" if n == 1 else " ") if n > 15: message = "and %d more exceptions\n" % (len(value.exceptions) - 15) yield from self._indent(message, group_nesting + 1) break elif group_nesting == 10 and is_exception_group(exc): message = "... (max_group_depth is 10)\n" yield from self._indent(message, group_nesting + 1) else: yield from self._format_exception( exc, exc.__traceback__, seen=seen, group_nesting=group_nesting + 1, ) if not is_exception_group(exc) or group_nesting == 10: yield from self._indent("-" * 35, group_nesting + 1, prefix="+-") def _format_list(self, frames): def source_message(filename, lineno, name, line): message = ' File "%s", line %d, in %s\n' % (filename, lineno, name) if line: message += " %s\n" % line.strip() return message def skip_message(count): plural = "s" if count > 1 else "" return " [Previous line repeated %d more time%s]\n" % (count, plural) result = [] count = 0 last_source = None for *source, line in frames: if source != last_source and count > 3: result.append(skip_message(count - 3)) if source == last_source: count += 1 if count > 3: continue else: count = 1 result.append(source_message(*source, line)) last_source = source # Add a final skip message if the iteration of frames ended mid-repetition. if count > 3: result.append(skip_message(count - 3)) return result def format_exception(self, type_, value, tb, *, from_decorator=False): yield from self._format_exception(value, tb, is_first=True, from_decorator=from_decorator) ================================================ FILE: libs/loguru/_colorama.py ================================================ import builtins import os import sys def should_colorize(stream): if stream is None: return False if getattr(builtins, "__IPYTHON__", False) and (stream is sys.stdout or stream is sys.stderr): try: import ipykernel import IPython ipython = IPython.get_ipython() is_jupyter_stream = isinstance(stream, ipykernel.iostream.OutStream) is_jupyter_shell = isinstance(ipython, ipykernel.zmqshell.ZMQInteractiveShell) except Exception: pass else: if is_jupyter_stream and is_jupyter_shell: return True if stream is sys.__stdout__ or stream is sys.__stderr__: if "CI" in os.environ and any( ci in os.environ for ci in ["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS"] ): return True if "PYCHARM_HOSTED" in os.environ: return True if os.name == "nt" and "TERM" in os.environ: return True try: return stream.isatty() except Exception: return False def should_wrap(stream): if os.name != "nt": return False if stream is not sys.__stdout__ and stream is not sys.__stderr__: return False from colorama.win32 import winapi_test if not winapi_test(): return False try: from colorama.winterm import enable_vt_processing except ImportError: return True try: return not enable_vt_processing(stream.fileno()) except Exception: return True def wrap(stream): from colorama import AnsiToWin32 return AnsiToWin32(stream, convert=True, strip=True, autoreset=False).stream ================================================ FILE: libs/loguru/_colorizer.py ================================================ import re from string import Formatter class Style: RESET_ALL = 0 BOLD = 1 DIM = 2 ITALIC = 3 UNDERLINE = 4 BLINK = 5 REVERSE = 7 HIDE = 8 STRIKE = 9 NORMAL = 22 class Fore: BLACK = 30 RED = 31 GREEN = 32 YELLOW = 33 BLUE = 34 MAGENTA = 35 CYAN = 36 WHITE = 37 RESET = 39 LIGHTBLACK_EX = 90 LIGHTRED_EX = 91 LIGHTGREEN_EX = 92 LIGHTYELLOW_EX = 93 LIGHTBLUE_EX = 94 LIGHTMAGENTA_EX = 95 LIGHTCYAN_EX = 96 LIGHTWHITE_EX = 97 class Back: BLACK = 40 RED = 41 GREEN = 42 YELLOW = 43 BLUE = 44 MAGENTA = 45 CYAN = 46 WHITE = 47 RESET = 49 LIGHTBLACK_EX = 100 LIGHTRED_EX = 101 LIGHTGREEN_EX = 102 LIGHTYELLOW_EX = 103 LIGHTBLUE_EX = 104 LIGHTMAGENTA_EX = 105 LIGHTCYAN_EX = 106 LIGHTWHITE_EX = 107 def ansi_escape(codes): return {name: "\033[%dm" % code for name, code in codes.items()} class TokenType: TEXT = 1 ANSI = 2 LEVEL = 3 CLOSING = 4 class AnsiParser: _style = ansi_escape( { "b": Style.BOLD, "d": Style.DIM, "n": Style.NORMAL, "h": Style.HIDE, "i": Style.ITALIC, "l": Style.BLINK, "s": Style.STRIKE, "u": Style.UNDERLINE, "v": Style.REVERSE, "bold": Style.BOLD, "dim": Style.DIM, "normal": Style.NORMAL, "hide": Style.HIDE, "italic": Style.ITALIC, "blink": Style.BLINK, "strike": Style.STRIKE, "underline": Style.UNDERLINE, "reverse": Style.REVERSE, } ) _foreground = ansi_escape( { "k": Fore.BLACK, "r": Fore.RED, "g": Fore.GREEN, "y": Fore.YELLOW, "e": Fore.BLUE, "m": Fore.MAGENTA, "c": Fore.CYAN, "w": Fore.WHITE, "lk": Fore.LIGHTBLACK_EX, "lr": Fore.LIGHTRED_EX, "lg": Fore.LIGHTGREEN_EX, "ly": Fore.LIGHTYELLOW_EX, "le": Fore.LIGHTBLUE_EX, "lm": Fore.LIGHTMAGENTA_EX, "lc": Fore.LIGHTCYAN_EX, "lw": Fore.LIGHTWHITE_EX, "black": Fore.BLACK, "red": Fore.RED, "green": Fore.GREEN, "yellow": Fore.YELLOW, "blue": Fore.BLUE, "magenta": Fore.MAGENTA, "cyan": Fore.CYAN, "white": Fore.WHITE, "light-black": Fore.LIGHTBLACK_EX, "light-red": Fore.LIGHTRED_EX, "light-green": Fore.LIGHTGREEN_EX, "light-yellow": Fore.LIGHTYELLOW_EX, "light-blue": Fore.LIGHTBLUE_EX, "light-magenta": Fore.LIGHTMAGENTA_EX, "light-cyan": Fore.LIGHTCYAN_EX, "light-white": Fore.LIGHTWHITE_EX, } ) _background = ansi_escape( { "K": Back.BLACK, "R": Back.RED, "G": Back.GREEN, "Y": Back.YELLOW, "E": Back.BLUE, "M": Back.MAGENTA, "C": Back.CYAN, "W": Back.WHITE, "LK": Back.LIGHTBLACK_EX, "LR": Back.LIGHTRED_EX, "LG": Back.LIGHTGREEN_EX, "LY": Back.LIGHTYELLOW_EX, "LE": Back.LIGHTBLUE_EX, "LM": Back.LIGHTMAGENTA_EX, "LC": Back.LIGHTCYAN_EX, "LW": Back.LIGHTWHITE_EX, "BLACK": Back.BLACK, "RED": Back.RED, "GREEN": Back.GREEN, "YELLOW": Back.YELLOW, "BLUE": Back.BLUE, "MAGENTA": Back.MAGENTA, "CYAN": Back.CYAN, "WHITE": Back.WHITE, "LIGHT-BLACK": Back.LIGHTBLACK_EX, "LIGHT-RED": Back.LIGHTRED_EX, "LIGHT-GREEN": Back.LIGHTGREEN_EX, "LIGHT-YELLOW": Back.LIGHTYELLOW_EX, "LIGHT-BLUE": Back.LIGHTBLUE_EX, "LIGHT-MAGENTA": Back.LIGHTMAGENTA_EX, "LIGHT-CYAN": Back.LIGHTCYAN_EX, "LIGHT-WHITE": Back.LIGHTWHITE_EX, } ) _regex_tag = re.compile(r"(\\*)(\s]*>)") def __init__(self): self._tokens = [] self._tags = [] self._color_tokens = [] @staticmethod def strip(tokens): output = "" for type_, value in tokens: if type_ == TokenType.TEXT: output += value return output @staticmethod def colorize(tokens, ansi_level): output = "" for type_, value in tokens: if type_ == TokenType.LEVEL: if ansi_level is None: raise ValueError( "The '' color tag is not allowed in this context, " "it has not yet been associated to any color value." ) value = ansi_level output += value return output @staticmethod def wrap(tokens, *, ansi_level, color_tokens): output = "" for type_, value in tokens: if type_ == TokenType.LEVEL: value = ansi_level output += value if type_ == TokenType.CLOSING: for subtype, subvalue in color_tokens: if subtype == TokenType.LEVEL: subvalue = ansi_level output += subvalue return output def feed(self, text, *, raw=False): if raw: self._tokens.append((TokenType.TEXT, text)) return position = 0 for match in self._regex_tag.finditer(text): escaping, markup = match.group(1), match.group(2) self._tokens.append((TokenType.TEXT, text[position : match.start()])) position = match.end() escaping_count = len(escaping) backslashes = "\\" * (escaping_count // 2) if escaping_count % 2 == 1: self._tokens.append((TokenType.TEXT, backslashes + markup)) continue if escaping_count > 0: self._tokens.append((TokenType.TEXT, backslashes)) is_closing = markup[1] == "/" tag = markup[2:-1] if is_closing else markup[1:-1] if is_closing: if self._tags and (tag == "" or tag == self._tags[-1]): self._tags.pop() self._color_tokens.pop() self._tokens.append((TokenType.CLOSING, "\033[0m")) self._tokens.extend(self._color_tokens) continue if tag in self._tags: raise ValueError('Closing tag "%s" violates nesting rules' % markup) raise ValueError('Closing tag "%s" has no corresponding opening tag' % markup) if tag in {"lvl", "level"}: token = (TokenType.LEVEL, None) else: ansi = self._get_ansicode(tag) if ansi is None: raise ValueError( 'Tag "%s" does not correspond to any known color directive, ' "make sure you did not misspelled it (or prepend '\\' to escape it)" % markup ) token = (TokenType.ANSI, ansi) self._tags.append(tag) self._color_tokens.append(token) self._tokens.append(token) self._tokens.append((TokenType.TEXT, text[position:])) def done(self, *, strict=True): if strict and self._tags: faulty_tag = self._tags.pop(0) raise ValueError('Opening tag "<%s>" has no corresponding closing tag' % faulty_tag) return self._tokens def current_color_tokens(self): return list(self._color_tokens) def _get_ansicode(self, tag): style = self._style foreground = self._foreground background = self._background # Substitute on a direct match. if tag in style: return style[tag] if tag in foreground: return foreground[tag] if tag in background: return background[tag] # An alternative syntax for setting the color (e.g. , ). if tag.startswith("fg ") or tag.startswith("bg "): st, color = tag[:2], tag[3:] code = "38" if st == "fg" else "48" if st == "fg" and color.lower() in foreground: return foreground[color.lower()] if st == "bg" and color.upper() in background: return background[color.upper()] if color.isdigit() and int(color) <= 255: return "\033[%s;5;%sm" % (code, color) if re.match(r"#(?:[a-fA-F0-9]{3}){1,2}$", color): hex_color = color[1:] if len(hex_color) == 3: hex_color *= 2 rgb = tuple(int(hex_color[i : i + 2], 16) for i in (0, 2, 4)) return "\033[%s;2;%s;%s;%sm" % ((code, *rgb)) if color.count(",") == 2: colors = tuple(color.split(",")) if all(x.isdigit() and int(x) <= 255 for x in colors): return "\033[%s;2;%s;%s;%sm" % ((code, *colors)) return None class ColoringMessage(str): __fields__ = ("_messages",) def __format__(self, spec): return next(self._messages).__format__(spec) class ColoredMessage: def __init__(self, tokens): self.tokens = tokens self.stripped = AnsiParser.strip(tokens) def colorize(self, ansi_level): return AnsiParser.colorize(self.tokens, ansi_level) class ColoredFormat: def __init__(self, tokens, messages_color_tokens): self._tokens = tokens self._messages_color_tokens = messages_color_tokens def strip(self): return AnsiParser.strip(self._tokens) def colorize(self, ansi_level): return AnsiParser.colorize(self._tokens, ansi_level) def make_coloring_message(self, message, *, ansi_level, colored_message): messages = [ ( message if color_tokens is None else AnsiParser.wrap( colored_message.tokens, ansi_level=ansi_level, color_tokens=color_tokens ) ) for color_tokens in self._messages_color_tokens ] coloring = ColoringMessage(message) coloring._messages = iter(messages) return coloring class Colorizer: @staticmethod def prepare_format(string): tokens, messages_color_tokens = Colorizer._parse_without_formatting(string) return ColoredFormat(tokens, messages_color_tokens) @staticmethod def prepare_message(string, args=(), kwargs={}): # noqa: B006 tokens = Colorizer._parse_with_formatting(string, args, kwargs) return ColoredMessage(tokens) @staticmethod def prepare_simple_message(string): parser = AnsiParser() parser.feed(string) tokens = parser.done() return ColoredMessage(tokens) @staticmethod def ansify(text): parser = AnsiParser() parser.feed(text.strip()) tokens = parser.done(strict=False) return AnsiParser.colorize(tokens, None) @staticmethod def _parse_with_formatting( string, args, kwargs, *, recursion_depth=2, auto_arg_index=0, recursive=False ): # This function re-implements Formatter._vformat() if recursion_depth < 0: raise ValueError("Max string recursion exceeded") formatter = Formatter() parser = AnsiParser() for literal_text, field_name, format_spec, conversion in formatter.parse(string): parser.feed(literal_text, raw=recursive) if field_name is not None: if field_name == "": if auto_arg_index is False: raise ValueError( "cannot switch from manual field " "specification to automatic field " "numbering" ) field_name = str(auto_arg_index) auto_arg_index += 1 elif field_name.isdigit(): if auto_arg_index: raise ValueError( "cannot switch from manual field " "specification to automatic field " "numbering" ) auto_arg_index = False obj, _ = formatter.get_field(field_name, args, kwargs) obj = formatter.convert_field(obj, conversion) format_spec, auto_arg_index = Colorizer._parse_with_formatting( format_spec, args, kwargs, recursion_depth=recursion_depth - 1, auto_arg_index=auto_arg_index, recursive=True, ) formatted = formatter.format_field(obj, format_spec) parser.feed(formatted, raw=True) tokens = parser.done() if recursive: return AnsiParser.strip(tokens), auto_arg_index return tokens @staticmethod def _parse_without_formatting(string, *, recursion_depth=2, recursive=False): if recursion_depth < 0: raise ValueError("Max string recursion exceeded") formatter = Formatter() parser = AnsiParser() messages_color_tokens = [] for literal_text, field_name, format_spec, conversion in formatter.parse(string): if literal_text and literal_text[-1] in "{}": literal_text += literal_text[-1] parser.feed(literal_text, raw=recursive) if field_name is not None: if field_name == "message": if recursive: messages_color_tokens.append(None) else: color_tokens = parser.current_color_tokens() messages_color_tokens.append(color_tokens) field = "{%s" % field_name if conversion: field += "!%s" % conversion if format_spec: field += ":%s" % format_spec field += "}" parser.feed(field, raw=True) _, color_tokens = Colorizer._parse_without_formatting( format_spec, recursion_depth=recursion_depth - 1, recursive=True ) messages_color_tokens.extend(color_tokens) return parser.done(), messages_color_tokens ================================================ FILE: libs/loguru/_contextvars.py ================================================ import sys def load_contextvar_class(): if sys.version_info >= (3, 7): from contextvars import ContextVar elif sys.version_info >= (3, 5, 3): from aiocontextvars import ContextVar else: from contextvars import ContextVar return ContextVar ContextVar = load_contextvar_class() ================================================ FILE: libs/loguru/_ctime_functions.py ================================================ import os def load_ctime_functions(): if os.name == "nt": import win32_setctime def get_ctime_windows(filepath): return os.stat(filepath).st_ctime def set_ctime_windows(filepath, timestamp): if not win32_setctime.SUPPORTED: return try: win32_setctime.setctime(filepath, timestamp) except (OSError, ValueError): pass return get_ctime_windows, set_ctime_windows if hasattr(os.stat_result, "st_birthtime"): def get_ctime_macos(filepath): return os.stat(filepath).st_birthtime def set_ctime_macos(filepath, timestamp): pass return get_ctime_macos, set_ctime_macos if hasattr(os, "getxattr") and hasattr(os, "setxattr"): def get_ctime_linux(filepath): try: return float(os.getxattr(filepath, b"user.loguru_crtime")) except OSError: return os.stat(filepath).st_mtime def set_ctime_linux(filepath, timestamp): try: os.setxattr(filepath, b"user.loguru_crtime", str(timestamp).encode("ascii")) except OSError: pass return get_ctime_linux, set_ctime_linux def get_ctime_fallback(filepath): return os.stat(filepath).st_mtime def set_ctime_fallback(filepath, timestamp): pass return get_ctime_fallback, set_ctime_fallback get_ctime, set_ctime = load_ctime_functions() ================================================ FILE: libs/loguru/_datetime.py ================================================ import re from calendar import day_abbr, day_name, month_abbr, month_name from datetime import datetime as datetime_ from datetime import timedelta, timezone from functools import lru_cache, partial from time import localtime, strftime tokens = r"H{1,2}|h{1,2}|m{1,2}|s{1,2}|S+|YYYY|YY|M{1,4}|D{1,4}|Z{1,2}|zz|A|X|x|E|Q|dddd|ddd|d" pattern = re.compile(r"(?:{0})|\[(?:{0}|!UTC|)\]".format(tokens)) def _builtin_datetime_formatter(is_utc, format_string, dt): if is_utc: dt = dt.astimezone(timezone.utc) return dt.strftime(format_string) def _loguru_datetime_formatter(is_utc, format_string, formatters, dt): if is_utc: dt = dt.astimezone(timezone.utc) t = dt.timetuple() args = tuple(f(t, dt) for f in formatters) return format_string % args def _default_datetime_formatter(dt): return "%04d-%02d-%02d %02d:%02d:%02d.%03d" % ( dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond // 1000, ) def _format_timezone(tzinfo, *, sep): offset = tzinfo.utcoffset(None).total_seconds() sign = "+" if offset >= 0 else "-" (h, m), s = divmod(abs(offset // 60), 60), abs(offset) % 60 z = "%s%02d%s%02d" % (sign, h, sep, m) if s > 0: if s.is_integer(): z += "%s%02d" % (sep, s) else: z += "%s%09.06f" % (sep, s) return z @lru_cache(maxsize=32) def _compile_format(spec): if spec == "YYYY-MM-DD HH:mm:ss.SSS": return _default_datetime_formatter is_utc = spec.endswith("!UTC") if is_utc: spec = spec[:-4] if not spec: spec = "%Y-%m-%dT%H:%M:%S.%f%z" if "%" in spec: return partial(_builtin_datetime_formatter, is_utc, spec) if "SSSSSSS" in spec: raise ValueError( "Invalid time format: the provided format string contains more than six successive " "'S' characters. This may be due to an attempt to use nanosecond precision, which " "is not supported." ) rep = { "YYYY": ("%04d", lambda t, dt: t.tm_year), "YY": ("%02d", lambda t, dt: t.tm_year % 100), "Q": ("%d", lambda t, dt: (t.tm_mon - 1) // 3 + 1), "MMMM": ("%s", lambda t, dt: month_name[t.tm_mon]), "MMM": ("%s", lambda t, dt: month_abbr[t.tm_mon]), "MM": ("%02d", lambda t, dt: t.tm_mon), "M": ("%d", lambda t, dt: t.tm_mon), "DDDD": ("%03d", lambda t, dt: t.tm_yday), "DDD": ("%d", lambda t, dt: t.tm_yday), "DD": ("%02d", lambda t, dt: t.tm_mday), "D": ("%d", lambda t, dt: t.tm_mday), "dddd": ("%s", lambda t, dt: day_name[t.tm_wday]), "ddd": ("%s", lambda t, dt: day_abbr[t.tm_wday]), "d": ("%d", lambda t, dt: t.tm_wday), "E": ("%d", lambda t, dt: t.tm_wday + 1), "HH": ("%02d", lambda t, dt: t.tm_hour), "H": ("%d", lambda t, dt: t.tm_hour), "hh": ("%02d", lambda t, dt: (t.tm_hour - 1) % 12 + 1), "h": ("%d", lambda t, dt: (t.tm_hour - 1) % 12 + 1), "mm": ("%02d", lambda t, dt: t.tm_min), "m": ("%d", lambda t, dt: t.tm_min), "ss": ("%02d", lambda t, dt: t.tm_sec), "s": ("%d", lambda t, dt: t.tm_sec), "S": ("%d", lambda t, dt: dt.microsecond // 100000), "SS": ("%02d", lambda t, dt: dt.microsecond // 10000), "SSS": ("%03d", lambda t, dt: dt.microsecond // 1000), "SSSS": ("%04d", lambda t, dt: dt.microsecond // 100), "SSSSS": ("%05d", lambda t, dt: dt.microsecond // 10), "SSSSSS": ("%06d", lambda t, dt: dt.microsecond), "A": ("%s", lambda t, dt: "AM" if t.tm_hour < 12 else "PM"), "Z": ("%s", lambda t, dt: _format_timezone(dt.tzinfo or timezone.utc, sep=":")), "ZZ": ("%s", lambda t, dt: _format_timezone(dt.tzinfo or timezone.utc, sep="")), "zz": ("%s", lambda t, dt: (dt.tzinfo or timezone.utc).tzname(dt) or ""), "X": ("%d", lambda t, dt: dt.timestamp()), "x": ("%d", lambda t, dt: int(dt.timestamp() * 1000000 + dt.microsecond)), } format_string = "" formatters = [] pos = 0 for match in pattern.finditer(spec): start, end = match.span() format_string += spec[pos:start] pos = end token = match.group(0) try: specifier, formatter = rep[token] except KeyError: format_string += token[1:-1] else: format_string += specifier formatters.append(formatter) format_string += spec[pos:] return partial(_loguru_datetime_formatter, is_utc, format_string, formatters) class datetime(datetime_): # noqa: N801 def __format__(self, fmt): return _compile_format(fmt)(self) def aware_now(): now = datetime_.now() timestamp = now.timestamp() local = localtime(timestamp) try: seconds = local.tm_gmtoff zone = local.tm_zone except AttributeError: # Workaround for Python 3.5. utc_naive = datetime_.fromtimestamp(timestamp, tz=timezone.utc).replace(tzinfo=None) offset = datetime_.fromtimestamp(timestamp) - utc_naive seconds = offset.total_seconds() zone = strftime("%Z") tzinfo = timezone(timedelta(seconds=seconds), zone) return datetime.combine(now.date(), now.time().replace(tzinfo=tzinfo)) ================================================ FILE: libs/loguru/_defaults.py ================================================ from os import environ def env(key, type_, default=None): if key not in environ: return default val = environ[key] if type_ is str: return val if type_ is bool: if val.lower() in ["1", "true", "yes", "y", "ok", "on"]: return True if val.lower() in ["0", "false", "no", "n", "nok", "off"]: return False raise ValueError( "Invalid environment variable '%s' (expected a boolean): '%s'" % (key, val) ) if type_ is int: try: return int(val) except ValueError: raise ValueError( "Invalid environment variable '%s' (expected an integer): '%s'" % (key, val) ) from None raise ValueError("The requested type '%s' is not supported" % type_.__name__) LOGURU_AUTOINIT = env("LOGURU_AUTOINIT", bool, True) LOGURU_FORMAT = env( "LOGURU_FORMAT", str, "{time:YYYY-MM-DD HH:mm:ss.SSS} | " "{level: <8} | " "{name}:{function}:{line} - {message}", ) LOGURU_FILTER = env("LOGURU_FILTER", str, None) LOGURU_LEVEL = env("LOGURU_LEVEL", str, "DEBUG") LOGURU_COLORIZE = env("LOGURU_COLORIZE", bool, None) LOGURU_SERIALIZE = env("LOGURU_SERIALIZE", bool, False) LOGURU_BACKTRACE = env("LOGURU_BACKTRACE", bool, True) LOGURU_DIAGNOSE = env("LOGURU_DIAGNOSE", bool, True) LOGURU_ENQUEUE = env("LOGURU_ENQUEUE", bool, False) LOGURU_CONTEXT = env("LOGURU_CONTEXT", str, None) LOGURU_CATCH = env("LOGURU_CATCH", bool, True) LOGURU_TRACE_NO = env("LOGURU_TRACE_NO", int, 5) LOGURU_TRACE_COLOR = env("LOGURU_TRACE_COLOR", str, "") LOGURU_TRACE_ICON = env("LOGURU_TRACE_ICON", str, "\u270F\uFE0F") # Pencil LOGURU_DEBUG_NO = env("LOGURU_DEBUG_NO", int, 10) LOGURU_DEBUG_COLOR = env("LOGURU_DEBUG_COLOR", str, "") LOGURU_DEBUG_ICON = env("LOGURU_DEBUG_ICON", str, "\U0001F41E") # Lady Beetle LOGURU_INFO_NO = env("LOGURU_INFO_NO", int, 20) LOGURU_INFO_COLOR = env("LOGURU_INFO_COLOR", str, "") LOGURU_INFO_ICON = env("LOGURU_INFO_ICON", str, "\u2139\uFE0F") # Information LOGURU_SUCCESS_NO = env("LOGURU_SUCCESS_NO", int, 25) LOGURU_SUCCESS_COLOR = env("LOGURU_SUCCESS_COLOR", str, "") LOGURU_SUCCESS_ICON = env("LOGURU_SUCCESS_ICON", str, "\u2705") # White Heavy Check Mark LOGURU_WARNING_NO = env("LOGURU_WARNING_NO", int, 30) LOGURU_WARNING_COLOR = env("LOGURU_WARNING_COLOR", str, "") LOGURU_WARNING_ICON = env("LOGURU_WARNING_ICON", str, "\u26A0\uFE0F") # Warning LOGURU_ERROR_NO = env("LOGURU_ERROR_NO", int, 40) LOGURU_ERROR_COLOR = env("LOGURU_ERROR_COLOR", str, "") LOGURU_ERROR_ICON = env("LOGURU_ERROR_ICON", str, "\u274C") # Cross Mark LOGURU_CRITICAL_NO = env("LOGURU_CRITICAL_NO", int, 50) LOGURU_CRITICAL_COLOR = env("LOGURU_CRITICAL_COLOR", str, "") LOGURU_CRITICAL_ICON = env("LOGURU_CRITICAL_ICON", str, "\u2620\uFE0F") # Skull and Crossbones ================================================ FILE: libs/loguru/_error_interceptor.py ================================================ import sys import traceback class ErrorInterceptor: def __init__(self, should_catch, handler_id): self._should_catch = should_catch self._handler_id = handler_id def should_catch(self): return self._should_catch def print(self, record=None, *, exception=None): if not sys.stderr: return if exception is None: type_, value, traceback_ = sys.exc_info() else: type_, value, traceback_ = (type(exception), exception, exception.__traceback__) try: sys.stderr.write("--- Logging error in Loguru Handler #%d ---\n" % self._handler_id) try: record_repr = str(record) except Exception: record_repr = "/!\\ Unprintable record /!\\" sys.stderr.write("Record was: %s\n" % record_repr) traceback.print_exception(type_, value, traceback_, None, sys.stderr) sys.stderr.write("--- End of logging error ---\n") except OSError: pass finally: del type_, value, traceback_ ================================================ FILE: libs/loguru/_file_sink.py ================================================ import datetime import decimal import glob import numbers import os import shutil import string from functools import partial from stat import ST_DEV, ST_INO from . import _string_parsers as string_parsers from ._ctime_functions import get_ctime, set_ctime from ._datetime import aware_now def generate_rename_path(root, ext, creation_time): creation_datetime = datetime.datetime.fromtimestamp(creation_time) date = FileDateFormatter(creation_datetime) renamed_path = "{}.{}{}".format(root, date, ext) counter = 1 while os.path.exists(renamed_path): counter += 1 renamed_path = "{}.{}.{}{}".format(root, date, counter, ext) return renamed_path class FileDateFormatter: def __init__(self, datetime=None): self.datetime = datetime or aware_now() def __format__(self, spec): if not spec: spec = "%Y-%m-%d_%H-%M-%S_%f" return self.datetime.__format__(spec) class Compression: @staticmethod def add_compress(path_in, path_out, opener, **kwargs): with opener(path_out, **kwargs) as f_comp: f_comp.add(path_in, os.path.basename(path_in)) @staticmethod def write_compress(path_in, path_out, opener, **kwargs): with opener(path_out, **kwargs) as f_comp: f_comp.write(path_in, os.path.basename(path_in)) @staticmethod def copy_compress(path_in, path_out, opener, **kwargs): with open(path_in, "rb") as f_in: with opener(path_out, **kwargs) as f_out: shutil.copyfileobj(f_in, f_out) @staticmethod def compression(path_in, ext, compress_function): path_out = "{}{}".format(path_in, ext) if os.path.exists(path_out): creation_time = get_ctime(path_out) root, ext_before = os.path.splitext(path_in) renamed_path = generate_rename_path(root, ext_before + ext, creation_time) os.rename(path_out, renamed_path) compress_function(path_in, path_out) os.remove(path_in) class Retention: @staticmethod def retention_count(logs, number): def key_log(log): return (-os.stat(log).st_mtime, log) for log in sorted(logs, key=key_log)[number:]: os.remove(log) @staticmethod def retention_age(logs, seconds): t = datetime.datetime.now().timestamp() for log in logs: if os.stat(log).st_mtime <= t - seconds: os.remove(log) class Rotation: @staticmethod def forward_day(t): return t + datetime.timedelta(days=1) @staticmethod def forward_weekday(t, weekday): while True: t += datetime.timedelta(days=1) if t.weekday() == weekday: return t @staticmethod def forward_interval(t, interval): return t + interval @staticmethod def rotation_size(message, file, size_limit): file.seek(0, 2) return file.tell() + len(message) > size_limit class RotationTime: def __init__(self, step_forward, time_init=None): self._step_forward = step_forward self._time_init = time_init self._limit = None def __call__(self, message, file): record_time = message.record["time"] if self._limit is None: filepath = os.path.realpath(file.name) creation_time = get_ctime(filepath) set_ctime(filepath, creation_time) start_time = datetime.datetime.fromtimestamp( creation_time, tz=datetime.timezone.utc ) time_init = self._time_init if time_init is None: limit = start_time.astimezone(record_time.tzinfo).replace(tzinfo=None) limit = self._step_forward(limit) else: tzinfo = record_time.tzinfo if time_init.tzinfo is None else time_init.tzinfo limit = start_time.astimezone(tzinfo).replace( hour=time_init.hour, minute=time_init.minute, second=time_init.second, microsecond=time_init.microsecond, ) if limit <= start_time: limit = self._step_forward(limit) if time_init.tzinfo is None: limit = limit.replace(tzinfo=None) self._limit = limit if self._limit.tzinfo is None: record_time = record_time.replace(tzinfo=None) if record_time >= self._limit: while self._limit <= record_time: self._limit = self._step_forward(self._limit) return True return False class FileSink: def __init__( self, path, *, rotation=None, retention=None, compression=None, delay=False, watch=False, mode="a", buffering=1, encoding="utf8", **kwargs ): self.encoding = encoding self._kwargs = {**kwargs, "mode": mode, "buffering": buffering, "encoding": self.encoding} self._path = str(path) self._glob_patterns = self._make_glob_patterns(self._path) self._rotation_function = self._make_rotation_function(rotation) self._retention_function = self._make_retention_function(retention) self._compression_function = self._make_compression_function(compression) self._file = None self._file_path = None self._watch = watch self._file_dev = -1 self._file_ino = -1 if not delay: path = self._create_path() self._create_dirs(path) self._create_file(path) def write(self, message): if self._file is None: path = self._create_path() self._create_dirs(path) self._create_file(path) if self._watch: self._reopen_if_needed() if self._rotation_function is not None and self._rotation_function(message, self._file): self._terminate_file(is_rotating=True) self._file.write(message) def stop(self): if self._watch: self._reopen_if_needed() self._terminate_file(is_rotating=False) def tasks_to_complete(self): return [] def _create_path(self): path = self._path.format_map({"time": FileDateFormatter()}) return os.path.abspath(path) def _create_dirs(self, path): dirname = os.path.dirname(path) os.makedirs(dirname, exist_ok=True) def _create_file(self, path): self._file = open(path, **self._kwargs) self._file_path = path if self._watch: fileno = self._file.fileno() result = os.fstat(fileno) self._file_dev = result[ST_DEV] self._file_ino = result[ST_INO] def _close_file(self): self._file.flush() self._file.close() self._file = None self._file_path = None self._file_dev = -1 self._file_ino = -1 def _reopen_if_needed(self): # Implemented based on standard library: # https://github.com/python/cpython/blob/cb589d1b/Lib/logging/handlers.py#L486 if not self._file: return filepath = self._file_path try: result = os.stat(filepath) except FileNotFoundError: result = None if not result or result[ST_DEV] != self._file_dev or result[ST_INO] != self._file_ino: self._close_file() self._create_dirs(filepath) self._create_file(filepath) def _terminate_file(self, *, is_rotating=False): old_path = self._file_path if self._file is not None: self._close_file() if is_rotating: new_path = self._create_path() self._create_dirs(new_path) if new_path == old_path: creation_time = get_ctime(old_path) root, ext = os.path.splitext(old_path) renamed_path = generate_rename_path(root, ext, creation_time) os.rename(old_path, renamed_path) old_path = renamed_path if is_rotating or self._rotation_function is None: if self._compression_function is not None and old_path is not None: self._compression_function(old_path) if self._retention_function is not None: logs = { file for pattern in self._glob_patterns for file in glob.glob(pattern) if os.path.isfile(file) } self._retention_function(list(logs)) if is_rotating: self._create_file(new_path) set_ctime(new_path, datetime.datetime.now().timestamp()) @staticmethod def _make_glob_patterns(path): formatter = string.Formatter() tokens = formatter.parse(path) escaped = "".join(glob.escape(text) + "*" * (name is not None) for text, name, *_ in tokens) root, ext = os.path.splitext(escaped) if not ext: return [escaped, escaped + ".*"] return [escaped, escaped + ".*", root + ".*" + ext, root + ".*" + ext + ".*"] @staticmethod def _make_rotation_function(rotation): if rotation is None: return None if isinstance(rotation, str): size = string_parsers.parse_size(rotation) if size is not None: return FileSink._make_rotation_function(size) interval = string_parsers.parse_duration(rotation) if interval is not None: return FileSink._make_rotation_function(interval) frequency = string_parsers.parse_frequency(rotation) if frequency is not None: return Rotation.RotationTime(frequency) daytime = string_parsers.parse_daytime(rotation) if daytime is not None: day, time = daytime if day is None: return FileSink._make_rotation_function(time) if time is None: time = datetime.time(0, 0, 0) step_forward = partial(Rotation.forward_weekday, weekday=day) return Rotation.RotationTime(step_forward, time) raise ValueError("Cannot parse rotation from: '%s'" % rotation) if isinstance(rotation, (numbers.Real, decimal.Decimal)): return partial(Rotation.rotation_size, size_limit=rotation) if isinstance(rotation, datetime.time): return Rotation.RotationTime(Rotation.forward_day, rotation) if isinstance(rotation, datetime.timedelta): step_forward = partial(Rotation.forward_interval, interval=rotation) return Rotation.RotationTime(step_forward) if callable(rotation): return rotation raise TypeError("Cannot infer rotation for objects of type: '%s'" % type(rotation).__name__) @staticmethod def _make_retention_function(retention): if retention is None: return None if isinstance(retention, str): interval = string_parsers.parse_duration(retention) if interval is None: raise ValueError("Cannot parse retention from: '%s'" % retention) return FileSink._make_retention_function(interval) if isinstance(retention, int): return partial(Retention.retention_count, number=retention) if isinstance(retention, datetime.timedelta): return partial(Retention.retention_age, seconds=retention.total_seconds()) if callable(retention): return retention raise TypeError( "Cannot infer retention for objects of type: '%s'" % type(retention).__name__ ) @staticmethod def _make_compression_function(compression): if compression is None: return None if isinstance(compression, str): ext = compression.strip().lstrip(".") if ext == "gz": import gzip compress = partial(Compression.copy_compress, opener=gzip.open, mode="wb") elif ext == "bz2": import bz2 compress = partial(Compression.copy_compress, opener=bz2.open, mode="wb") elif ext == "xz": import lzma compress = partial( Compression.copy_compress, opener=lzma.open, mode="wb", format=lzma.FORMAT_XZ ) elif ext == "lzma": import lzma compress = partial( Compression.copy_compress, opener=lzma.open, mode="wb", format=lzma.FORMAT_ALONE ) elif ext == "tar": import tarfile compress = partial(Compression.add_compress, opener=tarfile.open, mode="w:") elif ext == "tar.gz": import gzip import tarfile compress = partial(Compression.add_compress, opener=tarfile.open, mode="w:gz") elif ext == "tar.bz2": import bz2 import tarfile compress = partial(Compression.add_compress, opener=tarfile.open, mode="w:bz2") elif ext == "tar.xz": import lzma import tarfile compress = partial(Compression.add_compress, opener=tarfile.open, mode="w:xz") elif ext == "zip": import zipfile compress = partial( Compression.write_compress, opener=zipfile.ZipFile, mode="w", compression=zipfile.ZIP_DEFLATED, ) else: raise ValueError("Invalid compression format: '%s'" % ext) return partial(Compression.compression, ext="." + ext, compress_function=compress) if callable(compression): return compression raise TypeError( "Cannot infer compression for objects of type: '%s'" % type(compression).__name__ ) ================================================ FILE: libs/loguru/_filters.py ================================================ def filter_none(record): return record["name"] is not None def filter_by_name(record, parent, length): name = record["name"] if name is None: return False return (name + ".")[:length] == parent def filter_by_level(record, level_per_module): name = record["name"] while True: level = level_per_module.get(name, None) if level is False: return False if level is not None: return record["level"].no >= level if not name: return True index = name.rfind(".") name = name[:index] if index != -1 else "" ================================================ FILE: libs/loguru/_get_frame.py ================================================ import sys from sys import exc_info def get_frame_fallback(n): try: raise Exception except Exception: frame = exc_info()[2].tb_frame.f_back for _ in range(n): frame = frame.f_back return frame def load_get_frame_function(): if hasattr(sys, "_getframe"): get_frame = sys._getframe else: get_frame = get_frame_fallback return get_frame get_frame = load_get_frame_function() ================================================ FILE: libs/loguru/_handler.py ================================================ import functools import json import multiprocessing import os import threading from contextlib import contextmanager from threading import Thread from ._colorizer import Colorizer from ._locks_machinery import create_handler_lock def prepare_colored_format(format_, ansi_level): colored = Colorizer.prepare_format(format_) return colored, colored.colorize(ansi_level) def prepare_stripped_format(format_): colored = Colorizer.prepare_format(format_) return colored.strip() def memoize(function): return functools.lru_cache(maxsize=64)(function) class Message(str): __slots__ = ("record",) class Handler: def __init__( self, *, sink, name, levelno, formatter, is_formatter_dynamic, filter_, colorize, serialize, enqueue, multiprocessing_context, error_interceptor, exception_formatter, id_, levels_ansi_codes ): self._name = name self._sink = sink self._levelno = levelno self._formatter = formatter self._is_formatter_dynamic = is_formatter_dynamic self._filter = filter_ self._colorize = colorize self._serialize = serialize self._enqueue = enqueue self._multiprocessing_context = multiprocessing_context self._error_interceptor = error_interceptor self._exception_formatter = exception_formatter self._id = id_ self._levels_ansi_codes = levels_ansi_codes # Warning, reference shared among handlers self._decolorized_format = None self._precolorized_formats = {} self._memoize_dynamic_format = None self._stopped = False self._lock = create_handler_lock() self._lock_acquired = threading.local() self._queue = None self._queue_lock = None self._confirmation_event = None self._confirmation_lock = None self._owner_process_pid = None self._thread = None if self._is_formatter_dynamic: if self._colorize: self._memoize_dynamic_format = memoize(prepare_colored_format) else: self._memoize_dynamic_format = memoize(prepare_stripped_format) else: if self._colorize: for level_name in self._levels_ansi_codes: self.update_format(level_name) else: self._decolorized_format = self._formatter.strip() if self._enqueue: if self._multiprocessing_context is None: self._queue = multiprocessing.SimpleQueue() self._confirmation_event = multiprocessing.Event() self._confirmation_lock = multiprocessing.Lock() else: self._queue = self._multiprocessing_context.SimpleQueue() self._confirmation_event = self._multiprocessing_context.Event() self._confirmation_lock = self._multiprocessing_context.Lock() self._queue_lock = create_handler_lock() self._owner_process_pid = os.getpid() self._thread = Thread( target=self._queued_writer, daemon=True, name="loguru-writer-%d" % self._id ) self._thread.start() def __repr__(self): return "(id=%d, level=%d, sink=%s)" % (self._id, self._levelno, self._name) @contextmanager def _protected_lock(self): """Acquire the lock, but fail fast if its already acquired by the current thread.""" if getattr(self._lock_acquired, "acquired", False): raise RuntimeError( "Could not acquire internal lock because it was already in use (deadlock avoided). " "This likely happened because the logger was re-used inside a sink, a signal " "handler or a '__del__' method. This is not permitted because the logger and its " "handlers are not re-entrant." ) self._lock_acquired.acquired = True try: with self._lock: yield finally: self._lock_acquired.acquired = False def emit(self, record, level_id, from_decorator, is_raw, colored_message): try: if self._levelno > record["level"].no: return if self._filter is not None: if not self._filter(record): return if self._is_formatter_dynamic: dynamic_format = self._formatter(record) formatter_record = record.copy() if not record["exception"]: formatter_record["exception"] = "" else: type_, value, tb = record["exception"] formatter = self._exception_formatter lines = formatter.format_exception(type_, value, tb, from_decorator=from_decorator) formatter_record["exception"] = "".join(lines) if colored_message is not None and colored_message.stripped != record["message"]: colored_message = None if is_raw: if colored_message is None or not self._colorize: formatted = record["message"] else: ansi_level = self._levels_ansi_codes[level_id] formatted = colored_message.colorize(ansi_level) elif self._is_formatter_dynamic: if not self._colorize: precomputed_format = self._memoize_dynamic_format(dynamic_format) formatted = precomputed_format.format_map(formatter_record) elif colored_message is None: ansi_level = self._levels_ansi_codes[level_id] _, precomputed_format = self._memoize_dynamic_format(dynamic_format, ansi_level) formatted = precomputed_format.format_map(formatter_record) else: ansi_level = self._levels_ansi_codes[level_id] formatter, precomputed_format = self._memoize_dynamic_format( dynamic_format, ansi_level ) coloring_message = formatter.make_coloring_message( record["message"], ansi_level=ansi_level, colored_message=colored_message ) formatter_record["message"] = coloring_message formatted = precomputed_format.format_map(formatter_record) else: if not self._colorize: precomputed_format = self._decolorized_format formatted = precomputed_format.format_map(formatter_record) elif colored_message is None: ansi_level = self._levels_ansi_codes[level_id] precomputed_format = self._precolorized_formats[level_id] formatted = precomputed_format.format_map(formatter_record) else: ansi_level = self._levels_ansi_codes[level_id] precomputed_format = self._precolorized_formats[level_id] coloring_message = self._formatter.make_coloring_message( record["message"], ansi_level=ansi_level, colored_message=colored_message ) formatter_record["message"] = coloring_message formatted = precomputed_format.format_map(formatter_record) if self._serialize: formatted = self._serialize_record(formatted, record) str_record = Message(formatted) str_record.record = record with self._protected_lock(): if self._stopped: return if self._enqueue: self._queue.put(str_record) else: self._sink.write(str_record) except Exception: if not self._error_interceptor.should_catch(): raise self._error_interceptor.print(record) def stop(self): with self._protected_lock(): self._stopped = True if self._enqueue: if self._owner_process_pid != os.getpid(): return self._queue.put(None) self._thread.join() if hasattr(self._queue, "close"): self._queue.close() self._sink.stop() def complete_queue(self): if not self._enqueue: return with self._confirmation_lock: self._queue.put(True) self._confirmation_event.wait() self._confirmation_event.clear() def tasks_to_complete(self): if self._enqueue and self._owner_process_pid != os.getpid(): return [] lock = self._queue_lock if self._enqueue else self._protected_lock() with lock: return self._sink.tasks_to_complete() def update_format(self, level_id): if not self._colorize or self._is_formatter_dynamic: return ansi_code = self._levels_ansi_codes[level_id] self._precolorized_formats[level_id] = self._formatter.colorize(ansi_code) @property def levelno(self): return self._levelno @staticmethod def _serialize_record(text, record): exception = record["exception"] if exception is not None: exception = { "type": None if exception.type is None else exception.type.__name__, "value": exception.value, "traceback": bool(exception.traceback), } serializable = { "text": text, "record": { "elapsed": { "repr": record["elapsed"], "seconds": record["elapsed"].total_seconds(), }, "exception": exception, "extra": record["extra"], "file": {"name": record["file"].name, "path": record["file"].path}, "function": record["function"], "level": { "icon": record["level"].icon, "name": record["level"].name, "no": record["level"].no, }, "line": record["line"], "message": record["message"], "module": record["module"], "name": record["name"], "process": {"id": record["process"].id, "name": record["process"].name}, "thread": {"id": record["thread"].id, "name": record["thread"].name}, "time": {"repr": record["time"], "timestamp": record["time"].timestamp()}, }, } return json.dumps(serializable, default=str, ensure_ascii=False) + "\n" def _queued_writer(self): message = None queue = self._queue # We need to use a lock to protect sink during fork. # Particularly, writing to stderr may lead to deadlock in child process. lock = self._queue_lock while True: try: message = queue.get() except Exception: with lock: self._error_interceptor.print(None) continue if message is None: break if message is True: self._confirmation_event.set() continue with lock: try: self._sink.write(message) except Exception: self._error_interceptor.print(message.record) def __getstate__(self): state = self.__dict__.copy() state["_lock"] = None state["_lock_acquired"] = None state["_memoize_dynamic_format"] = None if self._enqueue: state["_sink"] = None state["_thread"] = None state["_owner_process"] = None state["_queue_lock"] = None return state def __setstate__(self, state): self.__dict__.update(state) self._lock = create_handler_lock() self._lock_acquired = threading.local() if self._enqueue: self._queue_lock = create_handler_lock() if self._is_formatter_dynamic: if self._colorize: self._memoize_dynamic_format = memoize(prepare_colored_format) else: self._memoize_dynamic_format = memoize(prepare_stripped_format) ================================================ FILE: libs/loguru/_locks_machinery.py ================================================ import os import threading import weakref if not hasattr(os, "register_at_fork"): def create_logger_lock(): return threading.Lock() def create_handler_lock(): return threading.Lock() else: # While forking, we need to sanitize all locks to make sure the child process doesn't run into # a deadlock (if a lock already acquired is inherited) and to protect sink from corrupted state. # It's very important to acquire logger locks before handlers one to prevent possible deadlock # while 'remove()' is called for example. logger_locks = weakref.WeakSet() handler_locks = weakref.WeakSet() def acquire_locks(): for lock in logger_locks: lock.acquire() for lock in handler_locks: lock.acquire() def release_locks(): for lock in logger_locks: lock.release() for lock in handler_locks: lock.release() os.register_at_fork( before=acquire_locks, after_in_parent=release_locks, after_in_child=release_locks, ) def create_logger_lock(): lock = threading.Lock() logger_locks.add(lock) return lock def create_handler_lock(): lock = threading.Lock() handler_locks.add(lock) return lock ================================================ FILE: libs/loguru/_logger.py ================================================ """Core logging functionalities of the `Loguru` library. .. References and links rendered by Sphinx are kept here as "module documentation" so that they can be used in the ``Logger`` docstrings but do not pollute ``help(logger)`` output. .. |Logger| replace:: :class:`~Logger` .. |add| replace:: :meth:`~Logger.add()` .. |remove| replace:: :meth:`~Logger.remove()` .. |complete| replace:: :meth:`~Logger.complete()` .. |catch| replace:: :meth:`~Logger.catch()` .. |bind| replace:: :meth:`~Logger.bind()` .. |contextualize| replace:: :meth:`~Logger.contextualize()` .. |patch| replace:: :meth:`~Logger.patch()` .. |opt| replace:: :meth:`~Logger.opt()` .. |log| replace:: :meth:`~Logger.log()` .. |level| replace:: :meth:`~Logger.level()` .. |enable| replace:: :meth:`~Logger.enable()` .. |disable| replace:: :meth:`~Logger.disable()` .. |Any| replace:: :obj:`~typing.Any` .. |str| replace:: :class:`str` .. |int| replace:: :class:`int` .. |bool| replace:: :class:`bool` .. |tuple| replace:: :class:`tuple` .. |namedtuple| replace:: :func:`namedtuple` .. |list| replace:: :class:`list` .. |dict| replace:: :class:`dict` .. |str.format| replace:: :meth:`str.format()` .. |Path| replace:: :class:`pathlib.Path` .. |match.groupdict| replace:: :meth:`re.Match.groupdict()` .. |Handler| replace:: :class:`logging.Handler` .. |sys.stderr| replace:: :data:`sys.stderr` .. |sys.exc_info| replace:: :func:`sys.exc_info()` .. |time| replace:: :class:`datetime.time` .. |datetime| replace:: :class:`datetime.datetime` .. |timedelta| replace:: :class:`datetime.timedelta` .. |open| replace:: :func:`open()` .. |logging| replace:: :mod:`logging` .. |signal| replace:: :mod:`signal` .. |contextvars| replace:: :mod:`contextvars` .. |multiprocessing| replace:: :mod:`multiprocessing` .. |Thread.run| replace:: :meth:`Thread.run()` .. |Exception| replace:: :class:`Exception` .. |AbstractEventLoop| replace:: :class:`AbstractEventLoop` .. |asyncio.get_running_loop| replace:: :func:`asyncio.get_running_loop()` .. |asyncio.run| replace:: :func:`asyncio.run()` .. |loop.run_until_complete| replace:: :meth:`loop.run_until_complete()` .. |loop.create_task| replace:: :meth:`loop.create_task()` .. |logger.trace| replace:: :meth:`logger.trace()` .. |logger.debug| replace:: :meth:`logger.debug()` .. |logger.info| replace:: :meth:`logger.info()` .. |logger.success| replace:: :meth:`logger.success()` .. |logger.warning| replace:: :meth:`logger.warning()` .. |logger.error| replace:: :meth:`logger.error()` .. |logger.critical| replace:: :meth:`logger.critical()` .. |file-like object| replace:: ``file-like object`` .. _file-like object: https://docs.python.org/3/glossary.html#term-file-object .. |callable| replace:: ``callable`` .. _callable: https://docs.python.org/3/library/functions.html#callable .. |coroutine function| replace:: ``coroutine function`` .. _coroutine function: https://docs.python.org/3/glossary.html#term-coroutine-function .. |re.Pattern| replace:: ``re.Pattern`` .. _re.Pattern: https://docs.python.org/3/library/re.html#re-objects .. |multiprocessing.Context| replace:: ``multiprocessing.Context`` .. _multiprocessing.Context: https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods .. |better_exceptions| replace:: ``better_exceptions`` .. _better_exceptions: https://github.com/Qix-/better-exceptions .. |loguru-config| replace:: ``loguru-config`` .. _loguru-config: https://github.com/erezinman/loguru-config .. _Pendulum: https://pendulum.eustace.io/docs/#tokens .. _@Qix-: https://github.com/Qix- .. _@erezinman: https://github.com/erezinman .. _@sdispater: https://github.com/sdispater .. _formatting directives: https://docs.python.org/3/library/string.html#format-string-syntax .. _reentrant: https://en.wikipedia.org/wiki/Reentrancy_(computing) """ import builtins import contextlib import functools import logging import re import sys import threading import warnings from collections import namedtuple from inspect import isclass, iscoroutinefunction, isgeneratorfunction from multiprocessing import current_process, get_context from multiprocessing.context import BaseContext from os.path import basename, splitext from threading import current_thread from . import _asyncio_loop, _colorama, _defaults, _filters from ._better_exceptions import ExceptionFormatter from ._colorizer import Colorizer from ._contextvars import ContextVar from ._datetime import aware_now from ._error_interceptor import ErrorInterceptor from ._file_sink import FileSink from ._get_frame import get_frame from ._handler import Handler from ._locks_machinery import create_logger_lock from ._recattrs import RecordException, RecordFile, RecordLevel, RecordProcess, RecordThread from ._simple_sinks import AsyncSink, CallableSink, StandardSink, StreamSink if sys.version_info >= (3, 6): from os import PathLike else: from pathlib import PurePath as PathLike Level = namedtuple("Level", ["name", "no", "color", "icon"]) # noqa: PYI024 start_time = aware_now() context = ContextVar("loguru_context", default={}) class Core: def __init__(self): levels = [ Level( "TRACE", _defaults.LOGURU_TRACE_NO, _defaults.LOGURU_TRACE_COLOR, _defaults.LOGURU_TRACE_ICON, ), Level( "DEBUG", _defaults.LOGURU_DEBUG_NO, _defaults.LOGURU_DEBUG_COLOR, _defaults.LOGURU_DEBUG_ICON, ), Level( "INFO", _defaults.LOGURU_INFO_NO, _defaults.LOGURU_INFO_COLOR, _defaults.LOGURU_INFO_ICON, ), Level( "SUCCESS", _defaults.LOGURU_SUCCESS_NO, _defaults.LOGURU_SUCCESS_COLOR, _defaults.LOGURU_SUCCESS_ICON, ), Level( "WARNING", _defaults.LOGURU_WARNING_NO, _defaults.LOGURU_WARNING_COLOR, _defaults.LOGURU_WARNING_ICON, ), Level( "ERROR", _defaults.LOGURU_ERROR_NO, _defaults.LOGURU_ERROR_COLOR, _defaults.LOGURU_ERROR_ICON, ), Level( "CRITICAL", _defaults.LOGURU_CRITICAL_NO, _defaults.LOGURU_CRITICAL_COLOR, _defaults.LOGURU_CRITICAL_ICON, ), ] self.levels = {level.name: level for level in levels} self.levels_ansi_codes = { **{name: Colorizer.ansify(level.color) for name, level in self.levels.items()}, None: "", } # Cache used internally to quickly access level attributes based on their name or severity. # It can also contain integers as keys, it serves to avoid calling "isinstance()" repeatedly # when "logger.log()" is used. self.levels_lookup = { name: (name, name, level.no, level.icon) for name, level in self.levels.items() } self.handlers_count = 0 self.handlers = {} self.extra = {} self.patcher = None self.min_level = float("inf") self.enabled = {} self.activation_list = [] self.activation_none = True self.thread_locals = threading.local() self.lock = create_logger_lock() def __getstate__(self): state = self.__dict__.copy() state["thread_locals"] = None state["lock"] = None return state def __setstate__(self, state): self.__dict__.update(state) self.thread_locals = threading.local() self.lock = create_logger_lock() class Logger: """An object to dispatch logging messages to configured handlers. The |Logger| is the core object of ``loguru``, every logging configuration and usage pass through a call to one of its methods. There is only one logger, so there is no need to retrieve one before usage. Once the ``logger`` is imported, it can be used to write messages about events happening in your code. By reading the output logs of your application, you gain a better understanding of the flow of your program and you more easily track and debug unexpected behaviors. Handlers to which the logger sends log messages are added using the |add| method. Note that you can use the |Logger| right after import as it comes pre-configured (logs are emitted to |sys.stderr| by default). Messages can be logged with different severity levels and they can be formatted using curly braces (it uses |str.format| under the hood). When a message is logged, a "record" is associated with it. This record is a dict which contains information about the logging context: time, function, file, line, thread, level... It also contains the ``__name__`` of the module, this is why you don't need named loggers. You should not instantiate a |Logger| by yourself, use ``from loguru import logger`` instead. """ def __init__(self, core, exception, depth, record, lazy, colors, raw, capture, patchers, extra): self._core = core self._options = (exception, depth, record, lazy, colors, raw, capture, patchers, extra) def __repr__(self): return "" % list(self._core.handlers.values()) def add( self, sink, *, level=_defaults.LOGURU_LEVEL, format=_defaults.LOGURU_FORMAT, filter=_defaults.LOGURU_FILTER, colorize=_defaults.LOGURU_COLORIZE, serialize=_defaults.LOGURU_SERIALIZE, backtrace=_defaults.LOGURU_BACKTRACE, diagnose=_defaults.LOGURU_DIAGNOSE, enqueue=_defaults.LOGURU_ENQUEUE, context=_defaults.LOGURU_CONTEXT, catch=_defaults.LOGURU_CATCH, **kwargs ): r"""Add a handler sending log messages to a sink adequately configured. Parameters ---------- sink : |file-like object|_, |str|, |Path|, |callable|_, |coroutine function|_ or |Handler| An object in charge of receiving formatted logging messages and propagating them to an appropriate endpoint. level : |int| or |str|, optional The minimum severity level from which logged messages should be sent to the sink. format : |str| or |callable|_, optional The template used to format logged messages before being sent to the sink. filter : |callable|_, |str| or |dict|, optional A directive optionally used to decide for each logged message whether it should be sent to the sink or not. colorize : |bool|, optional Whether the color markups contained in the formatted message should be converted to ansi codes for terminal coloration, or stripped otherwise. If ``None``, the choice is automatically made based on the sink being a tty or not. serialize : |bool|, optional Whether the logged message and its records should be first converted to a JSON string before being sent to the sink. backtrace : |bool|, optional Whether the exception trace formatted should be extended upward, beyond the catching point, to show the full stacktrace which generated the error. diagnose : |bool|, optional Whether the exception trace should display the variables values to eases the debugging. This should be set to ``False`` in production to avoid leaking sensitive data. enqueue : |bool|, optional Whether the messages to be logged should first pass through a multiprocessing-safe queue before reaching the sink. This is useful while logging to a file through multiple processes. This also has the advantage of making logging calls non-blocking. context : |multiprocessing.Context| or |str|, optional A context object or name that will be used for all tasks involving internally the |multiprocessing| module, in particular when ``enqueue=True``. If ``None``, the default context is used. catch : |bool|, optional Whether errors occurring while sink handles logs messages should be automatically caught. If ``True``, an exception message is displayed on |sys.stderr| but the exception is not propagated to the caller, preventing your app to crash. **kwargs Additional parameters that are only valid to configure a coroutine or file sink (see below). If and only if the sink is a coroutine function, the following parameter applies: Parameters ---------- loop : |AbstractEventLoop|, optional The event loop in which the asynchronous logging task will be scheduled and executed. If ``None``, the loop used is the one returned by |asyncio.get_running_loop| at the time of the logging call (task is discarded if there is no loop currently running). If and only if the sink is a file path, the following parameters apply: Parameters ---------- rotation : |str|, |int|, |time|, |timedelta| or |callable|_, optional A condition indicating whenever the current logged file should be closed and a new one started. retention : |str|, |int|, |timedelta| or |callable|_, optional A directive filtering old files that should be removed during rotation or end of program. compression : |str| or |callable|_, optional A compression or archive format to which log files should be converted at closure. delay : |bool|, optional Whether the file should be created as soon as the sink is configured, or delayed until first logged message. It defaults to ``False``. watch : |bool|, optional Whether or not the file should be watched and re-opened when deleted or changed (based on its device and inode properties) by an external program. It defaults to ``False``. mode : |str|, optional The opening mode as for built-in |open| function. It defaults to ``"a"`` (open the file in appending mode). buffering : |int|, optional The buffering policy as for built-in |open| function. It defaults to ``1`` (line buffered file). encoding : |str|, optional The file encoding as for built-in |open| function. It defaults to ``"utf8"``. **kwargs Others parameters are passed to the built-in |open| function. Returns ------- :class:`int` An identifier associated with the added sink and which should be used to |remove| it. Raises ------ ValueError If any of the arguments passed to configure the sink is invalid. Notes ----- Extended summary follows. .. _sink: .. rubric:: The sink parameter The ``sink`` handles incoming log messages and proceed to their writing somewhere and somehow. A sink can take many forms: - A |file-like object|_ like ``sys.stderr`` or ``open("file.log", "w")``. Anything with a ``.write()`` method is considered as a file-like object. Custom handlers may also implement ``flush()`` (called after each logged message), ``stop()`` (called at sink termination) and ``complete()`` (awaited by the eponymous method). - A file path as |str| or |Path|. It can be parametrized with some additional parameters, see below. - A |callable|_ (such as a simple function) like ``lambda msg: print(msg)``. This allows for logging procedure entirely defined by user preferences and needs. - A asynchronous |coroutine function|_ defined with the ``async def`` statement. The coroutine object returned by such function will be added to the event loop using |loop.create_task|. The tasks should be awaited before ending the loop by using |complete|. - A built-in |Handler| like ``logging.StreamHandler``. In such a case, the `Loguru` records are automatically converted to the structure expected by the |logging| module. Note that the logging functions are not `reentrant`_. This means you should avoid using the ``logger`` inside any of your sinks or from within |signal| handlers. Otherwise, you may face deadlock if the module's sink was not explicitly disabled. .. _message: .. rubric:: The logged message The logged message passed to all added sinks is nothing more than a string of the formatted log, to which a special attribute is associated: the ``.record`` which is a dict containing all contextual information possibly needed (see below). Logged messages are formatted according to the ``format`` of the added sink. This format is usually a string containing braces fields to display attributes from the record dict. If fine-grained control is needed, the ``format`` can also be a function which takes the record as parameter and return the format template string. However, note that in such a case, you should take care of appending the line ending and exception field to the returned format, while ``"\n{exception}"`` is automatically appended for convenience if ``format`` is a string. The ``filter`` attribute can be used to control which messages are effectively passed to the sink and which one are ignored. A function can be used, accepting the record as an argument, and returning ``True`` if the message should be logged, ``False`` otherwise. If a string is used, only the records with the same ``name`` and its children will be allowed. One can also pass a ``dict`` mapping module names to minimum required level. In such case, each log record will search for it's closest parent in the ``dict`` and use the associated level as the filter. The ``dict`` values can be ``int`` severity, ``str`` level name or ``True`` and ``False`` to respectively authorize and discard all module logs unconditionally. In order to set a default level, the ``""`` module name should be used as it is the parent of all modules (it does not suppress global ``level`` threshold, though). Note that while calling a logging method, the keyword arguments (if any) are automatically added to the ``extra`` dict for convenient contextualization (in addition to being used for formatting). .. _levels: .. rubric:: The severity levels Each logged message is associated with a severity level. These levels make it possible to prioritize messages and to choose the verbosity of the logs according to usages. For example, it allows to display some debugging information to a developer, while hiding it to the end user running the application. The ``level`` attribute of every added sink controls the minimum threshold from which log messages are allowed to be emitted. While using the ``logger``, you are in charge of configuring the appropriate granularity of your logs. It is possible to add even more custom levels by using the |level| method. Here are the standard levels with their default severity value, each one is associated with a logging method of the same name: +----------------------+------------------------+------------------------+ | Level name | Severity value | Logger method | +======================+========================+========================+ | ``TRACE`` | 5 | |logger.trace| | +----------------------+------------------------+------------------------+ | ``DEBUG`` | 10 | |logger.debug| | +----------------------+------------------------+------------------------+ | ``INFO`` | 20 | |logger.info| | +----------------------+------------------------+------------------------+ | ``SUCCESS`` | 25 | |logger.success| | +----------------------+------------------------+------------------------+ | ``WARNING`` | 30 | |logger.warning| | +----------------------+------------------------+------------------------+ | ``ERROR`` | 40 | |logger.error| | +----------------------+------------------------+------------------------+ | ``CRITICAL`` | 50 | |logger.critical| | +----------------------+------------------------+------------------------+ .. _record: .. rubric:: The record dict The record is just a Python dict, accessible from sinks by ``message.record``. It contains all contextual information of the logging call (time, function, file, line, level, etc.). Each of the record keys can be used in the handler's ``format`` so the corresponding value is properly displayed in the logged message (e.g. ``"{level}"`` will return ``"INFO"``). Some records' values are objects with two or more attributes. These can be formatted with ``"{key.attr}"`` (``"{key}"`` would display one by default). Note that you can use any `formatting directives`_ available in Python's ``str.format()`` method (e.g. ``"{key: >3}"`` will right-align and pad to a width of 3 characters). This is particularly useful for time formatting (see below). +------------+---------------------------------+----------------------------+ | Key | Description | Attributes | +============+=================================+============================+ | elapsed | The time elapsed since the | See |timedelta| | | | start of the program | | +------------+---------------------------------+----------------------------+ | exception | The formatted exception if any, | ``type``, ``value``, | | | ``None`` otherwise | ``traceback`` | +------------+---------------------------------+----------------------------+ | extra | The dict of attributes | None | | | bound by the user (see |bind|) | | +------------+---------------------------------+----------------------------+ | file | The file where the logging call | ``name`` (default), | | | was made | ``path`` | +------------+---------------------------------+----------------------------+ | function | The function from which the | None | | | logging call was made | | +------------+---------------------------------+----------------------------+ | level | The severity used to log the | ``name`` (default), | | | message | ``no``, ``icon`` | +------------+---------------------------------+----------------------------+ | line | The line number in the source | None | | | code | | +------------+---------------------------------+----------------------------+ | message | The logged message (not yet | None | | | formatted) | | +------------+---------------------------------+----------------------------+ | module | The module where the logging | None | | | call was made | | +------------+---------------------------------+----------------------------+ | name | The ``__name__`` where the | None | | | logging call was made | | +------------+---------------------------------+----------------------------+ | process | The process in which the | ``name``, ``id`` (default) | | | logging call was made | | +------------+---------------------------------+----------------------------+ | thread | The thread in which the | ``name``, ``id`` (default) | | | logging call was made | | +------------+---------------------------------+----------------------------+ | time | The aware local time when the | See |datetime| | | | logging call was made | | +------------+---------------------------------+----------------------------+ .. _time: .. rubric:: The time formatting To use your favorite time representation, you can set it directly in the time formatter specifier of your handler format, like for example ``format="{time:HH:mm:ss} {message}"``. Note that this datetime represents your local time, and it is also made timezone-aware, so you can display the UTC offset to avoid ambiguities. The time field can be formatted using more human-friendly tokens. These constitute a subset of the one used by the `Pendulum`_ library of `@sdispater`_. To escape a token, just add square brackets around it, for example ``"[YY]"`` would display literally ``"YY"``. If you prefer to display UTC rather than local time, you can add ``"!UTC"`` at the very end of the time format, like ``{time:HH:mm:ss!UTC}``. Doing so will convert the ``datetime`` to UTC before formatting. If no time formatter specifier is used, like for example if ``format="{time} {message}"``, the default one will use ISO 8601. +------------------------+---------+----------------------------------------+ | | Token | Output | +========================+=========+========================================+ | Year | YYYY | 2000, 2001, 2002 ... 2012, 2013 | | +---------+----------------------------------------+ | | YY | 00, 01, 02 ... 12, 13 | +------------------------+---------+----------------------------------------+ | Quarter | Q | 1 2 3 4 | +------------------------+---------+----------------------------------------+ | Month | MMMM | January, February, March ... | | +---------+----------------------------------------+ | | MMM | Jan, Feb, Mar ... | | +---------+----------------------------------------+ | | MM | 01, 02, 03 ... 11, 12 | | +---------+----------------------------------------+ | | M | 1, 2, 3 ... 11, 12 | +------------------------+---------+----------------------------------------+ | Day of Year | DDDD | 001, 002, 003 ... 364, 365 | | +---------+----------------------------------------+ | | DDD | 1, 2, 3 ... 364, 365 | +------------------------+---------+----------------------------------------+ | Day of Month | DD | 01, 02, 03 ... 30, 31 | | +---------+----------------------------------------+ | | D | 1, 2, 3 ... 30, 31 | +------------------------+---------+----------------------------------------+ | Day of Week | dddd | Monday, Tuesday, Wednesday ... | | +---------+----------------------------------------+ | | ddd | Mon, Tue, Wed ... | | +---------+----------------------------------------+ | | d | 0, 1, 2 ... 6 | +------------------------+---------+----------------------------------------+ | Days of ISO Week | E | 1, 2, 3 ... 7 | +------------------------+---------+----------------------------------------+ | Hour | HH | 00, 01, 02 ... 23, 24 | | +---------+----------------------------------------+ | | H | 0, 1, 2 ... 23, 24 | | +---------+----------------------------------------+ | | hh | 01, 02, 03 ... 11, 12 | | +---------+----------------------------------------+ | | h | 1, 2, 3 ... 11, 12 | +------------------------+---------+----------------------------------------+ | Minute | mm | 00, 01, 02 ... 58, 59 | | +---------+----------------------------------------+ | | m | 0, 1, 2 ... 58, 59 | +------------------------+---------+----------------------------------------+ | Second | ss | 00, 01, 02 ... 58, 59 | | +---------+----------------------------------------+ | | s | 0, 1, 2 ... 58, 59 | +------------------------+---------+----------------------------------------+ | Fractional Second | S | 0 1 ... 8 9 | | +---------+----------------------------------------+ | | SS | 00, 01, 02 ... 98, 99 | | +---------+----------------------------------------+ | | SSS | 000 001 ... 998 999 | | +---------+----------------------------------------+ | | SSSS... | 000[0..] 001[0..] ... 998[0..] 999[0..]| | +---------+----------------------------------------+ | | SSSSSS | 000000 000001 ... 999998 999999 | +------------------------+---------+----------------------------------------+ | AM / PM | A | AM, PM | +------------------------+---------+----------------------------------------+ | Timezone | Z | -07:00, -06:00 ... +06:00, +07:00 | | +---------+----------------------------------------+ | | ZZ | -0700, -0600 ... +0600, +0700 | | +---------+----------------------------------------+ | | zz | EST CST ... MST PST | +------------------------+---------+----------------------------------------+ | Seconds timestamp | X | 1381685817, 1234567890.123 | +------------------------+---------+----------------------------------------+ | Microseconds timestamp | x | 1234567890123 | +------------------------+---------+----------------------------------------+ .. _file: .. rubric:: The file sinks If the sink is a |str| or a |Path|, the corresponding file will be opened for writing logs. The path can also contain a special ``"{time}"`` field that will be formatted with the current date at file creation. The file is closed at sink stop, i.e. when the application ends or the handler is removed. The ``rotation`` check is made before logging each message. If there is already an existing file with the same name that the file to be created, then the existing file is renamed by appending the date to its basename to prevent file overwriting. This parameter accepts: - an |int| which corresponds to the maximum file size in bytes before that the current logged file is closed and a new one started over. - a |timedelta| which indicates the frequency of each new rotation. - a |time| which specifies the hour when the daily rotation should occur. - a |str| for human-friendly parametrization of one of the previously enumerated types. Examples: ``"100 MB"``, ``"0.5 GB"``, ``"1 month 2 weeks"``, ``"4 days"``, ``"10h"``, ``"monthly"``, ``"18:00"``, ``"sunday"``, ``"w0"``, ``"monday at 12:00"``, ... - a |callable|_ which will be invoked before logging. It should accept two arguments: the logged message and the file object, and it should return ``True`` if the rotation should happen now, ``False`` otherwise. The ``retention`` occurs at rotation or at sink stop if rotation is ``None``. Files resulting from previous sessions or rotations are automatically collected from disk. A file is selected if it matches the pattern ``"basename(.*).ext(.*)"`` (possible time fields are beforehand replaced with ``.*``) based on the configured sink. Afterwards, the list is processed to determine files to be retained. This parameter accepts: - an |int| which indicates the number of log files to keep, while older files are deleted. - a |timedelta| which specifies the maximum age of files to keep. - a |str| for human-friendly parametrization of the maximum age of files to keep. Examples: ``"1 week, 3 days"``, ``"2 months"``, ... - a |callable|_ which will be invoked before the retention process. It should accept the list of log files as argument and process to whatever it wants (moving files, removing them, etc.). The ``compression`` happens at rotation or at sink stop if rotation is ``None``. This parameter accepts: - a |str| which corresponds to the compressed or archived file extension. This can be one of: ``"gz"``, ``"bz2"``, ``"xz"``, ``"lzma"``, ``"tar"``, ``"tar.gz"``, ``"tar.bz2"``, ``"tar.xz"``, ``"zip"``. - a |callable|_ which will be invoked before file termination. It should accept the path of the log file as argument and process to whatever it wants (custom compression, network sending, removing it, etc.). Either way, if you use a custom function designed according to your preferences, you must be very careful not to use the ``logger`` within your function. Otherwise, there is a risk that your program hang because of a deadlock. .. _color: .. rubric:: The color markups To add colors to your logs, you just have to enclose your format string with the appropriate tags (e.g. ``some message``). These tags are automatically removed if the sink doesn't support ansi codes. For convenience, you can use ```` to close the last opening tag without repeating its name (e.g. ``another message``). The special tag ```` (abbreviated with ````) is transformed according to the configured color of the logged message level. Tags which are not recognized will raise an exception during parsing, to inform you about possible misuse. If you wish to display a markup tag literally, you can escape it by prepending a ``\`` like for example ``\``. To prevent the escaping to occur, you can simply double the ``\`` (e.g. ``\\`` will print a literal ``\`` before colored text). If, for some reason, you need to escape a string programmatically, note that the regex used internally to parse markup tags is ``r"(\\*)(\s]*>)"``. Note that when logging a message with ``opt(colors=True)``, color tags present in the formatting arguments (``args`` and ``kwargs``) are completely ignored. This is important if you need to log strings containing markups that might interfere with the color tags (in this case, do not use f-string). Here are the available tags (note that compatibility may vary depending on terminal): +------------------------------------+--------------------------------------+ | Color (abbr) | Styles (abbr) | +====================================+======================================+ | Black (k) | Bold (b) | +------------------------------------+--------------------------------------+ | Blue (e) | Dim (d) | +------------------------------------+--------------------------------------+ | Cyan (c) | Normal (n) | +------------------------------------+--------------------------------------+ | Green (g) | Italic (i) | +------------------------------------+--------------------------------------+ | Magenta (m) | Underline (u) | +------------------------------------+--------------------------------------+ | Red (r) | Strike (s) | +------------------------------------+--------------------------------------+ | White (w) | Reverse (v) | +------------------------------------+--------------------------------------+ | Yellow (y) | Blink (l) | +------------------------------------+--------------------------------------+ | | Hide (h) | +------------------------------------+--------------------------------------+ Usage: +-----------------+-------------------------------------------------------------------+ | Description | Examples | | +---------------------------------+---------------------------------+ | | Foreground | Background | +=================+=================================+=================================+ | Basic colors | ````, ```` | ````, ```` | +-----------------+---------------------------------+---------------------------------+ | Light colors | ````, ```` | ````, ```` | +-----------------+---------------------------------+---------------------------------+ | 8-bit colors | ````, ```` | ````, ```` | +-----------------+---------------------------------+---------------------------------+ | Hex colors | ````, ```` | ````, ```` | +-----------------+---------------------------------+---------------------------------+ | RGB colors | ```` | ```` | +-----------------+---------------------------------+---------------------------------+ | Stylizing | ````, ````, ````, ```` | +-----------------+-------------------------------------------------------------------+ .. _env: .. rubric:: The environment variables The default values of sink parameters can be entirely customized. This is particularly useful if you don't like the log format of the pre-configured sink. Each of the |add| default parameter can be modified by setting the ``LOGURU_[PARAM]`` environment variable. For example on Linux: ``export LOGURU_FORMAT="{time} - {message}"`` or ``export LOGURU_DIAGNOSE=NO``. The default levels' attributes can also be modified by setting the ``LOGURU_[LEVEL]_[ATTR]`` environment variable. For example, on Windows: ``setx LOGURU_DEBUG_COLOR ""`` or ``setx LOGURU_TRACE_ICON "🚀"``. If you use the ``set`` command, do not include quotes but escape special symbol as needed, e.g. ``set LOGURU_DEBUG_COLOR=^``. If you want to disable the pre-configured sink, you can set the ``LOGURU_AUTOINIT`` variable to ``False``. On Linux, you will probably need to edit the ``~/.profile`` file to make this persistent. On Windows, don't forget to restart your terminal for the change to be taken into account. Examples -------- >>> logger.add(sys.stdout, format="{time} - {level} - {message}", filter="sub.module") >>> logger.add("file_{time}.log", level="TRACE", rotation="100 MB") >>> def debug_only(record): ... return record["level"].name == "DEBUG" ... >>> logger.add("debug.log", filter=debug_only) # Other levels are filtered out >>> def my_sink(message): ... record = message.record ... update_db(message, time=record["time"], level=record["level"]) ... >>> logger.add(my_sink) >>> level_per_module = { ... "": "DEBUG", ... "third.lib": "WARNING", ... "anotherlib": False ... } >>> logger.add(lambda m: print(m, end=""), filter=level_per_module, level=0) >>> async def publish(message): ... await api.post(message) ... >>> logger.add(publish, serialize=True) >>> from logging import StreamHandler >>> logger.add(StreamHandler(sys.stderr), format="{message}") >>> class RandomStream: ... def __init__(self, seed, threshold): ... self.threshold = threshold ... random.seed(seed) ... def write(self, message): ... if random.random() > self.threshold: ... print(message) ... >>> stream_object = RandomStream(seed=12345, threshold=0.25) >>> logger.add(stream_object, level="INFO") """ with self._core.lock: handler_id = self._core.handlers_count self._core.handlers_count += 1 error_interceptor = ErrorInterceptor(catch, handler_id) if colorize is None and serialize: colorize = False if isinstance(sink, (str, PathLike)): path = sink name = "'%s'" % path if colorize is None: colorize = False wrapped_sink = FileSink(path, **kwargs) kwargs = {} encoding = wrapped_sink.encoding terminator = "\n" exception_prefix = "" elif hasattr(sink, "write") and callable(sink.write): name = getattr(sink, "name", None) or repr(sink) if colorize is None: colorize = _colorama.should_colorize(sink) if colorize is True and _colorama.should_wrap(sink): stream = _colorama.wrap(sink) else: stream = sink wrapped_sink = StreamSink(stream) encoding = getattr(sink, "encoding", None) terminator = "\n" exception_prefix = "" elif isinstance(sink, logging.Handler): name = repr(sink) if colorize is None: colorize = False wrapped_sink = StandardSink(sink) encoding = getattr(sink, "encoding", None) terminator = "" exception_prefix = "\n" elif iscoroutinefunction(sink) or iscoroutinefunction( getattr(sink, "__call__", None) # noqa: B004 ): name = getattr(sink, "__name__", None) or repr(sink) if colorize is None: colorize = False loop = kwargs.pop("loop", None) # The worker thread needs an event loop, it can't create a new one internally because it # has to be accessible by the user while calling "complete()", instead we use the global # one when the sink is added. If "enqueue=False" the event loop is dynamically retrieved # at each logging call, which is much more convenient. However, coroutine can't access # running loop in Python 3.5.2 and earlier versions, see python/asyncio#452. if enqueue and loop is None: try: loop = _asyncio_loop.get_running_loop() except RuntimeError as e: raise ValueError( "An event loop is required to add a coroutine sink with `enqueue=True`, " "but none has been passed as argument and none is currently running." ) from e coro = sink if iscoroutinefunction(sink) else sink.__call__ wrapped_sink = AsyncSink(coro, loop, error_interceptor) encoding = "utf8" terminator = "\n" exception_prefix = "" elif callable(sink): name = getattr(sink, "__name__", None) or repr(sink) if colorize is None: colorize = False wrapped_sink = CallableSink(sink) encoding = "utf8" terminator = "\n" exception_prefix = "" else: raise TypeError("Cannot log to objects of type '%s'" % type(sink).__name__) if kwargs: raise TypeError("add() got an unexpected keyword argument '%s'" % next(iter(kwargs))) if filter is None: filter_func = None elif filter == "": filter_func = _filters.filter_none elif isinstance(filter, str): parent = filter + "." length = len(parent) filter_func = functools.partial(_filters.filter_by_name, parent=parent, length=length) elif isinstance(filter, dict): level_per_module = {} for module, level_ in filter.items(): if module is not None and not isinstance(module, str): raise TypeError( "The filter dict contains an invalid module, " "it should be a string (or None), not: '%s'" % type(module).__name__ ) if level_ is False: levelno_ = False elif level_ is True: levelno_ = 0 elif isinstance(level_, str): try: levelno_ = self.level(level_).no except ValueError: raise ValueError( "The filter dict contains a module '%s' associated to a level name " "which does not exist: '%s'" % (module, level_) ) from None elif isinstance(level_, int): levelno_ = level_ else: raise TypeError( "The filter dict contains a module '%s' associated to an invalid level, " "it should be an integer, a string or a boolean, not: '%s'" % (module, type(level_).__name__) ) if levelno_ < 0: raise ValueError( "The filter dict contains a module '%s' associated to an invalid level, " "it should be a positive integer, not: '%d'" % (module, levelno_) ) level_per_module[module] = levelno_ filter_func = functools.partial( _filters.filter_by_level, level_per_module=level_per_module ) elif callable(filter): if filter == builtins.filter: raise ValueError( "The built-in 'filter()' function cannot be used as a 'filter' parameter, " "this is most likely a mistake (please double-check the arguments passed " "to 'logger.add()')." ) filter_func = filter else: raise TypeError( "Invalid filter, it should be a function, a string or a dict, not: '%s'" % type(filter).__name__ ) if isinstance(level, str): levelno = self.level(level).no elif isinstance(level, int): levelno = level else: raise TypeError( "Invalid level, it should be an integer or a string, not: '%s'" % type(level).__name__ ) if levelno < 0: raise ValueError( "Invalid level value, it should be a positive integer, not: %d" % levelno ) if isinstance(format, str): try: formatter = Colorizer.prepare_format(format + terminator + "{exception}") except ValueError as e: raise ValueError( "Invalid format, color markups could not be parsed correctly" ) from e is_formatter_dynamic = False elif callable(format): if format == builtins.format: raise ValueError( "The built-in 'format()' function cannot be used as a 'format' parameter, " "this is most likely a mistake (please double-check the arguments passed " "to 'logger.add()')." ) formatter = format is_formatter_dynamic = True else: raise TypeError( "Invalid format, it should be a string or a function, not: '%s'" % type(format).__name__ ) if not isinstance(encoding, str): encoding = "ascii" if isinstance(context, str): context = get_context(context) elif context is not None and not isinstance(context, BaseContext): raise TypeError( "Invalid context, it should be a string or a multiprocessing context, " "not: '%s'" % type(context).__name__ ) with self._core.lock: exception_formatter = ExceptionFormatter( colorize=colorize, encoding=encoding, diagnose=diagnose, backtrace=backtrace, hidden_frames_filename=self.catch.__code__.co_filename, prefix=exception_prefix, ) handler = Handler( name=name, sink=wrapped_sink, levelno=levelno, formatter=formatter, is_formatter_dynamic=is_formatter_dynamic, filter_=filter_func, colorize=colorize, serialize=serialize, enqueue=enqueue, multiprocessing_context=context, id_=handler_id, error_interceptor=error_interceptor, exception_formatter=exception_formatter, levels_ansi_codes=self._core.levels_ansi_codes, ) handlers = self._core.handlers.copy() handlers[handler_id] = handler self._core.min_level = min(self._core.min_level, levelno) self._core.handlers = handlers return handler_id def remove(self, handler_id=None): """Remove a previously added handler and stop sending logs to its sink. Parameters ---------- handler_id : |int| or ``None`` The id of the sink to remove, as it was returned by the |add| method. If ``None``, all handlers are removed. The pre-configured handler is guaranteed to have the index ``0``. Raises ------ ValueError If ``handler_id`` is not ``None`` but there is no active handler with such id. Examples -------- >>> i = logger.add(sys.stderr, format="{message}") >>> logger.info("Logging") Logging >>> logger.remove(i) >>> logger.info("No longer logging") """ if not (handler_id is None or isinstance(handler_id, int)): raise TypeError( "Invalid handler id, it should be an integer as returned " "by the 'add()' method (or None), not: '%s'" % type(handler_id).__name__ ) with self._core.lock: if handler_id is not None and handler_id not in self._core.handlers: raise ValueError("There is no existing handler with id %d" % handler_id) from None if handler_id is None: handler_ids = list(self._core.handlers) else: handler_ids = [handler_id] for handler_id in handler_ids: handlers = self._core.handlers.copy() handler = handlers.pop(handler_id) # This needs to be done first in case "stop()" raises an exception levelnos = (h.levelno for h in handlers.values()) self._core.min_level = min(levelnos, default=float("inf")) self._core.handlers = handlers handler.stop() def complete(self): """Wait for the end of enqueued messages and asynchronous tasks scheduled by handlers. This method proceeds in two steps: first it waits for all logging messages added to handlers with ``enqueue=True`` to be processed, then it returns an object that can be awaited to finalize all logging tasks added to the event loop by coroutine sinks. It can be called from non-asynchronous code. This is especially recommended when the ``logger`` is utilized with ``multiprocessing`` to ensure messages put to the internal queue have been properly transmitted before leaving a child process. The returned object should be awaited before the end of a coroutine executed by |asyncio.run| or |loop.run_until_complete| to ensure all asynchronous logging messages are processed. The function |asyncio.get_running_loop| is called beforehand, only tasks scheduled in the same loop that the current one will be awaited by the method. Returns ------- :term:`awaitable` An awaitable object which ensures all asynchronous logging calls are completed when awaited. Examples -------- >>> async def sink(message): ... await asyncio.sleep(0.1) # IO processing... ... print(message, end="") ... >>> async def work(): ... logger.info("Start") ... logger.info("End") ... await logger.complete() ... >>> logger.add(sink) 1 >>> asyncio.run(work()) Start End >>> def process(): ... logger.info("Message sent from the child") ... logger.complete() ... >>> logger.add(sys.stderr, enqueue=True) 1 >>> process = multiprocessing.Process(target=process) >>> process.start() >>> process.join() Message sent from the child """ tasks = [] with self._core.lock: handlers = self._core.handlers.copy() for handler in handlers.values(): handler.complete_queue() tasks.extend(handler.tasks_to_complete()) class AwaitableCompleter: def __await__(self): for task in tasks: yield from task.__await__() return AwaitableCompleter() def catch( self, exception=Exception, *, level="ERROR", reraise=False, onerror=None, exclude=None, default=None, message="An error has been caught in function '{record[function]}', " "process '{record[process].name}' ({record[process].id}), " "thread '{record[thread].name}' ({record[thread].id}):" ): """Return a decorator to automatically log possibly caught error in wrapped function. This is useful to ensure unexpected exceptions are logged, the entire program can be wrapped by this method. This is also very useful to decorate |Thread.run| methods while using threads to propagate errors to the main logger thread. Note that the visibility of variables values (which uses the great |better_exceptions|_ library from `@Qix-`_) depends on the ``diagnose`` option of each configured sink. The returned object can also be used as a context manager. Parameters ---------- exception : |Exception|, optional The type of exception to intercept. If several types should be caught, a tuple of exceptions can be used too. level : |str| or |int|, optional The level name or severity with which the message should be logged. reraise : |bool|, optional Whether the exception should be raised again and hence propagated to the caller. onerror : |callable|_, optional A function that will be called if an error occurs, once the message has been logged. It should accept the exception instance as it sole argument. exclude : |Exception|, optional A type of exception (or a tuple of types) that will be purposely ignored and hence propagated to the caller without being logged. default : |Any|, optional The value to be returned by the decorated function if an error occurred without being re-raised. message : |str|, optional The message that will be automatically logged if an exception occurs. Note that it will be formatted with the ``record`` attribute. Returns ------- :term:`decorator` / :term:`context manager` An object that can be used to decorate a function or as a context manager to log exceptions possibly caught. Examples -------- >>> @logger.catch ... def f(x): ... 100 / x ... >>> def g(): ... f(10) ... f(0) ... >>> g() ERROR - An error has been caught in function 'g', process 'Main' (367), thread 'ch1' (1398): Traceback (most recent call last): File "program.py", line 12, in g() └ > File "program.py", line 10, in g f(0) └ File "program.py", line 6, in f 100 / x └ 0 ZeroDivisionError: division by zero >>> with logger.catch(message="Because we never know..."): ... main() # No exception, no logs >>> # Use 'onerror' to prevent the program exit code to be 0 (if 'reraise=False') while >>> # also avoiding the stacktrace to be duplicated on stderr (if 'reraise=True'). >>> @logger.catch(onerror=lambda _: sys.exit(1)) ... def main(): ... 1 / 0 """ if callable(exception) and ( not isclass(exception) or not issubclass(exception, BaseException) ): return self.catch()(exception) logger = self class Catcher: def __init__(self, from_decorator): self._from_decorator = from_decorator def __enter__(self): return None def __exit__(self, type_, value, traceback_): if type_ is None: return None # We must prevent infinite recursion in case "logger.catch()" handles an exception # that occurs while logging another exception. This can happen for example when # the exception formatter calls "repr(obj)" while the "__repr__" method is broken # but decorated with "logger.catch()". In such a case, we ignore the catching # mechanism and just let the exception be thrown (that way, the formatter will # rightly assume the object is unprintable). if getattr(logger._core.thread_locals, "already_logging_exception", False): return False if not issubclass(type_, exception): return False if exclude is not None and issubclass(type_, exclude): return False from_decorator = self._from_decorator _, depth, _, *options = logger._options if from_decorator: depth += 1 catch_options = [(type_, value, traceback_), depth, True, *options] logger._core.thread_locals.already_logging_exception = True try: logger._log(level, from_decorator, catch_options, message, (), {}) finally: logger._core.thread_locals.already_logging_exception = False if onerror is not None: onerror(value) return not reraise def __call__(self, function): if isclass(function): raise TypeError( "Invalid object decorated with 'catch()', it must be a function, " "not a class (tried to wrap '%s')" % function.__name__ ) catcher = Catcher(True) if iscoroutinefunction(function): async def catch_wrapper(*args, **kwargs): with catcher: return await function(*args, **kwargs) return default elif isgeneratorfunction(function): def catch_wrapper(*args, **kwargs): with catcher: return (yield from function(*args, **kwargs)) return default else: def catch_wrapper(*args, **kwargs): with catcher: return function(*args, **kwargs) return default functools.update_wrapper(catch_wrapper, function) return catch_wrapper return Catcher(False) def opt( self, *, exception=None, record=False, lazy=False, colors=False, raw=False, capture=True, depth=0, ansi=False ): r"""Parametrize a logging call to slightly change generated log message. Note that it's not possible to chain |opt| calls, the last one takes precedence over the others as it will "reset" the options to their default values. Parameters ---------- exception : |bool|, |tuple| or |Exception|, optional If it does not evaluate as ``False``, the passed exception is formatted and added to the log message. It could be an |Exception| object or a ``(type, value, traceback)`` tuple, otherwise the exception information is retrieved from |sys.exc_info|. record : |bool|, optional If ``True``, the record dict contextualizing the logging call can be used to format the message by using ``{record[key]}`` in the log message. lazy : |bool|, optional If ``True``, the logging call attribute to format the message should be functions which will be called only if the level is high enough. This can be used to avoid expensive functions if not necessary. colors : |bool|, optional If ``True``, logged message will be colorized according to the markups it possibly contains. raw : |bool|, optional If ``True``, the formatting of each sink will be bypassed and the message will be sent as is. capture : |bool|, optional If ``False``, the ``**kwargs`` of logged message will not automatically populate the ``extra`` dict (although they are still used for formatting). depth : |int|, optional Specify which stacktrace should be used to contextualize the logged message. This is useful while using the logger from inside a wrapped function to retrieve worthwhile information. ansi : |bool|, optional Deprecated since version 0.4.1: the ``ansi`` parameter will be removed in Loguru 1.0.0, it is replaced by ``colors`` which is a more appropriate name. Returns ------- :class:`~Logger` A logger wrapping the core logger, but transforming logged message adequately before sending. Examples -------- >>> try: ... 1 / 0 ... except ZeroDivisionError: ... logger.opt(exception=True).debug("Exception logged with debug level:") ... [18:10:02] DEBUG in '' - Exception logged with debug level: Traceback (most recent call last, catch point marked): > File "", line 2, in ZeroDivisionError: division by zero >>> logger.opt(record=True).info("Current line is: {record[line]}") [18:10:33] INFO in '' - Current line is: 1 >>> logger.opt(lazy=True).debug("If sink <= DEBUG: {x}", x=lambda: math.factorial(2**5)) [18:11:19] DEBUG in '' - If sink <= DEBUG: 263130836933693530167218012160000000 >>> logger.opt(colors=True).warning("We got a BIG problem") [18:11:30] WARNING in '' - We got a BIG problem >>> logger.opt(raw=True).debug("No formatting\n") No formatting >>> logger.opt(capture=False).info("Displayed but not captured: {value}", value=123) [18:11:41] Displayed but not captured: 123 >>> def wrapped(): ... logger.opt(depth=1).info("Get parent context") ... >>> def func(): ... wrapped() ... >>> func() [18:11:54] DEBUG in 'func' - Get parent context """ if ansi: colors = True warnings.warn( "The 'ansi' parameter is deprecated, please use 'colors' instead", DeprecationWarning, stacklevel=2, ) args = self._options[-2:] return Logger(self._core, exception, depth, record, lazy, colors, raw, capture, *args) def bind(__self, **kwargs): # noqa: N805 """Bind attributes to the ``extra`` dict of each logged message record. This is used to add custom context to each logging call. Parameters ---------- **kwargs Mapping between keys and values that will be added to the ``extra`` dict. Returns ------- :class:`~Logger` A logger wrapping the core logger, but which sends record with the customized ``extra`` dict. Examples -------- >>> logger.add(sys.stderr, format="{extra[ip]} - {message}") >>> class Server: ... def __init__(self, ip): ... self.ip = ip ... self.logger = logger.bind(ip=ip) ... def call(self, message): ... self.logger.info(message) ... >>> instance_1 = Server("192.168.0.200") >>> instance_2 = Server("127.0.0.1") >>> instance_1.call("First instance") 192.168.0.200 - First instance >>> instance_2.call("Second instance") 127.0.0.1 - Second instance """ *options, extra = __self._options return Logger(__self._core, *options, {**extra, **kwargs}) @contextlib.contextmanager def contextualize(__self, **kwargs): # noqa: N805 """Bind attributes to the context-local ``extra`` dict while inside the ``with`` block. Contrary to |bind| there is no ``logger`` returned, the ``extra`` dict is modified in-place and updated globally. Most importantly, it uses |contextvars| which means that contextualized values are unique to each threads and asynchronous tasks. The ``extra`` dict will retrieve its initial state once the context manager is exited. Parameters ---------- **kwargs Mapping between keys and values that will be added to the context-local ``extra`` dict. Returns ------- :term:`context manager` / :term:`decorator` A context manager (usable as a decorator too) that will bind the attributes once entered and restore the initial state of the ``extra`` dict while exited. Examples -------- >>> logger.add(sys.stderr, format="{message} | {extra}") 1 >>> def task(): ... logger.info("Processing!") ... >>> with logger.contextualize(task_id=123): ... task() ... Processing! | {'task_id': 123} >>> logger.info("Done.") Done. | {} """ with __self._core.lock: new_context = {**context.get(), **kwargs} token = context.set(new_context) try: yield finally: with __self._core.lock: context.reset(token) def patch(self, patcher): """Attach a function to modify the record dict created by each logging call. The ``patcher`` may be used to update the record on-the-fly before it's propagated to the handlers. This allows the "extra" dict to be populated with dynamic values and also permits advanced modifications of the record emitted while logging a message. The function is called once before sending the log message to the different handlers. It is recommended to apply modification on the ``record["extra"]`` dict rather than on the ``record`` dict itself, as some values are used internally by `Loguru`, and modify them may produce unexpected results. The logger can be patched multiple times. In this case, the functions are called in the same order as they are added. Parameters ---------- patcher: |callable|_ The function to which the record dict will be passed as the sole argument. This function is in charge of updating the record in-place, the function does not need to return any value, the modified record object will be re-used. Returns ------- :class:`~Logger` A logger wrapping the core logger, but which records are passed through the ``patcher`` function before being sent to the added handlers. Examples -------- >>> logger.add(sys.stderr, format="{extra[utc]} {message}") >>> logger = logger.patch(lambda record: record["extra"].update(utc=datetime.utcnow()) >>> logger.info("That's way, you can log messages with time displayed in UTC") >>> def wrapper(func): ... @functools.wraps(func) ... def wrapped(*args, **kwargs): ... logger.patch(lambda r: r.update(function=func.__name__)).info("Wrapped!") ... return func(*args, **kwargs) ... return wrapped >>> def recv_record_from_network(pipe): ... record = pickle.loads(pipe.read()) ... level, message = record["level"], record["message"] ... logger.patch(lambda r: r.update(record)).log(level, message) """ *options, patchers, extra = self._options return Logger(self._core, *options, [*patchers, patcher], extra) def level(self, name, no=None, color=None, icon=None): r"""Add, update or retrieve a logging level. Logging levels are defined by their ``name`` to which a severity ``no``, an ansi ``color`` tag and an ``icon`` are associated and possibly modified at run-time. To |log| to a custom level, you should necessarily use its name, the severity number is not linked back to levels name (this implies that several levels can share the same severity). To add a new level, its ``name`` and its ``no`` are required. A ``color`` and an ``icon`` can also be specified or will be empty by default. To update an existing level, pass its ``name`` with the parameters to be changed. It is not possible to modify the ``no`` of a level once it has been added. To retrieve level information, the ``name`` solely suffices. Parameters ---------- name : |str| The name of the logging level. no : |int| The severity of the level to be added or updated. color : |str| The color markup of the level to be added or updated. icon : |str| The icon of the level to be added or updated. Returns ------- ``Level`` A |namedtuple| containing information about the level. Raises ------ ValueError If attempting to access a level with a ``name`` that is not registered, or if trying to change the severity ``no`` of an existing level. Examples -------- >>> level = logger.level("ERROR") >>> print(level) Level(name='ERROR', no=40, color='', icon='❌') >>> logger.add(sys.stderr, format="{level.no} {level.icon} {message}") 1 >>> logger.level("CUSTOM", no=15, color="", icon="@") Level(name='CUSTOM', no=15, color='', icon='@') >>> logger.log("CUSTOM", "Logging...") 15 @ Logging... >>> logger.level("WARNING", icon=r"/!\\") Level(name='WARNING', no=30, color='', icon='/!\\\\') >>> logger.warning("Updated!") 30 /!\\ Updated! """ if not isinstance(name, str): raise TypeError( "Invalid level name, it should be a string, not: '%s'" % type(name).__name__ ) if no is color is icon is None: try: return self._core.levels[name] except KeyError: raise ValueError("Level '%s' does not exist" % name) from None if name not in self._core.levels: if no is None: raise ValueError( "Level '%s' does not exist, you have to create it by specifying a level no" % name ) old_color, old_icon = "", " " elif no is not None: raise ValueError("Level '%s' already exists, you can't update its severity no" % name) else: _, no, old_color, old_icon = self.level(name) if color is None: color = old_color if icon is None: icon = old_icon if not isinstance(no, int): raise TypeError( "Invalid level no, it should be an integer, not: '%s'" % type(no).__name__ ) if no < 0: raise ValueError("Invalid level no, it should be a positive integer, not: %d" % no) ansi = Colorizer.ansify(color) level = Level(name, no, color, icon) with self._core.lock: self._core.levels[name] = level self._core.levels_ansi_codes[name] = ansi self._core.levels_lookup[name] = (name, name, no, icon) for handler in self._core.handlers.values(): handler.update_format(name) return level def disable(self, name): """Disable logging of messages coming from ``name`` module and its children. Developers of library using `Loguru` should absolutely disable it to avoid disrupting users with unrelated logs messages. Note that in some rare circumstances, it is not possible for `Loguru` to determine the module's ``__name__`` value. In such situation, ``record["name"]`` will be equal to ``None``, this is why ``None`` is also a valid argument. Parameters ---------- name : |str| or ``None`` The name of the parent module to disable. Examples -------- >>> logger.info("Allowed message by default") [22:21:55] Allowed message by default >>> logger.disable("my_library") >>> logger.info("While publishing a library, don't forget to disable logging") """ self._change_activation(name, False) def enable(self, name): """Enable logging of messages coming from ``name`` module and its children. Logging is generally disabled by imported library using `Loguru`, hence this function allows users to receive these messages anyway. To enable all logs regardless of the module they are coming from, an empty string ``""`` can be passed. Parameters ---------- name : |str| or ``None`` The name of the parent module to re-allow. Examples -------- >>> logger.disable("__main__") >>> logger.info("Disabled, so nothing is logged.") >>> logger.enable("__main__") >>> logger.info("Re-enabled, messages are logged.") [22:46:12] Re-enabled, messages are logged. """ self._change_activation(name, True) def configure(self, *, handlers=None, levels=None, extra=None, patcher=None, activation=None): """Configure the core logger. It should be noted that ``extra`` values set using this function are available across all modules, so this is the best way to set overall default values. To load the configuration directly from a file, such as JSON or YAML, it is also possible to use the |loguru-config|_ library developed by `@erezinman`_. Parameters ---------- handlers : |list| of |dict|, optional A list of each handler to be added. The list should contain dicts of params passed to the |add| function as keyword arguments. If not ``None``, all previously added handlers are first removed. levels : |list| of |dict|, optional A list of each level to be added or updated. The list should contain dicts of params passed to the |level| function as keyword arguments. This will never remove previously created levels. extra : |dict|, optional A dict containing additional parameters bound to the core logger, useful to share common properties if you call |bind| in several of your files modules. If not ``None``, this will remove previously configured ``extra`` dict. patcher : |callable|_, optional A function that will be applied to the record dict of each logged messages across all modules using the logger. It should modify the dict in-place without returning anything. The function is executed prior to the one possibly added by the |patch| method. If not ``None``, this will replace previously configured ``patcher`` function. activation : |list| of |tuple|, optional A list of ``(name, state)`` tuples which denotes which loggers should be enabled (if ``state`` is ``True``) or disabled (if ``state`` is ``False``). The calls to |enable| and |disable| are made accordingly to the list order. This will not modify previously activated loggers, so if you need a fresh start prepend your list with ``("", False)`` or ``("", True)``. Returns ------- :class:`list` of :class:`int` A list containing the identifiers of added sinks (if any). Examples -------- >>> logger.configure( ... handlers=[ ... dict(sink=sys.stderr, format="[{time}] {message}"), ... dict(sink="file.log", enqueue=True, serialize=True), ... ], ... levels=[dict(name="NEW", no=13, icon="¤", color="")], ... extra={"common_to_all": "default"}, ... patcher=lambda record: record["extra"].update(some_value=42), ... activation=[("my_module.secret", False), ("another_library.module", True)], ... ) [1, 2] >>> # Set a default "extra" dict to logger across all modules, without "bind()" >>> extra = {"context": "foo"} >>> logger.configure(extra=extra) >>> logger.add(sys.stderr, format="{extra[context]} - {message}") >>> logger.info("Context without bind") >>> # => "foo - Context without bind" >>> logger.bind(context="bar").info("Suppress global context") >>> # => "bar - Suppress global context" """ if handlers is not None: self.remove() else: handlers = [] if levels is not None: for params in levels: self.level(**params) if patcher is not None: with self._core.lock: self._core.patcher = patcher if extra is not None: with self._core.lock: self._core.extra.clear() self._core.extra.update(extra) if activation is not None: for name, state in activation: if state: self.enable(name) else: self.disable(name) return [self.add(**params) for params in handlers] def _change_activation(self, name, status): if not (name is None or isinstance(name, str)): raise TypeError( "Invalid name, it should be a string (or None), not: '%s'" % type(name).__name__ ) with self._core.lock: enabled = self._core.enabled.copy() if name is None: for n in enabled: if n is None: enabled[n] = status self._core.activation_none = status self._core.enabled = enabled return if name != "": name += "." activation_list = [ (n, s) for n, s in self._core.activation_list if n[: len(name)] != name ] parent_status = next((s for n, s in activation_list if name[: len(n)] == n), None) if parent_status != status and not (name == "" and status is True): activation_list.append((name, status)) def modules_depth(x): return x[0].count(".") activation_list.sort(key=modules_depth, reverse=True) for n in enabled: if n is not None and (n + ".")[: len(name)] == name: enabled[n] = status self._core.activation_list = activation_list self._core.enabled = enabled @staticmethod def parse(file, pattern, *, cast={}, chunk=2**16): # noqa: B006 """Parse raw logs and extract each entry as a |dict|. The logging format has to be specified as the regex ``pattern``, it will then be used to parse the ``file`` and retrieve each entry based on the named groups present in the regex. Parameters ---------- file : |str|, |Path| or |file-like object|_ The path of the log file to be parsed, or an already opened file object. pattern : |str| or |re.Pattern|_ The regex to use for logs parsing, it should contain named groups which will be included in the returned dict. cast : |callable|_ or |dict|, optional A function that should convert in-place the regex groups parsed (a dict of string values) to more appropriate types. If a dict is passed, it should be a mapping between keys of parsed log dict and the function that should be used to convert the associated value. chunk : |int|, optional The number of bytes read while iterating through the logs, this avoids having to load the whole file in memory. Yields ------ :class:`dict` The dict mapping regex named groups to matched values, as returned by |match.groupdict| and optionally converted according to ``cast`` argument. Examples -------- >>> reg = r"(?P[0-9]+): (?P.*)" # If log format is "{level.no} - {message}" >>> for e in logger.parse("file.log", reg): # A file line could be "10 - A debug message" ... print(e) # => {'lvl': '10', 'msg': 'A debug message'} >>> caster = dict(lvl=int) # Parse 'lvl' key as an integer >>> for e in logger.parse("file.log", reg, cast=caster): ... print(e) # => {'lvl': 10, 'msg': 'A debug message'} >>> def cast(groups): ... if "date" in groups: ... groups["date"] = datetime.strptime(groups["date"], "%Y-%m-%d %H:%M:%S") ... >>> with open("file.log") as file: ... for log in logger.parse(file, reg, cast=cast): ... print(log["date"], log["something_else"]) """ if isinstance(file, (str, PathLike)): @contextlib.contextmanager def opener(): with open(str(file)) as fileobj: yield fileobj elif hasattr(file, "read") and callable(file.read): @contextlib.contextmanager def opener(): yield file else: raise TypeError( "Invalid file, it should be a string path or a file object, not: '%s'" % type(file).__name__ ) if isinstance(cast, dict): def cast_function(groups): for key, converter in cast.items(): if key in groups: groups[key] = converter(groups[key]) elif callable(cast): cast_function = cast else: raise TypeError( "Invalid cast, it should be a function or a dict, not: '%s'" % type(cast).__name__ ) try: regex = re.compile(pattern) except TypeError: raise TypeError( "Invalid pattern, it should be a string or a compiled regex, not: '%s'" % type(pattern).__name__ ) from None with opener() as fileobj: matches = Logger._find_iter(fileobj, regex, chunk) for match in matches: groups = match.groupdict() cast_function(groups) yield groups @staticmethod def _find_iter(fileobj, regex, chunk): buffer = fileobj.read(0) while True: text = fileobj.read(chunk) buffer += text matches = list(regex.finditer(buffer)) if not text: yield from matches break if len(matches) > 1: end = matches[-2].end() buffer = buffer[end:] yield from matches[:-1] def _log(self, level, from_decorator, options, message, args, kwargs): core = self._core if not core.handlers: return try: level_id, level_name, level_no, level_icon = core.levels_lookup[level] except (KeyError, TypeError): if isinstance(level, str): raise ValueError("Level '%s' does not exist" % level) from None if not isinstance(level, int): raise TypeError( "Invalid level, it should be an integer or a string, not: '%s'" % type(level).__name__ ) from None if level < 0: raise ValueError( "Invalid level value, it should be a positive integer, not: %d" % level ) from None cache = (None, "Level %d" % level, level, " ") level_id, level_name, level_no, level_icon = cache core.levels_lookup[level] = cache if level_no < core.min_level: return (exception, depth, record, lazy, colors, raw, capture, patchers, extra) = options try: frame = get_frame(depth + 2) except ValueError: f_globals = {} f_lineno = 0 co_name = "" co_filename = "" else: f_globals = frame.f_globals f_lineno = frame.f_lineno co_name = frame.f_code.co_name co_filename = frame.f_code.co_filename try: name = f_globals["__name__"] except KeyError: name = None try: if not core.enabled[name]: return except KeyError: enabled = core.enabled if name is None: status = core.activation_none enabled[name] = status if not status: return else: dotted_name = name + "." for dotted_module_name, status in core.activation_list: if dotted_name[: len(dotted_module_name)] == dotted_module_name: if status: break enabled[name] = False return enabled[name] = True current_datetime = aware_now() file_name = basename(co_filename) thread = current_thread() process = current_process() elapsed = current_datetime - start_time if exception: if isinstance(exception, BaseException): type_, value, traceback = (type(exception), exception, exception.__traceback__) elif isinstance(exception, tuple): type_, value, traceback = exception else: type_, value, traceback = sys.exc_info() exception = RecordException(type_, value, traceback) else: exception = None log_record = { "elapsed": elapsed, "exception": exception, "extra": {**core.extra, **context.get(), **extra}, "file": RecordFile(file_name, co_filename), "function": co_name, "level": RecordLevel(level_name, level_no, level_icon), "line": f_lineno, "message": str(message), "module": splitext(file_name)[0], "name": name, "process": RecordProcess(process.ident, process.name), "thread": RecordThread(thread.ident, thread.name), "time": current_datetime, } if lazy: args = [arg() for arg in args] kwargs = {key: value() for key, value in kwargs.items()} if capture and kwargs: log_record["extra"].update(kwargs) if record: if "record" in kwargs: raise TypeError( "The message can't be formatted: 'record' shall not be used as a keyword " "argument while logger has been configured with '.opt(record=True)'" ) kwargs.update(record=log_record) if colors: if args or kwargs: colored_message = Colorizer.prepare_message(message, args, kwargs) else: colored_message = Colorizer.prepare_simple_message(str(message)) log_record["message"] = colored_message.stripped elif args or kwargs: colored_message = None log_record["message"] = message.format(*args, **kwargs) else: colored_message = None if core.patcher: core.patcher(log_record) for patcher in patchers: patcher(log_record) for handler in core.handlers.values(): handler.emit(log_record, level_id, from_decorator, raw, colored_message) def trace(__self, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``'TRACE'``.""" __self._log("TRACE", False, __self._options, __message, args, kwargs) def debug(__self, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``'DEBUG'``.""" __self._log("DEBUG", False, __self._options, __message, args, kwargs) def info(__self, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``'INFO'``.""" __self._log("INFO", False, __self._options, __message, args, kwargs) def success(__self, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``'SUCCESS'``.""" __self._log("SUCCESS", False, __self._options, __message, args, kwargs) def warning(__self, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``'WARNING'``.""" __self._log("WARNING", False, __self._options, __message, args, kwargs) def error(__self, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``'ERROR'``.""" __self._log("ERROR", False, __self._options, __message, args, kwargs) def critical(__self, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``'CRITICAL'``.""" __self._log("CRITICAL", False, __self._options, __message, args, kwargs) def exception(__self, __message, *args, **kwargs): # noqa: N805 r"""Log an ``'ERROR'```` message while also capturing the currently handled exception.""" options = (True,) + __self._options[1:] __self._log("ERROR", False, options, __message, args, kwargs) def log(__self, __level, __message, *args, **kwargs): # noqa: N805 r"""Log ``message.format(*args, **kwargs)`` with severity ``level``.""" __self._log(__level, False, __self._options, __message, args, kwargs) def start(self, *args, **kwargs): """Add a handler sending log messages to a sink adequately configured. Deprecated function, use |add| instead. Warnings -------- .. deprecated:: 0.2.2 ``start()`` will be removed in Loguru 1.0.0, it is replaced by ``add()`` which is a less confusing name. """ warnings.warn( "The 'start()' method is deprecated, please use 'add()' instead", DeprecationWarning, stacklevel=2, ) return self.add(*args, **kwargs) def stop(self, *args, **kwargs): """Remove a previously added handler and stop sending logs to its sink. Deprecated function, use |remove| instead. Warnings -------- .. deprecated:: 0.2.2 ``stop()`` will be removed in Loguru 1.0.0, it is replaced by ``remove()`` which is a less confusing name. """ warnings.warn( "The 'stop()' method is deprecated, please use 'remove()' instead", DeprecationWarning, stacklevel=2, ) return self.remove(*args, **kwargs) ================================================ FILE: libs/loguru/_recattrs.py ================================================ import pickle from collections import namedtuple class RecordLevel: __slots__ = ("icon", "name", "no") def __init__(self, name, no, icon): self.name = name self.no = no self.icon = icon def __repr__(self): return "(name=%r, no=%r, icon=%r)" % (self.name, self.no, self.icon) def __format__(self, spec): return self.name.__format__(spec) class RecordFile: __slots__ = ("name", "path") def __init__(self, name, path): self.name = name self.path = path def __repr__(self): return "(name=%r, path=%r)" % (self.name, self.path) def __format__(self, spec): return self.name.__format__(spec) class RecordThread: __slots__ = ("id", "name") def __init__(self, id_, name): self.id = id_ self.name = name def __repr__(self): return "(id=%r, name=%r)" % (self.id, self.name) def __format__(self, spec): return self.id.__format__(spec) class RecordProcess: __slots__ = ("id", "name") def __init__(self, id_, name): self.id = id_ self.name = name def __repr__(self): return "(id=%r, name=%r)" % (self.id, self.name) def __format__(self, spec): return self.id.__format__(spec) class RecordException( namedtuple("RecordException", ("type", "value", "traceback")) # noqa: PYI024 ): def __repr__(self): return "(type=%r, value=%r, traceback=%r)" % (self.type, self.value, self.traceback) def __reduce__(self): # The traceback is not picklable, therefore it needs to be removed. Additionally, there's a # possibility that the exception value is not picklable either. In such cases, we also need # to remove it. This is done for user convenience, aiming to prevent error logging caused by # custom exceptions from third-party libraries. If the serialization succeeds, we can reuse # the pickled value later for optimization (so that it's not pickled twice). It's important # to note that custom exceptions might not necessarily raise a PickleError, hence the # generic Exception catch. try: pickled_value = pickle.dumps(self.value) except Exception: return (RecordException, (self.type, None, None)) else: return (RecordException._from_pickled_value, (self.type, pickled_value, None)) @classmethod def _from_pickled_value(cls, type_, pickled_value, traceback_): try: # It's safe to use "pickle.loads()" in this case because the pickled value is generated # by the same code and is not coming from an untrusted source. value = pickle.loads(pickled_value) except Exception: return cls(type_, None, traceback_) else: return cls(type_, value, traceback_) ================================================ FILE: libs/loguru/_simple_sinks.py ================================================ import inspect import logging import weakref from ._asyncio_loop import get_running_loop, get_task_loop class StreamSink: def __init__(self, stream): self._stream = stream self._flushable = callable(getattr(stream, "flush", None)) self._stoppable = callable(getattr(stream, "stop", None)) self._completable = inspect.iscoroutinefunction(getattr(stream, "complete", None)) def write(self, message): self._stream.write(message) if self._flushable: self._stream.flush() def stop(self): if self._stoppable: self._stream.stop() def tasks_to_complete(self): if not self._completable: return [] return [self._stream.complete()] class StandardSink: def __init__(self, handler): self._handler = handler def write(self, message): raw_record = message.record message = str(message) exc = raw_record["exception"] record = logging.getLogger().makeRecord( raw_record["name"], raw_record["level"].no, raw_record["file"].path, raw_record["line"], message, (), (exc.type, exc.value, exc.traceback) if exc else None, raw_record["function"], {"extra": raw_record["extra"]}, ) if exc: record.exc_text = "\n" record.levelname = raw_record["level"].name self._handler.handle(record) def stop(self): self._handler.close() def tasks_to_complete(self): return [] class AsyncSink: def __init__(self, function, loop, error_interceptor): self._function = function self._loop = loop self._error_interceptor = error_interceptor self._tasks = weakref.WeakSet() def write(self, message): try: loop = self._loop or get_running_loop() except RuntimeError: return coroutine = self._function(message) task = loop.create_task(coroutine) def check_exception(future): if future.cancelled() or future.exception() is None: return if not self._error_interceptor.should_catch(): raise future.exception() self._error_interceptor.print(message.record, exception=future.exception()) task.add_done_callback(check_exception) self._tasks.add(task) def stop(self): for task in self._tasks: task.cancel() def tasks_to_complete(self): # To avoid errors due to "self._tasks" being mutated while iterated, the # "tasks_to_complete()" method must be protected by the same lock as "write()" (which # happens to be the handler lock). However, the tasks must not be awaited while the lock is # acquired as this could lead to a deadlock. Therefore, we first need to collect the tasks # to complete, then return them so that they can be awaited outside of the lock. return [self._complete_task(task) for task in self._tasks] async def _complete_task(self, task): loop = get_running_loop() if get_task_loop(task) is not loop: return try: await task except Exception: pass # Handled in "check_exception()" def __getstate__(self): state = self.__dict__.copy() state["_tasks"] = None return state def __setstate__(self, state): self.__dict__.update(state) self._tasks = weakref.WeakSet() class CallableSink: def __init__(self, function): self._function = function def write(self, message): self._function(message) def stop(self): pass def tasks_to_complete(self): return [] ================================================ FILE: libs/loguru/_string_parsers.py ================================================ import datetime import re class Frequencies: @staticmethod def hourly(t): dt = t + datetime.timedelta(hours=1) return dt.replace(minute=0, second=0, microsecond=0) @staticmethod def daily(t): dt = t + datetime.timedelta(days=1) return dt.replace(hour=0, minute=0, second=0, microsecond=0) @staticmethod def weekly(t): dt = t + datetime.timedelta(days=7 - t.weekday()) return dt.replace(hour=0, minute=0, second=0, microsecond=0) @staticmethod def monthly(t): if t.month == 12: y, m = t.year + 1, 1 else: y, m = t.year, t.month + 1 return t.replace(year=y, month=m, day=1, hour=0, minute=0, second=0, microsecond=0) @staticmethod def yearly(t): y = t.year + 1 return t.replace(year=y, month=1, day=1, hour=0, minute=0, second=0, microsecond=0) def parse_size(size): size = size.strip() reg = re.compile(r"([e\+\-\.\d]+)\s*([kmgtpezy])?(i)?(b)", flags=re.I) match = reg.fullmatch(size) if not match: return None s, u, i, b = match.groups() try: s = float(s) except ValueError as e: raise ValueError("Invalid float value while parsing size: '%s'" % s) from e u = "kmgtpezy".index(u.lower()) + 1 if u else 0 i = 1024 if i else 1000 b = {"b": 8, "B": 1}[b] if b else 1 return s * i**u / b def parse_duration(duration): duration = duration.strip() reg = r"(?:([e\+\-\.\d]+)\s*([a-z]+)[\s\,]*)" units = [ ("y|years?", 31536000), ("months?", 2628000), ("w|weeks?", 604800), ("d|days?", 86400), ("h|hours?", 3600), ("min(?:ute)?s?", 60), ("s|sec(?:ond)?s?", 1), # spellchecker: disable-line ("ms|milliseconds?", 0.001), ("us|microseconds?", 0.000001), ] if not re.fullmatch(reg + "+", duration, flags=re.I): return None seconds = 0 for value, unit in re.findall(reg, duration, flags=re.I): try: value = float(value) except ValueError as e: raise ValueError("Invalid float value while parsing duration: '%s'" % value) from e try: unit = next(u for r, u in units if re.fullmatch(r, unit, flags=re.I)) except StopIteration: raise ValueError("Invalid unit value while parsing duration: '%s'" % unit) from None seconds += value * unit return datetime.timedelta(seconds=seconds) def parse_frequency(frequency): frequencies = { "hourly": Frequencies.hourly, "daily": Frequencies.daily, "weekly": Frequencies.weekly, "monthly": Frequencies.monthly, "yearly": Frequencies.yearly, } frequency = frequency.strip().lower() return frequencies.get(frequency, None) def parse_day(day): days = { "monday": 0, "tuesday": 1, "wednesday": 2, "thursday": 3, "friday": 4, "saturday": 5, "sunday": 6, } day = day.strip().lower() if day in days: return days[day] if day.startswith("w") and day[1:].isdigit(): day = int(day[1:]) if not 0 <= day < 7: raise ValueError("Invalid weekday value while parsing day (expected [0-6]): '%d'" % day) else: day = None return day def parse_time(time): time = time.strip() reg = re.compile(r"^[\d\.\:]+\s*(?:[ap]m)?$", flags=re.I) if not reg.match(time): return None formats = [ "%H", "%H:%M", "%H:%M:%S", "%H:%M:%S.%f", "%I %p", "%I:%M %S", "%I:%M:%S %p", "%I:%M:%S.%f %p", ] for format_ in formats: try: dt = datetime.datetime.strptime(time, format_) except ValueError: pass else: return dt.time() raise ValueError("Unrecognized format while parsing time: '%s'" % time) def parse_daytime(daytime): daytime = daytime.strip() reg = re.compile(r"^(.*?)\s+at\s+(.*)$", flags=re.I) match = reg.match(daytime) if match: day, time = match.groups() else: day = time = daytime try: parsed_day = parse_day(day) if match and parsed_day is None: raise ValueError("Unparsable day") except ValueError as e: raise ValueError("Invalid day while parsing daytime: '%s'" % day) from e try: parsed_time = parse_time(time) if match and parsed_time is None: raise ValueError("Unparsable time") except ValueError as e: raise ValueError("Invalid time while parsing daytime: '%s'" % time) from e if parsed_day is None and parsed_time is None: return None return parsed_day, parsed_time ================================================ FILE: libs/loguru/py.typed ================================================ ================================================ FILE: libs/loguru-0.7.3.dist-info/METADATA ================================================ Metadata-Version: 2.3 Name: loguru Version: 0.7.3 Summary: Python logging made (stupidly) simple Keywords: loguru,logging,logger,log Author-email: Delgan Requires-Python: >=3.5,<4.0 Description-Content-Type: text/markdown Classifier: Development Status :: 5 - Production/Stable Classifier: Topic :: System :: Logging Classifier: Intended Audience :: Developers Classifier: Natural Language :: English Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Programming Language :: Python :: Implementation :: CPython Requires-Dist: colorama>=0.3.4 ; sys_platform=='win32' Requires-Dist: aiocontextvars>=0.2.0 ; python_version<'3.7' Requires-Dist: win32-setctime>=1.0.0 ; sys_platform=='win32' Requires-Dist: pre-commit==4.0.1 ; extra == "dev" and ( python_version>='3.9') Requires-Dist: tox==3.27.1 ; extra == "dev" and ( python_version<'3.8') Requires-Dist: tox==4.23.2 ; extra == "dev" and ( python_version>='3.8') Requires-Dist: pytest==6.1.2 ; extra == "dev" and ( python_version<'3.8') Requires-Dist: pytest==8.3.2 ; extra == "dev" and ( python_version>='3.8') Requires-Dist: pytest-cov==2.12.1 ; extra == "dev" and ( python_version<'3.8') Requires-Dist: pytest-cov==5.0.0 ; extra == "dev" and ( python_version>='3.8' and python_version<'3.9') Requires-Dist: pytest-cov==6.0.0 ; extra == "dev" and ( python_version>='3.9') Requires-Dist: pytest-mypy-plugins==1.9.3 ; extra == "dev" and ( python_version>='3.6' and python_version<'3.8') Requires-Dist: pytest-mypy-plugins==3.1.0 ; extra == "dev" and ( python_version>='3.8') Requires-Dist: colorama==0.4.5 ; extra == "dev" and ( python_version<'3.8') Requires-Dist: colorama==0.4.6 ; extra == "dev" and ( python_version>='3.8') Requires-Dist: freezegun==1.1.0 ; extra == "dev" and ( python_version<'3.8') Requires-Dist: freezegun==1.5.0 ; extra == "dev" and ( python_version>='3.8') Requires-Dist: exceptiongroup==1.1.3 ; extra == "dev" and ( python_version>='3.7' and python_version<'3.11') Requires-Dist: mypy==v0.910 ; extra == "dev" and ( python_version<'3.6') Requires-Dist: mypy==v0.971 ; extra == "dev" and ( python_version>='3.6' and python_version<'3.7') Requires-Dist: mypy==v1.4.1 ; extra == "dev" and ( python_version>='3.7' and python_version<'3.8') Requires-Dist: mypy==v1.13.0 ; extra == "dev" and ( python_version>='3.8') Requires-Dist: Sphinx==8.1.3 ; extra == "dev" and ( python_version>='3.11') Requires-Dist: sphinx-rtd-theme==3.0.2 ; extra == "dev" and ( python_version>='3.11') Requires-Dist: myst-parser==4.0.0 ; extra == "dev" and ( python_version>='3.11') Requires-Dist: build==1.2.2 ; extra == "dev" and ( python_version>='3.11') Requires-Dist: twine==6.0.1 ; extra == "dev" and ( python_version>='3.11') Project-URL: Changelog, https://github.com/Delgan/loguru/blob/master/CHANGELOG.rst Project-URL: Documentation, https://loguru.readthedocs.io/en/stable/index.html Project-URL: Homepage, https://github.com/Delgan/loguru Provides-Extra: dev

Loguru logo

Pypi version Python versions Documentation Build status Coverage Code quality License

Loguru logo

______________________________________________________________________ **Loguru** is a library which aims to bring enjoyable logging in Python. Did you ever feel lazy about configuring a logger and used `print()` instead?... I did, yet logging is fundamental to every application and eases the process of debugging. Using **Loguru** you have no excuse not to use logging from the start, this is as simple as `from loguru import logger`. Also, this library is intended to make Python logging less painful by adding a bunch of useful functionalities that solve caveats of the standard loggers. Using logs in your application should be an automatism, **Loguru** tries to make it both pleasant and powerful. ## Installation ``` pip install loguru ``` ## Features - [Ready to use out of the box without boilerplate](#ready-to-use-out-of-the-box-without-boilerplate) - [No Handler, no Formatter, no Filter: one function to rule them all](#no-handler-no-formatter-no-filter-one-function-to-rule-them-all) - [Easier file logging with rotation / retention / compression](#easier-file-logging-with-rotation--retention--compression) - [Modern string formatting using braces style](#modern-string-formatting-using-braces-style) - [Exceptions catching within threads or main](#exceptions-catching-within-threads-or-main) - [Pretty logging with colors](#pretty-logging-with-colors) - [Asynchronous, Thread-safe, Multiprocess-safe](#asynchronous-thread-safe-multiprocess-safe) - [Fully descriptive exceptions](#fully-descriptive-exceptions) - [Structured logging as needed](#structured-logging-as-needed) - [Lazy evaluation of expensive functions](#lazy-evaluation-of-expensive-functions) - [Customizable levels](#customizable-levels) - [Better datetime handling](#better-datetime-handling) - [Suitable for scripts and libraries](#suitable-for-scripts-and-libraries) - [Entirely compatible with standard logging](#entirely-compatible-with-standard-logging) - [Personalizable defaults through environment variables](#personalizable-defaults-through-environment-variables) - [Convenient parser](#convenient-parser) - [Exhaustive notifier](#exhaustive-notifier) - [10x faster than built-in logging](#10x-faster-than-built-in-logging) ## Take the tour ### Ready to use out of the box without boilerplate The main concept of Loguru is that **there is one and only one** [`logger`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger). For convenience, it is pre-configured and outputs to `stderr` to begin with (but that's entirely configurable). ```python from loguru import logger logger.debug("That's it, beautiful and simple logging!") ``` The [`logger`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger) is just an interface which dispatches log messages to configured handlers. Simple, right? ### No Handler, no Formatter, no Filter: one function to rule them all How to add a handler? How to set up logs formatting? How to filter messages? How to set level? One answer: the [`add()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add) function. ```python logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO") ``` This function should be used to register [sinks](https://loguru.readthedocs.io/en/stable/api/logger.html#sink) which are responsible for managing [log messages](https://loguru.readthedocs.io/en/stable/api/logger.html#message) contextualized with a [record dict](https://loguru.readthedocs.io/en/stable/api/logger.html#record). A sink can take many forms: a simple function, a string path, a file-like object, a coroutine function or a built-in Handler. Note that you may also a previously added handler by using the identifier returned while adding it. This is particularly useful if you want to supersede the default `stderr` handler: just call [`logger.remove()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.remove) to make a fresh start. ### Easier file logging with rotation / retention / compression If you want to send logged messages to a file, you just have to use a string path as the sink. It can be automatically timed too for convenience: ```python logger.add("file_{time}.log") ``` It is also [easily configurable](https://loguru.readthedocs.io/en/stable/api/logger.html#file) if you need rotating logger, if you want to remove older logs, or if you wish to compress your files at closure. ```python logger.add("file_1.log", rotation="500 MB") # Automatically rotate too big file logger.add("file_2.log", rotation="12:00") # New file is created each day at noon logger.add("file_3.log", rotation="1 week") # Once the file is too old, it's rotated logger.add("file_X.log", retention="10 days") # Cleanup after some time logger.add("file_Y.log", compression="zip") # Save some loved space ``` ### Modern string formatting using braces style Loguru favors the much more elegant and powerful `{}` formatting over `%`, logging functions are actually equivalent to `str.format()`. ```python logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings") ``` ### Exceptions catching within threads or main Have you ever seen your program crashing unexpectedly without seeing anything in the log file? Did you ever notice that exceptions occurring in threads were not logged? This can be solved using the [`catch()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.catch) decorator / context manager which ensures that any error is correctly propagated to the [`logger`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger). ```python @logger.catch def my_function(x, y, z): # An error? It's caught anyway! return 1 / (x + y + z) ``` ### Pretty logging with colors Loguru automatically adds colors to your logs if your terminal is compatible. You can define your favorite style by using [markup tags](https://loguru.readthedocs.io/en/stable/api/logger.html#color) in the sink format. ```python logger.add(sys.stdout, colorize=True, format="{time} {message}") ``` ### Asynchronous, Thread-safe, Multiprocess-safe All sinks added to the [`logger`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger) are thread-safe by default. They are not multiprocess-safe, but you can `enqueue` the messages to ensure logs integrity. This same argument can also be used if you want async logging. ```python logger.add("somefile.log", enqueue=True) ``` Coroutine functions used as sinks are also supported and should be awaited with [`complete()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.complete). ### Fully descriptive exceptions Logging exceptions that occur in your code is important to track bugs, but it's quite useless if you don't know why it failed. Loguru helps you identify problems by allowing the entire stack trace to be displayed, including values of variables (thanks [`better_exceptions`](https://github.com/Qix-/better-exceptions) for this!). The code: ```python # Caution, "diagnose=True" is the default and may leak sensitive data in prod logger.add("out.log", backtrace=True, diagnose=True) def func(a, b): return a / b def nested(c): try: func(5, c) except ZeroDivisionError: logger.exception("What?!") nested(0) ``` Would result in: ```none 2018-07-17 01:38:43.975 | ERROR | __main__:nested:10 - What?! Traceback (most recent call last): File "test.py", line 12, in nested(0) └ > File "test.py", line 8, in nested func(5, c) │ └ 0 └ File "test.py", line 4, in func return a / b │ └ 0 └ 5 ZeroDivisionError: division by zero ``` Note that this feature won't work on default Python REPL due to unavailable frame data. See also: [Security considerations when using Loguru](https://loguru.readthedocs.io/en/stable/resources/recipes.html#security-considerations-when-using-loguru). ### Structured logging as needed Want your logs to be serialized for easier parsing or to pass them around? Using the `serialize` argument, each log message will be converted to a JSON string before being sent to the configured sink. ```python logger.add(custom_sink_function, serialize=True) ``` Using [`bind()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.bind) you can contextualize your logger messages by modifying the `extra` record attribute. ```python logger.add("file.log", format="{extra[ip]} {extra[user]} {message}") context_logger = logger.bind(ip="192.168.0.1", user="someone") context_logger.info("Contextualize your logger easily") context_logger.bind(user="someone_else").info("Inline binding of extra attribute") context_logger.info("Use kwargs to add context during formatting: {user}", user="anybody") ``` It is possible to modify a context-local state temporarily with [`contextualize()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.contextualize): ```python with logger.contextualize(task=task_id): do_something() logger.info("End of task") ``` You can also have more fine-grained control over your logs by combining [`bind()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.bind) and `filter`: ```python logger.add("special.log", filter=lambda record: "special" in record["extra"]) logger.debug("This message is not logged to the file") logger.bind(special=True).info("This message, though, is logged to the file!") ``` Finally, the [`patch()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.patch) method allows dynamic values to be attached to the record dict of each new message: ```python logger.add(sys.stderr, format="{extra[utc]} {message}") logger = logger.patch(lambda record: record["extra"].update(utc=datetime.utcnow())) ``` ### Lazy evaluation of expensive functions Sometime you would like to log verbose information without performance penalty in production, you can use the [`opt()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.opt) method to achieve this. ```python logger.opt(lazy=True).debug("If sink level <= DEBUG: {x}", x=lambda: expensive_function(2**64)) # By the way, "opt()" serves many usages logger.opt(exception=True).info("Error stacktrace added to the log message (tuple accepted too)") logger.opt(colors=True).info("Per message colors") logger.opt(record=True).info("Display values from the record (eg. {record[thread]})") logger.opt(raw=True).info("Bypass sink formatting\n") logger.opt(depth=1).info("Use parent stack context (useful within wrapped functions)") logger.opt(capture=False).info("Keyword arguments not added to {dest} dict", dest="extra") ``` ### Customizable levels Loguru comes with all standard [logging levels](https://loguru.readthedocs.io/en/stable/api/logger.html#levels) to which [`trace()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.trace) and [`success()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.success) are added. Do you need more? Then, just create it by using the [`level()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.level) function. ```python new_level = logger.level("SNAKY", no=38, color="", icon="🐍") logger.log("SNAKY", "Here we go!") ``` ### Better datetime handling The standard logging is bloated with arguments like `datefmt` or `msecs`, `%(asctime)s` and `%(created)s`, naive datetimes without timezone information, not intuitive formatting, etc. Loguru [fixes it](https://loguru.readthedocs.io/en/stable/api/logger.html#time): ```python logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}") ``` ### Suitable for scripts and libraries Using the logger in your scripts is easy, and you can [`configure()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.configure) it at start. To use Loguru from inside a library, remember to never call [`add()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add) but use [`disable()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.disable) instead so logging functions become no-op. If a developer wishes to see your library's logs, they can [`enable()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.enable) it again. ```python # For scripts config = { "handlers": [ {"sink": sys.stdout, "format": "{time} - {message}"}, {"sink": "file.log", "serialize": True}, ], "extra": {"user": "someone"} } logger.configure(**config) # For libraries, should be your library's `__name__` logger.disable("my_library") logger.info("No matter added sinks, this message is not displayed") # In your application, enable the logger in the library logger.enable("my_library") logger.info("This message however is propagated to the sinks") ``` For additional convenience, you can also use the [`loguru-config`](https://github.com/erezinman/loguru-config) library to setup the `logger` directly from a configuration file. ### Entirely compatible with standard logging Wish to use built-in logging `Handler` as a Loguru sink? ```python handler = logging.handlers.SysLogHandler(address=('localhost', 514)) logger.add(handler) ``` Need to propagate Loguru messages to standard `logging`? ```python class PropagateHandler(logging.Handler): def emit(self, record: logging.LogRecord) -> None: logging.getLogger(record.name).handle(record) logger.add(PropagateHandler(), format="{message}") ``` Want to intercept standard `logging` messages toward your Loguru sinks? ```python class InterceptHandler(logging.Handler): def emit(self, record: logging.LogRecord) -> None: # Get corresponding Loguru level if it exists. level: str | int try: level = logger.level(record.levelname).name except ValueError: level = record.levelno # Find caller from where originated the logged message. frame, depth = inspect.currentframe(), 0 while frame and (depth == 0 or frame.f_code.co_filename == logging.__file__): frame = frame.f_back depth += 1 logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage()) logging.basicConfig(handlers=[InterceptHandler()], level=0, force=True) ``` ### Personalizable defaults through environment variables Don't like the default logger formatting? Would prefer another `DEBUG` color? [No problem](https://loguru.readthedocs.io/en/stable/api/logger.html#env): ```bash # Linux / OSX export LOGURU_FORMAT="{time} | {message}" # Windows setx LOGURU_DEBUG_COLOR "" ``` ### Convenient parser It is often useful to extract specific information from generated logs, this is why Loguru provides a [`parse()`](https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.parse) method which helps to deal with logs and regexes. ```python pattern = r"(?P