diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ee29b3 --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# dcc +DCC (Dex-to-C Compiler) is method-based aot compiler that can translate DEX code to C code. + +## 安装 +以下是ubuntu 18.04 环境下的安装配置步骤,如果某些环节已经配置过,如JDK,可跳过. ++ 下载代码 +``` +git clone https://github.com/amimo/dcc.git +``` ++ 安装项目依赖 +``` +cd dcc +pip3 -r requirements.txt +wget -O tools/apktool.jar https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.0.jar +``` ++ 安装配置安卓开发环境(NDK r17+, SDK) +``` +export PATH=path/to/ndk:$PATH +``` ++ 安装JDK +``` +sudo apt-get install openjdk-8-jdk +``` + +## 测试demo ++ 修改测试demo项目local.properties,配置正确的ndk.dir,sdk.dir路径 +``` +vi tests/demo-java/local.properties +vi tests/demo-c/local.properties +``` ++ 编译demo-java +``` +cd tests/demo-java +./gradlew assembleDebug +``` ++ 将dex编译到c,生成的c代码输出到demo-c的src/main目录下 +``` +cd dcc +python3.6 dcc.py tests/demo-java/app/build/outputs/apk/debug/app-debug.apk --source-dir=tests/demo-c/app/src/main/ --no-build +``` ++ 编译c demo +``` +cd tests/demo-c +./gradlew assembleDebug +``` +如果一切顺利,"tests/demo-c/app/build/outputs/apk/debug/app-debug.apk"就是最终生成的apk,安装到手机并运行,看是否会崩溃. + +## 使用dcc加固app +dcc使用简单的黑白名单机制过滤需要编译或禁止编译的函数. +修改filter.txt,使用正则表达式配置需要处理的函数.默认编译Activity.onCreate,和测试demo中的所有函数. +``` +vi filter.txt +``` + +使用如下命令加固app.apk +``` +python3.6 dcc.py your_app.apk -o out.apk +``` +对于我们的demo-java就是 +``` +python3.6 dcc.py tests/demo-java/app/build/outputs/apk/debug/app-debug.apk -o out.apk +``` +该命令会生成两个文件out.apk和project-source.zip.其中out.apk已经使用testkey签名的加固app,可以直接安装; +project-source.zip是个jni工程,里面包含我们编译出来的c代码,解压出来后可以直接使用ndk编译. + +## 注意 ++ 这是我个人研究项目,当前还未经过大量测试,请谨慎用于线上项目! ++ 编译出来的C代码使用JNI跟Java虚拟机交互,有可能会对性能产生非常严重的影响,请谨慎选择加固函数! diff --git a/androguard/__init__.py b/androguard/__init__.py new file mode 100644 index 0000000..471688b --- /dev/null +++ b/androguard/__init__.py @@ -0,0 +1,4 @@ +# The current version of Androguard +# Please use only this variable in any scripts, +# to keep the version number the same everywhere. +__version__ = "3.3.5" diff --git a/androguard/cli/__init__.py b/androguard/cli/__init__.py new file mode 100644 index 0000000..3c127b9 --- /dev/null +++ b/androguard/cli/__init__.py @@ -0,0 +1,9 @@ +from androguard.cli.main import (androarsc_main, + androaxml_main, + androcg_main, + androgui_main, + androlyze_main, + androsign_main, + androdis_main, + export_apps_to_format, + ) diff --git a/androguard/cli/entry_points.py b/androguard/cli/entry_points.py new file mode 100755 index 0000000..07b2bea --- /dev/null +++ b/androguard/cli/entry_points.py @@ -0,0 +1,497 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Androguard is a full Python tool to play with Android files.""" + +from __future__ import print_function + +# core modules +import sys +import logging + +# 3rd party modules +import click + +# local modules +import androguard +from androguard.core.androconf import show_logging +from androguard.cli import (androarsc_main, + androaxml_main, + androcg_main, + export_apps_to_format, + androsign_main, + androlyze_main, + androgui_main, + androdis_main + ) + + +@click.group(help=__doc__) +@click.version_option(version=androguard.__version__) +@click.option("--verbose", "--debug", 'verbosity', flag_value='verbose', help="Print more") +@click.option("--quiet", 'verbosity', flag_value='quiet', help="Print less (only warnings and above)") +@click.option("--silent", 'verbosity', flag_value='silent', help="Print no log messages") +def entry_point(verbosity): + level = logging.INFO + + if verbosity == 'verbose': + level = logging.DEBUG + if verbosity == 'quiet': + level = logging.WARNING + + # If something out of this module is imported, activate console logging + if verbosity != 'silent': + show_logging(level=level) + + +@entry_point.command() +@click.option( + '--input', '-i', 'input_', + type=click.Path(exists=True), + 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 inside the APK to parse instead of AndroidManifest.xml" +) +@click.argument( + 'file_', + type=click.Path(exists=True), + # help='AndroidManifest.xml or APK to parse', + required=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: + + \b + $ 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_', + # help='resources.arsc or APK to parse', + 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', '-t', is_flag=True, + default=False, + help='List all package names and exit', +) +@click.option( + '--list-locales', '-t', is_flag=True, + default=False, + help='List all package names and exit', +) +@click.option( + '--list-types', '-t', 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: + + \b + $ androguard arsc app.apk + """ + from androguard.core import androconf + from androguard.core.bytecodes import apk + + 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_ + + ret_type = androconf.is_android(fname) + if ret_type == "APK": + a = apk.APK(fname) + arscobj = a.get_android_resources() + if not arscobj: + print("The APK does not contain a resources file!", file=sys.stderr) + sys.exit(0) + elif ret_type == "ARSC": + with open(fname, 'rb') as fp: + arscobj = apk.ARSCParser(fp.read()) + if not arscobj: + print("The resources file seems to be invalid!", file=sys.stderr) + sys.exit(1) + else: + print("Unknown file type!", file=sys.stderr) + 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( + '--output', '-o', + default="callgraph.gml", show_default=True, + help='Filename of the output file, the extension is used to decide which ' + 'format to use (default callgraph.gml)', +) +@click.option( + '--show', '-s', + default=False, + help='instead of saving the graph, print it with mathplotlib ' + '(you might not see anything!)', +) +@click.option( + '--verbose', '-v', is_flag=True, + default=False, + help='Print more output', +) +@click.option( + '--classname', + default='.*', show_default=True, + help='Regex to filter by classname', +) +@click.option( + '--methodname', + default='.*', show_default=True, + help='Regex to filter by methodname', +) +@click.option( + '--descriptor', + default='.*', show_default=True, + help='Regex to filter by descriptor', +) +@click.option( + '--accessflag', + default='.*', show_default=True, + help='Regex to filter by accessflags', +) +@click.option( + '--no-isolated/--isolated', + default=False, + help='Do not store methods which has no xrefs', +) +@click.argument( + 'APK', + # help='The APK to analyze', + nargs=1, + required=False, + type=click.Path(exists=True), +) +def cg(output, + show, + verbose, + classname, + methodname, + descriptor, + accessflag, + no_isolated, + apk): + """ + Create a call graph and export it into a graph format. + + Example: + + \b + $ androguard cg APK + """ + androcg_main(verbose=verbose, + APK=apk, + classname=classname, + methodname=methodname, + descriptor=descriptor, + accessflag=accessflag, + no_isolated=no_isolated, + show=show, + output=output) + + +@entry_point.command() +@click.option( + '--input', '-i', 'input_', + type=click.Path(exists=True), + help='APK to parse (legacy option)', +) +@click.argument( + 'file_', + type=click.Path(exists=True), + # help='APK to parse', + 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), ...', +) +@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: + + \b + $ 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', + # help='APK(s) to extract the Fingerprint of Certificates from', + nargs=-1, + required=False, + type=click.Path(exists=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, + required=False, + type=click.Path(exists=True), +) +def apkid(apks): + """Return the packageName/versionCode/versionName per APK as JSON.""" + import json + import logging + logging.getLogger("androguard.axml").setLevel(logging.ERROR) + results = dict() + for apk in apks: + results[apk] = androguard.core.bytecodes.apk.get_apkid(apk) + print(json.dumps(results, indent=2)) + + +@entry_point.command() +@click.option( + '--input_file', '-i', + type=click.Path(exists=True), +) +@click.option( + '--input_plugin', '-p', + type=click.Path(exists=True), +) +def gui(input_file, input_plugin): + """Androguard GUI""" + androgui_main(input_file, input_plugin) + + +@entry_point.command() +@click.option( + '--session', + help='Previously saved session to load instead of a file', + type=click.Path(exists=True), +) +@click.argument( + 'apk', + # help='Start the shell with the given APK. a, d, dx are available then. Loading might be slower in this case!', + default=None, + required=False, + type=click.Path(exists=True), +) +def analyze(session, apk): + """Open a IPython Shell and start reverse engineering.""" + 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") +def disassemble(offset, size, dex): + """ + Disassemble Dalvik Code with size SIZE starting from an offset + """ + androdis_main(offset, size, dex) + + +if __name__ == '__main__': + entry_point() diff --git a/androguard/cli/main.py b/androguard/cli/main.py new file mode 100644 index 0000000..ff3ab60 --- /dev/null +++ b/androguard/cli/main.py @@ -0,0 +1,522 @@ +from __future__ import print_function + +# core modules +import os +import re +import shutil +import sys + +# 3rd party modules +from lxml import etree + +# internal modules +from androguard.core import androconf +from androguard.core.bytecodes import apk +from androguard.core.bytecodes.axml import AXMLPrinter +from androguard.util import read + +from pygments import highlight +from pygments.lexers import get_lexer_by_name +from pygments.formatters.terminal import TerminalFormatter + + +def androaxml_main(inp, outp=None, resource=None): + ret_type = androconf.is_android(inp) + if ret_type == "APK": + a = apk.APK(inp) + if resource: + if resource not in a.files: + print("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(read(inp)).get_xml_obj() + else: + print("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, outp=None, package=None, typ=None, locale=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 androcg_main(verbose, + APK, + classname, + methodname, + descriptor, + accessflag, + no_isolated, + show, + output): + from androguard.core.androconf import show_logging + from androguard.core.bytecode import FormatClassToJava + from androguard.misc import AnalyzeAPK + import networkx as nx + import logging + log = logging.getLogger("androcfg") + if verbose: + show_logging(logging.INFO) + + a, d, dx = AnalyzeAPK(APK) + + entry_points = map(FormatClassToJava, + a.get_activities() + a.get_providers() + + a.get_services() + a.get_receivers()) + entry_points = list(entry_points) + + log.info("Found The following entry points by search AndroidManifest.xml: " + "{}".format(entry_points)) + + CG = dx.get_call_graph(classname, + methodname, + descriptor, + accessflag, + no_isolated, + entry_points, + ) + + write_methods = dict(gml=_write_gml, + gexf=nx.write_gexf, + gpickle=nx.write_gpickle, + graphml=nx.write_graphml, + yaml=nx.write_yaml, + net=nx.write_pajek, + ) + + if show: + plot(CG) + else: + writer = output.rsplit(".", 1)[1] + if writer in ["bz2", "gz"]: + writer = output.rsplit(".", 2)[1] + if writer not in write_methods: + print("Could not find a method to export files to {}!" + .format(writer)) + sys.exit(1) + + write_methods[writer](CG, output) + + +def plot(cg): + """ + Plot the call graph using matplotlib + For larger graphs, this should not be used, as it is very slow + and probably you can not see anything on it. + + :param cg: A networkx call graph to plot + """ + from androguard.core.analysis.analysis import ExternalMethod + import matplotlib.pyplot as plt + import networkx as nx + pos = nx.spring_layout(cg) + + internal = [] + external = [] + + for n in cg.node: + if isinstance(n, ExternalMethod): + external.append(n) + else: + internal.append(n) + + nx.draw_networkx_nodes(cg, pos=pos, node_color='r', nodelist=internal) + nx.draw_networkx_nodes(cg, pos=pos, node_color='b', nodelist=external) + nx.draw_networkx_edges(cg, pos, arrow=True) + nx.draw_networkx_labels(cg, pos=pos, + labels={x: "{} {}".format(x.get_class_name(), + x.get_name()) + for x in cg.edge}) + plt.draw() + plt.show() + + +def _write_gml(G, path): + """ + Wrapper around nx.write_gml + """ + import networkx as nx + return nx.write_gml(G, path, stringizer=str) + + +def export_apps_to_format(filename, + s, + output, + methods_filter=None, + jar=None, + decompiler_type=None, + form=None): + from androguard.misc import clean_file_name + from androguard.core.bytecodes import dvm + from androguard.core.bytecode import method2dot, method2format + from androguard.decompiler import decompiler + print("Dump information %s in %s" % (filename, output)) + + if not os.path.exists(output): + print("Create directory %s" % output) + os.makedirs(output) + else: + print("Clean directory %s" % output) + androconf.rrmdir(output) + os.makedirs(output) + + 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_methods(): + if methods_filter_expr: + msig = "%s%s%s" % (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(method.get_class_name()) + filename_class = os.path.join(output, filename_class) + create_directory(filename_class) + + print("Dump %s %s %s ..." % (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 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(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 = dvm.get_bytecodes_method(vm, vmx, method) + with open(filename + ".ag", "w") as fd: + fd.write(bytecode_buff) + print() + + +def valid_class_name(class_name): + if class_name[-1] == ";": + class_name = class_name[1:-1] + return os.path.join(*class_name.split("/")) + + +def create_directory(pathdir): + if not os.path.exists(pathdir): + os.makedirs(pathdir) + + +def androgui_main(input_file, input_plugin): + # Load pyqt5 after argument processing, so we can collect the arguments + # on a system without PyQT5. + try: + from PyQt5 import QtWidgets, QtGui + except ImportError: + print("No PyQT5 found! Exiting...", file=sys.stderr) + sys.exit(1) + try: + import pyperclip + except ImportError: + print("No pyperclip found! Exiting...", file=sys.stderr) + sys.exit(1) + + from androguard.gui.mainwindow import MainWindow + + # We need that to save huge sessions when leaving and avoid + # RuntimeError: maximum recursion depth exceeded while pickling an object + # or + # RuntimeError: maximum recursion depth exceeded in cmp + # http://stackoverflow.com/questions/2134706/hitting-maximum-recursion-depth-using-pythons-pickle-cpickle + sys.setrecursionlimit(50000) + + app = QtWidgets.QApplication(sys.argv) + + window = MainWindow(input_file=input_file, + input_plugin=input_plugin) + window.resize(1024, 768) + window.show() + + sys.exit(app.exec_()) + + +def androlyze_main(session, filename): + """ + Start an interactive shell + + :param session: Session file to load + :param filename: File to analyze, can be APK or DEX (or ODEX) + """ + from androguard.core.androconf import ANDROGUARD_VERSION, CONF + from IPython.terminal.embed import InteractiveShellEmbed + from traitlets.config import Config + from androguard.misc import init_print_colors + from androguard.session import Session, Load + from colorama import Fore + import colorama + import atexit + + # Import commonly used classes, for further usage... + from androguard.core.bytecodes.apk import APK + from androguard.core.bytecodes.dvm import DalvikVMFormat + from androguard.core.analysis.analysis import Analysis + + colorama.init() + + if session: + print("Restoring session '{}'...".format(session)) + s = CONF['SESSION'] = Load(session) + print("Successfully restored {}".format(s)) + # TODO Restore a, d, dx etc... + else: + s = CONF["SESSION"] = Session(export_ipython=True) + + if filename: + ("Loading apk {}...".format(os.path.basename(filename))) + print("Please be patient, this might take a while.") + + filetype = androconf.is_android(filename) + + print("Found the provided file is of type '{}'".format(filetype)) + + if filetype not in ['DEX', 'DEY', 'APK']: + print(Fore.RED + "This file type is not supported by androlyze for auto loading right now!" + Fore.RESET, file=sys.stderr) + print("But your file is still available:") + print(">>> filename") + print(repr(filename)) + print() + + else: + with open(filename, "rb") as fp: + raw = fp.read() + + h = s.add(apk, raw) + print("Added file to session: SHA256::{}".format(h)) + + if filetype == 'APK': + print("Loaded APK file...") + a, d, dx = s.get_objects_apk(digest=h) + + print(">>> a") + print(a) + print(">>> d") + print(d) + print(">>> dx") + print(dx) + print() + elif filetype in ['DEX', 'DEY']: + print("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(): + """Save the session on exit, if wanted""" + if not s.isOpen(): + return + + res = input("Do you want to save the session? (y/[n])?").lower() + 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 = InteractiveShellEmbed(config=cfg, banner1="{} started" + .format(_version_string)) + atexit.register(shutdown_hook) + init_print_colors() + ipshell() + + +def androsign_main(args_apk, args_hash, args_all, show): + from androguard.core.bytecodes.apk import APK + from androguard.util import get_certificate_name_string + + import hashlib + import binascii + import traceback + from colorama import Fore, Style + from asn1crypto import x509, keys + + # 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: + x509_public_key = keys.PublicKeyInfo.load(public_key) + print("PublicKey Algorithm:", x509_public_key.algorithm) + print("Bit Size:", x509_public_key.bit_size) + print("Fingerprint:", binascii.hexlify(x509_public_key.fingerprint)) + try: + print("Hash Algorithm:", x509_public_key.hash_algo) + except ValueError as ve: + # RSA pkey does not have an 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, size, dex): + from androguard.core.bytecodes import dvm + + with open(dex, "rb") as fp: + buf = fp.read() + d = dvm.DalvikVMFormat(buf) + + 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() + else: + print("Dex could not be loaded!", file=sys.stderr) diff --git a/androguard/core/__init__.py b/androguard/core/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/androguard/core/__init__.py @@ -0,0 +1 @@ + diff --git a/androguard/core/analysis/__init__.py b/androguard/core/analysis/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/androguard/core/analysis/__init__.py @@ -0,0 +1 @@ + diff --git a/androguard/core/analysis/analysis.py b/androguard/core/analysis/analysis.py new file mode 100644 index 0000000..b63a567 --- /dev/null +++ b/androguard/core/analysis/analysis.py @@ -0,0 +1,1606 @@ +from __future__ import print_function +from builtins import str +import re +import collections +import time +import warnings +from androguard.core.androconf import is_ascii_problem +from androguard.core.bytecodes import dvm +import logging +from androguard.core import bytecode +import networkx as nx + +log = logging.getLogger("androguard.analysis") + +BasicOPCODES = [] +for i in dvm.BRANCH_DVM_OPCODES: + BasicOPCODES.append(re.compile(i)) + +# Flags used in :class:`ClassAnalysis`. +REF_NEW_INSTANCE = 0 +REF_CLASS_USAGE = 1 + +ref_type = {0x22: REF_NEW_INSTANCE, 0x1c: REF_CLASS_USAGE} + + +class DVMBasicBlock: + """ + A simple basic block of a dalvik method + """ + + def __init__(self, start, vm, method, context): + 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 = "%s-BB@0x%x" % (self.method.get_name(), self.start) + self.exception_analysis = None + + self.notes = [] + + self.__cached_instructions = None + + def get_notes(self): + return self.notes + + def set_notes(self, value): + self.notes = [value] + + def add_note(self, note): + self.notes.append(note) + + def clear_notes(self): + self.notes = [] + + def get_instructions(self): + """ + Get all instructions from a basic block. + + :rtype: Return all instructions in the current basic block + """ + tmp_ins = [] + 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): + return self.nb_instructions + + def get_method(self): + return self.method + + def get_name(self): + return "%s-BB@0x%x" % (self.method.get_name(), self.start) + + def get_start(self): + return self.start + + def get_end(self): + return self.end + + def get_last(self): + return self.get_instructions()[-1] + + def get_next(self): + """ + Get next basic blocks + + :rtype: a list of the next basic blocks + """ + return self.childs + + def get_prev(self): + """ + Get previous basic blocks + + :rtype: a list of the previous basic blocks + """ + return self.fathers + + def set_fathers(self, f): + self.fathers.append(f) + + def get_last_length(self): + return self.last_length + + def set_childs(self, values): + # 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): + 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): + """ + Return the associated instruction to a specific instruction (for example a packed/sparse switch) + + :param idx: the index of the instruction + + :rtype: None or an Instruction + """ + if idx in self.special_ins: + return self.special_ins[idx] + else: + return None + + def get_exception_analysis(self): + return self.exception_analysis + + def set_exception_analysis(self, exception_analysis): + self.exception_analysis = exception_analysis + + def show(self): + print(self.get_name(), self.get_start(), self.get_end()) + + +class BasicBlocks: + """ + This class represents all basic blocks of a method + """ + + def __init__(self, _vm): + self.__vm = _vm + self.bb = [] + + def push(self, bb): + self.bb.append(bb) + + def pop(self, idx): + return self.bb.pop(idx) + + def get_basic_block(self, idx): + for i in self.bb: + if i.get_start() <= idx < i.get_end(): + return i + return None + + def get(self): + """ + :rtype: return each basic block (:class:`DVMBasicBlock` object) + """ + for i in self.bb: + yield i + + def gets(self): + """ + :rtype: a list of basic blocks (:class:`DVMBasicBlock` objects) + """ + return self.bb + + def get_basic_block_pos(self, idx): + return self.bb[idx] + + +class ExceptionAnalysis: + def __init__(self, exception, bb): + self.start = exception[0] + self.end = exception[1] + + self.exceptions = exception[2:] + + for i in self.exceptions: + i.append(bb.get_basic_block(i[1])) + + def show_buff(self): + buff = "%x:%x\n" % (self.start, self.end) + + for i in self.exceptions: + if i[2] is None: + buff += "\t(%s -> %x %s)\n" % (i[0], i[1], i[2]) + else: + buff += "\t(%s -> %x %s)\n" % (i[0], i[1], i[2].get_name()) + + return buff[:-1] + + def get(self): + d = {"start": self.start, "end": self.end, "list": []} + + for i in self.exceptions: + d["list"].append({"name": i[0], "idx": i[1], "bb": i[2].get_name()}) + + return d + + +class Exceptions: + def __init__(self, _vm): + self.__vm = _vm + self.exceptions = [] + + def add(self, exceptions, basic_blocks): + for i in exceptions: + self.exceptions.append(ExceptionAnalysis(i, basic_blocks)) + + def get_exception(self, addr_start, addr_end): + 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): + return self.exceptions + + def get(self): + for i in self.exceptions: + yield i + +may_throw_ops = { + 0x1a, # CONST_STRING + 0x1b, # CONST_STRING_JUMBO + 0x1c, # CONST_CLASS + 0x1d, # MONITOR_ENTER + 0x1e, # MONITOR_EXIT + 0x1f, # CHECK_CAST + 0x20, # INSTANCE_OF + 0x21, # ARRAY_LENGTH + 0x22, # NEW_INSTANCE + 0x23, # NEW_ARRAY + 0x24, # FILLED_NEW_ARRAY + 0x25, # FILLED_NEW_ARRAY_RANGE + 0x27, # THROW + 0x44, # AGET + 0x45, # AGET_WIDE + 0x46, # AGET_OBJECT + 0x47, # AGET_BOOLEAN + 0x48, # AGET_BYTE + 0x49, # AGET_CHAR + 0x4a, # AGET_SHORT + 0x4b, # APUT + 0x4c, # APUT_WIDE + 0x4d, # APUT_OBJECT + 0x4e, # APUT_BOOLEAN + 0x4f, # APUT_BYTE + 0x50, # APUT_CHAR + 0x51, # APUT_SHORT + 0x52, # IGET + 0x53, # IGET_WIDE + 0x54, # IGET_OBJECT + 0x55, # IGET_BOOLEAN + 0x56, # IGET_BYTE + 0x57, # IGET_CHAR + 0x58, # IGET_SHORT + 0x59, # IPUT + 0x5a, # IPUT_WIDE + 0x5b, # IPUT_OBJECT + 0x5c, # IPUT_BOOLEAN + 0x5d, # IPUT_BYTE + 0x5e, # IPUT_CHAR + 0x5f, # IPUT_SHORT + 0x60, # SGET + 0x61, # SGET_WIDE + 0x62, # SGET_OBJECT + 0x63, # SGET_BOOLEAN + 0x64, # SGET_BYTE + 0x65, # SGET_CHAR + 0x66, # SGET_SHORT + 0x67, # SPUT + 0x68, # SPUT_WIDE + 0x69, # SPUT_OBJECT + 0x6a, # SPUT_BOOLEAN + 0x6b, # SPUT_BYTE + 0x6c, # SPUT_CHAR + 0x6d, # SPUT_SHORT + 0x6e, # INVOKE_VIRTUAL + 0x6f, # INVOKE_SUPER + 0x70, # INVOKE_DIRECT + 0x71, # INVOKE_STATIC + 0x72, # INVOKE_INTERFACE + 0x74, # INVOKE_VIRTUAL_RANGE + 0x75, # INVOKE_SUPER_RANGE + 0x76, # INVOKE_DIRECT_RANGE + 0x77, # INVOKE_STATIC_RANGE + 0x78, # INVOKE_INTERFACE_RANGE + 0x93, # DIV_INT + 0x94, # REM_INT + 0x9e, # DIV_LONG + 0x9f, # REM_LONG + 0xb3, # DIV_INT_2ADDR + 0xb4, # REM_INT_2ADDR + 0xbe, # DIV_LONG_2ADDR + 0xbf, # REM_LONG_2ADDR + 0xd3, # DIV_INT_LIT16 + 0xd4, # REM_INT_LIT16 + 0xdb, # DIV_INT_LIT8 + 0xdc, # REM_INT_LIT8 +} + + +class MethodAnalysis: + def __init__(self, vm, method): + """ + This class analyses in details a method of a class/dex file + It is a wrapper around a :class:`EncodedMethod` and enhances it + by using multiple :class:`BasicBlock`. + + :type vm: a :class:`DalvikVMFormat` object + :type method: a :class:`EncodedMethod` object + """ + self.__vm = vm + self.method = method + + self.basic_blocks = BasicBlocks(self.__vm) + self.exceptions = Exceptions(self.__vm) + + self.code = self.method.get_code() + if self.code: + self._create_basic_block() + + def _has_catch_handle(self, excepts, addr_start, addr_end): + for handle in excepts: + if handle[0] >= addr_start and handle[1] <= addr_end: + return True + + elif addr_end <= handle[1] and addr_start >= handle[0]: + return True + return False + + def can_throw_exception(self, block): + for ins in block.get_instructions(): + opcode = ins.get_op_value() + if opcode in may_throw_ops: + return True + return False + + def _create_basic_block(self): + current_basic = DVMBasicBlock(0, self.__vm, self.method, self.basic_blocks) + self.basic_blocks.push(current_basic) + + bc = self.code.get_bc() + l = [] + h = {} + idx = 0 + + log.debug("Parsing exceptions") + excepts = dvm.determineException(self.__vm, self.method) + for i in excepts: + l.extend([i[0]]) + for handler in i[2:]: + l.append(handler[1]) + + log.debug("Parsing instructions") + for i in bc.get_instructions(): + for j in BasicOPCODES: + # TODO: should split THROW + if j.match(i.get_name()) is not None: + v = dvm.determineNext(i, idx, self.method) + h[idx] = v + l.extend(v) + break + else: + opcode = i.get_op_value() + if self._has_catch_handle(excepts, idx, idx + i.get_length() - 1) and opcode in may_throw_ops: + l.append(idx) + l.append(idx + i.get_length()) + + idx += i.get_length() + + log.debug("Creating basic blocks in %s" % self.method) + idx = 0 + for i in bc.get_instructions(): + # index is a destination + if idx in l: + if current_basic.get_nb_instructions() != 0: + current_basic = DVMBasicBlock(current_basic.get_end(), self.__vm, self.method, self.basic_blocks) + self.basic_blocks.push(current_basic) + + current_basic.push(i) + + # index is a branch instruction + if idx in h: + current_basic = DVMBasicBlock(current_basic.get_end(), self.__vm, self.method, self.basic_blocks) + self.basic_blocks.push(current_basic) + + idx += i.get_length() + + if current_basic.get_nb_instructions() == 0: + self.basic_blocks.pop(-1) + + log.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([]) + + log.debug("Creating exceptions") + + # Create exceptions + self.exceptions.add(excepts, self.basic_blocks) + + for i in self.basic_blocks.get(): + # setup exception by basic block + if self.can_throw_exception(i): + i.set_exception_analysis(self.exceptions.get_exception(i.start, i.end - 1)) + + def get_basic_blocks(self): + """ + :rtype: a :class:`BasicBlocks` object + """ + return self.basic_blocks + + def get_length(self): + """ + :rtype: an integer which is the length of the code + """ + return self.code.get_length() if self.code else 0 + + def get_vm(self): + return self.__vm + + def get_method(self): + return self.method + + def show(self): + """ + 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)) + bytecode.PrettyShow(self, self.basic_blocks.gets(), self.method.notes) + + def __repr__(self): + return "".format(self.method) + + +class StringAnalysis: + def __init__(self, value): + """ + 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. + """ + self.value = value + self.orig_value = value + self.xreffrom = set() + + def AddXrefFrom(self, classobj, methodobj): + self.xreffrom.add((classobj, methodobj)) + + def get_xref_from(self): + return self.xreffrom + + def set_value(self, value): + self.value = value + + def get_value(self): + return self.value + + def get_orig_value(self): + return self.orig_value + + def __str__(self): + data = "XREFto for string %s in\n" % repr(self.get_value()) + for ref_class, ref_method in self.xreffrom: + data += "%s:%s\n" % (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 MethodClassAnalysis: + def __init__(self, method): + """ + MethodClassAnalysis contains the XREFs for a given method. + + Both referneces to other methods (XREF_TO) as well as methods calling + this method (XREF_FROM) are saved. + + :param androguard.core.bytecodes.dvm.EncodedMethod method: the DVM Method object + """ + self.method = method + self.xrefto = set() + self.xreffrom = set() + + # Reserved for further use + self.apilist = None + + @property + def name(self): + """Returns the name of this method""" + return self.method.get_name() + + @property + def descriptor(self): + """Returns the type descriptor for this method""" + return self.method.get_descriptor() + + @property + def access(self): + """Returns the access flags to the method as a string""" + return self.method.get_access_flags_string() + + def AddXrefTo(self, classobj, methodobj, offset): + """ + Add a crossreference to another method + (this method calls another method) + + :param classobj: :class:`~ClassAnalysis` + :param methodobj: :class:`~androguard.core.bytecodes.dvm.EncodedMethod` + :param offset: integer where in the method the call happens + """ + self.xrefto.add((classobj, methodobj, offset)) + + def AddXrefFrom(self, classobj, methodobj, offset): + """ + Add a crossrefernece from another method + (this method is called by another method) + + :param classobj: :class:`~ClassAnalysis` + :param methodobj: :class:`~androguard.core.bytecodes.dvm.EncodedMethod` + :param offset: integer where in the method the call happens + """ + self.xreffrom.add((classobj, methodobj, offset)) + + def get_xref_from(self): + """ + Returns a list of three tuples cotaining the class, method and offset of + the call, from where this object was called. + + The list of tuples has the form: + (:class:`~ClassAnalysis`, + :class:`~androguard.core.bytecodes.dvm.EncodedMethod` or + :class:`~ExternalMethod`, int) + """ + return self.xreffrom + + def get_xref_to(self): + """ + Returns a list of three tuples cotaining the class, method and offset of + the call, which are called by this method. + + The list of tuples has the form: + (:class:`~ClassAnalysis`, + :class:`~androguard.core.bytecodes.dvm.EncodedMethod` or + :class:`~ExternalMethod`, int) + """ + return self.xrefto + + def is_external(self): + """ + Return True if the underlying methd is external + + :rtype: boolean + """ + return isinstance(self.method, ExternalMethod) + + def is_android_api(self): + """ + 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. + + :return: boolean + """ + 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 offsert! 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_method(self): + """ + Return the `EncodedMethod` object that relates to this object + :return: `dvm.EncodedMethod` + """ + return self.method + + def __str__(self): + data = "XREFto for %s\n" % self.method + for ref_class, ref_method, offset in self.xrefto: + data += "in\n" + data += "%s:%s @0x%x\n" % (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 += "%s:%s @0x%x\n" % (ref_class.get_vm_class().get_name(), ref_method, offset) + + return data + + def __repr__(self): + return "".format(self.method, + " EXTERNAL" if isinstance(self.method, ExternalMethod) else "") + + +class FieldClassAnalysis: + def __init__(self, field): + """ + FieldClassAnalysis 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. + + :param androguard.core.bytecodes.dvm.EncodedField field: `dvm.EncodedField` + """ + self.field = field + self.xrefread = set() + self.xrefwrite = set() + + @property + def name(self): + return self.field.get_name() + + def AddXrefRead(self, classobj, methodobj): + self.xrefread.add((classobj, methodobj)) + + def AddXrefWrite(self, classobj, methodobj): + self.xrefwrite.add((classobj, methodobj)) + + def get_xref_read(self): + return self.xrefread + + def get_xref_write(self): + return self.xrefwrite + + def get_field(self): + return self.field + + def __str__(self): + data = "XREFRead for %s\n" % self.field + for ref_class, ref_method in self.xrefread: + data += "in\n" + data += "%s:%s\n" % (ref_class.get_vm_class().get_name(), ref_method) + + data += "XREFWrite for %s\n" % self.field + for ref_class, ref_method in self.xrefwrite: + data += "in\n" + data += "%s:%s\n" % (ref_class.get_vm_class().get_name(), ref_method) + + return data + + def __repr__(self): + return "{}>".format(self.field.class_name, self.field.name) + + +class ExternalClass: + def __init__(self, name): + """ + The ExternalClass is used for all classes that are not defined in the + DEX file, thus are external classes. + + :param name: Name of the external class + """ + self.name = name + self.methods = {} + + def get_methods(self): + """ + Return the stored methods for this external class + :return: + """ + return self.methods.values() + + def GetMethod(self, name, descriptor): + """ + .. deprecated:: 3.1.0 + Use :meth:`get_method` instead. + + """ + warnings.warn("deprecated, use get_method instead. This function might be removed in a later release!", DeprecationWarning) + return self.get_method(name, descriptor) + + def get_method(self, name, descriptor): + """ + Get the method by name and descriptor, + or create a new one if the requested method does not exists. + + :param name: method name + :param descriptor: method descriptor, for example `'(I)V'` + :return: :class:`ExternalMethod` + """ + key = name + str(descriptor) + if key not in self.methods: + self.methods[key] = ExternalMethod(self.name, name, descriptor) + + return self.methods[key] + + def get_name(self): + """ + Returns the name of the ExternalClass object + """ + return self.name + + def __repr__(self): + return "".format(self.name) + + +class ExternalMethod: + def __init__(self, class_name, name, descriptor): + self.class_name = class_name + self.name = name + self.descriptor = descriptor + + def get_name(self): + return self.name + + def get_class_name(self): + return self.class_name + + def get_descriptor(self): + return ''.join(self.descriptor) + + def get_access_flags_string(self): + # TODO can we assume that external methods are always public? + # they can also be static... + # or constructor... + return "" + + def __str__(self): + return "%s->%s%s" % (self.class_name, self.name, ''.join(self.descriptor)) + + def __repr__(self): + return "".format(self.__str__()) + + +class ClassAnalysis: + def __init__(self, classobj): + """ + ClassAnalysis contains the XREFs from a given Class. + It is also used to wrap :class:`~androguard.core.bytecode.dvm.ClassDefItem`, which + contain the actual class content like bytecode. + + Also external classes will generate xrefs, obviously only XREF_FROM are + shown for external classes. + + :param classobj: class:`~androguard.core.bytecode.dvm.ClassDefItem` or :class:`ExternalClass` + """ + + # Automatically decide if the class is external or not + self.external = isinstance(classobj, ExternalClass) + + self.orig_class = classobj + self._inherits_methods = {} + self._methods = {} + self._fields = {} + + self.xrefto = collections.defaultdict(set) + self.xreffrom = collections.defaultdict(set) + + # Reserved for further use + self.apilist = None + + @property + def implements(self): + """ + Get a list of interfaces which are implemented by this class + + :return: a list of Interface names + """ + if self.is_external(): + return [] + + return self.orig_class.get_interfaces() + + @property + def extends(self): + """ + Return the parent class + + For external classes, this is not sure, thus we return always Object (which is the parent of all classes) + + :return: 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): + """ + Return the class name + + :return: + """ + return self.orig_class.get_name() + + def is_external(self): + """ + Tests wheather this class is an external class + + :return: True if the Class is external, False otherwise + """ + return self.external + + def is_android_api(self): + """ + 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. + + :return: boolean + """ + + # 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): + """ + Return all :class:`MethodClassAnalysis` objects of this class + """ + return list(self._methods.values()) + + def get_fields(self): + """ + Return all `FieldClassAnalysis` objects of this class + """ + return self._fields.values() + + def get_nb_methods(self): + """ + Get the number of methods in this class + """ + return len(self._methods) + + def get_method_analysis(self, method): + """ + Return the MethodClassAnalysis object for a given EncodedMethod + + :param method: :class:`EncodedMethod` + :return: :class:`MethodClassAnalysis` + """ + return self._methods.get(method) + + def get_field_analysis(self, field): + return self._fields.get(field) + + def get_fake_method(self, name, descriptor): + """ + Search for the given method name and descriptor + and return a fake (ExternalMethod) if required. + + :param name: name of the method + :param descriptor: descriptor of the method, for example `'(I I I)V'` + :return: :class:`ExternalMethod` + """ + if self.external: + # An external class can only generate the methods on demand + return self.orig_class.get_method(name, descriptor) + + # We are searching an unknown method in this class + # It could be something that the class herits + key = name + str(descriptor) + if key not in self._inherits_methods: + self._inherits_methods[key] = ExternalMethod(self.orig_class.get_name(), name, descriptor) + return self._inherits_methods[key] + + def AddFXrefRead(self, method, classobj, field): + """ + Add a Field Read to this class + + :param method: + :param classobj: + :param field: + :return: + """ + if field not in self._fields: + self._fields[field] = FieldClassAnalysis(field) + self._fields[field].AddXrefRead(classobj, method) + + def AddFXrefWrite(self, method, classobj, field): + """ + Add a Field Write to this class + + :param method: + :param classobj: + :param field: + :return: + """ + if field not in self._fields: + self._fields[field] = FieldClassAnalysis(field) + self._fields[field].AddXrefWrite(classobj, method) + + def AddMXrefTo(self, method1, classobj, method2, offset): + if method1 not in self._methods: + self._methods[method1] = MethodClassAnalysis(method1) + self._methods[method1].AddXrefTo(classobj, method2, offset) + + def AddMXrefFrom(self, method1, classobj, method2, offset): + if method1 not in self._methods: + self._methods[method1] = MethodClassAnalysis(method1) + self._methods[method1].AddXrefFrom(classobj, method2, offset) + + def AddXrefTo(self, ref_kind, classobj, methodobj, offset): + """ + 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. + + :param ref_kind: + :param classobj: :class:`ClassAnalysis` object to link + :param methodobj: + :param offset: Offset in the Methods Bytecode, where the call happens + :return: + """ + self.xrefto[classobj].add((ref_kind, methodobj, offset)) + + def AddXrefFrom(self, ref_kind, classobj, methodobj, offset): + """ + Creates a crossreference from this class. + XrefFrom means, that the current class is called by another class. + + :param ref_kind: + :param classobj: :class:`ClassAnalysis` object to link + :param methodobj: + :param offset: Offset in the methods bytecode, where the call happens + :return: + """ + self.xreffrom[classobj].add((ref_kind, methodobj, offset)) + + def get_xref_from(self): + return self.xreffrom + + def get_xref_to(self): + return self.xrefto + + def get_vm_class(self): + return self.orig_class + + def __repr__(self): + return "".format(self.orig_class.get_name(), + " EXTERNAL" if isinstance(self.orig_class, ExternalClass) else "") + + def __str__(self): + # Print only instanceiations 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: + def __init__(self, vm=None): + """ + Analysis Object + + The Analysis contains a lot of information about (multiple) DalvikVMFormat objects + Features are for example XREFs between Classes, Methods, Fields and Strings. + + Multiple DalvikVMFormat Objects can be added using the function `add` + + XREFs are created for: + * classes (`ClassAnalysis`) + * methods (`MethodClassAnalysis`) + * strings (`StringAnalyis`) + * fields (`FieldClassAnalysis`) + + :param vm: inital DalvikVMFormat object (default None) + """ + + # Contains DalvikVMFormat objects + self.vms = [] + # A dict of {classname: ClassAnalysis}, populated on add(vm) + self.classes = {} + # A dict of {string: StringAnalysis}, populated on create_xref() + self.strings = {} + # A dict of {EncodedMethod: MethodAnalysis}, populated on add(vm) + self.methods = {} + + if vm: + self.add(vm) + + def add(self, vm): + """ + Add a DalvikVMFormat to this Analysis + + :param vm: :class:`dvm.DalvikVMFormat` to add to this Analysis + """ + self.vms.append(vm) + for current_class in vm.get_classes(): + self.classes[current_class.get_name()] = ClassAnalysis(current_class) + + for method in vm.get_methods(): + self.methods[method] = MethodAnalysis(vm, method) + + def _get_all_classes(self): + """ + Returns all Class objects of all VMs in this Analysis + Used by create_xref(). + """ + for vm in self.vms: + for current_class in vm.get_classes(): + yield current_class + + def create_xref(self): + """ + 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, the + crossreferences might be wrong! + """ + log.debug("Creating Crossreferences (XREF)") + tic = time.time() + + # TODO on concurrent runs, we probably need to clean up first, + # or check that we do not write garbage. + + # TODO multiprocessing + for c in self._get_all_classes(): + self._create_xref(c) + + log.info("End of creating cross references (XREF)") + log.info("run time: {:0d}min {:02d}s".format(*divmod(int(time.time() - tic), 60))) + + def _create_xref(self, current_class): + """ + Create the xref for `current_class` + + There are four steps involved in getting the xrefs: + * Xrefs for classes + * 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: :class:`dvm.ClassDefItem` + """ + cur_cls_name = current_class.get_name() + + log.debug("Creating XREF/DREF for %s" % cur_cls_name) + for current_method in current_class.get_methods(): + log.debug("Creating XREF for %s" % current_method) + + code = current_method.get_code() + if code is None: + continue + + off = 0 + for instruction in code.get_bc().get_instructions(): + 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) + + # Internal xref related to class manipulation + # FIXME should the xref really only set if the class is in self.classes? If an external class is added later, it will be added too! + # See https://github.com/androguard/androguard/blob/d720ebf2a9c8e2a28484f1c81fdddbc57e04c157/androguard/core/analysis/analysis.py#L806 + # Before the check would go for internal classes only! + if type_info != cur_cls_name: + if type_info not in self.classes: + # Create new external class + self.classes[type_info] = ClassAnalysis(ExternalClass(type_info)) + + cur_cls = self.classes[cur_cls_name] + oth_cls = self.classes[type_info] + + cur_cls.AddXrefTo(ref_type[op_value], oth_cls, current_method, off) + oth_cls.AddXrefFrom(ref_type[op_value], cur_cls, current_method, 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 method_info: + class_info = method_info[0] + + for vm in self.vms: + method_item = vm.get_method_descriptor(method_info[0], method_info[1], ''.join(method_info[2])) + if method_item: + break + + if not method_item: + if method_info[0] not in self.classes: + # Seems to be an external class, create it first + # Beware: if not all DEX files are loaded at the time create_xref runs + # you will run into problems! + self.classes[method_info[0]] = ClassAnalysis(ExternalClass(method_info[0])) + method_item = self.classes[method_info[0]].get_fake_method(method_info[1], method_info[2]) + + self.classes[cur_cls_name].AddMXrefTo(current_method, self.classes[class_info], method_item, off) + self.classes[class_info].AddMXrefFrom(method_item, self.classes[cur_cls_name], current_method, off) + + # Internal xref related to class manipulation + if class_info in self.classes and class_info != cur_cls_name: + self.classes[cur_cls_name].AddXrefTo(REF_CLASS_USAGE, self.classes[class_info], method_item, off) + self.classes[class_info].AddXrefFrom(REF_CLASS_USAGE, self.classes[cur_cls_name], current_method, 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) + + # TODO: The bytecode offset is stored everywhere but not here? + # TODO there is no XrefTo in the method for a string + self.strings[string_value].AddXrefFrom(self.classes[cur_cls_name], current_method) + + # TODO maybe we should add a step 3a here and check for all const fields. You can then xref for integers etc! + + # 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_field_descriptor(field_info[0], field_info[2], field_info[1]) + # TODO: The bytecode offset is stored everywhere but not here? + if field_item: + if (0x52 <= op_value <= 0x58) or (0x60 <= op_value <= 0x66): + # read access to a field + self.classes[cur_cls_name].AddFXrefRead(current_method, self.classes[cur_cls_name], field_item) + else: + # write access to a field + self.classes[cur_cls_name].AddFXrefWrite(current_method, self.classes[cur_cls_name], field_item) + + off += instruction.get_length() + + def get_method(self, method): + """ + Get the :class:`MethodAnalysis` object for a given :class:`EncodedMethod`. + This Analysis object is used to enhance EncodedMethods. + + :param method: :class:`EncodedMethod` to search for + :return: :class:`MethodAnalysis` object for the given method, or None if method was not found + """ + if method in self.methods: + return self.methods[method] + else: + return None + + def get_method_by_name(self, class_name, method_name, method_descriptor): + """ + Search for a :class:`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 + :return: :class:`EncodedMethod` or None if method was not found + """ + if class_name in self.classes: + for method in self.classes[class_name].get_vm_class().get_methods(): + if method.get_name() == method_name and method.get_descriptor() == method_descriptor: + return method + return None + + def get_method_analysis(self, method): + """ + Returns the crossreferencing object for a given Method. + + Beware: the similar named function :meth:`~get_method()` will return + a :class:`MethodAnalysis` object, while this function returns a :class:`MethodClassAnalysis` object! + + This Method will only work after a run of :meth:`~create_xref()` + + :param method: :class:`EncodedMethod` + :return: :class:`MethodClassAnalysis` for the given method or None, if method was not found + """ + class_analysis = self.get_class_analysis(method.get_class_name()) + if class_analysis: + return class_analysis.get_method_analysis(method) + return None + + def get_method_analysis_by_name(self, class_name, method_name, method_descriptor): + """ + Returns the crossreferencing object for a given method. + + This function is similar to :meth:`~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'` + :return: :class:`MethodClassAnalysis` + """ + method = self.get_method_by_name(class_name, method_name, method_descriptor) + if method: + return self.get_method_analysis(method) + return None + + def get_field_analysis(self, field): + """ + Get the FieldAnalysis for a given fieldname + + :param field: TODO + :return: :class:`FieldClassAnalysis` + """ + 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): + """ + Checks if a given class name is part of this Analysis. + + :param class_name: classname like 'Ljava/lang/Object;' (including L and ;) + :return: True if class was found, False otherwise + """ + return class_name in self.classes + + def get_class_analysis(self, class_name): + """ + Returns the :class:`ClassAnalysis` object for a given classname. + + :param class_name: classname like 'Ljava/lang/Object;' (including L and ;) + :return: :class:`ClassAnalysis` + """ + return self.classes.get(class_name) + + def get_external_classes(self): + """ + Returns all external classes, that means all classes that are not + defined in the given set of `DalvikVMObjects`. + + :rtype: generator of `ClassAnalysis` + """ + for cls in self.classes.values(): + if cls.is_external(): + yield cls + + def get_internal_classes(self): + """ + Returns all external classes, that means all classes that are + defined in the given set of :class:`~DalvikVMFormat`. + + :rtype: generator of :class:`~ClassAnalysis` + """ + for cls in self.classes.values(): + if not cls.is_external(): + yield cls + + def get_strings_analysis(self): + """ + Returns a dictionary of strings and their corresponding :class:`StringAnalysis` + + :return: a dictionary + """ + return self.strings + + def get_strings(self): + """ + Returns a list of :class:`StringAnalysis` objects + + :rtype: list of :class:`StringAnalysis` + """ + return self.strings.values() + + def get_classes(self): + """ + Returns a list of :class:`ClassAnalysis` objects + + Returns both internal and external classes (if any) + + :rtype: list of :class:`ClassAnalysis` + """ + return self.classes.values() + + def get_methods(self): + """ + Returns a list of `MethodClassAnalysis` objects + + """ + for c in self.classes.values(): + for m in c.get_methods(): + yield m + + def get_fields(self): + """ + Returns a list of `FieldClassAnalysis` objects + + """ + for c in self.classes.values(): + for f in c.get_fields(): + yield f + + def find_classes(self, name=".*", no_external=False): + """ + Find classes by name, using regular expression + This method will return all 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) + :rtype: generator of `ClassAnalysis` + """ + 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=".*", methodname=".*", descriptor=".*", + accessflags=".*", no_external=False): + """ + Find a method by name using regular expression. + This method will return all MethodClassAnalysis 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) + :rtype: generator of `MethodClassAnalysis` + """ + 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... + 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=".*"): + """ + Find strings by regex + + :param string: regular expression for the string to search for + :rtype: generator of `StringAnalysis` + """ + for s, sa in self.strings.items(): + if re.match(string, s): + yield sa + + def find_fields(self, classname=".*", fieldname=".*", fieldtype=".*", + accessflags=".*"): + """ + 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 + :rtype: generator of `FieldClassAnalysis` + """ + 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.strings)) + + def get_call_graph(self, classname=".*", methodname=".*", descriptor=".*", + accessflags=".*", no_isolated=False, entry_points=[]): + """ + Generate a directed graph based on the methods found by the filters applied. + The filters are the same as in + :meth:`~androguard.core.analaysis.analaysis.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 fieldname: regular expression of the fieldname (default: ".*") + :param fieldtype: regular expression of the fieldtype (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 + + :rtype: DiGraph + """ + + def _add_node(G, method, _entry_points): + """ + Wrapper to add methods to a graph + """ + if method not in G.node: + 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) + + 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() + log.info("Found Method --> {}".format(orig_method)) + + if no_isolated and len(m.get_xref_to()) == 0: + log.info("Skipped {}, because if has no xrefs".format(orig_method)) + continue + + _add_node(CG, orig_method, entry_points) + + for other_class, callee, offset in m.get_xref_to(): + _add_node(CG, callee, 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): + CG.add_edge(orig_method, callee) + + return CG + + def create_ipython_exports(self): + """ + .. 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 :code:`dx.CLASS_`, as each class is added via this attribute name. + Each class will have all methods attached to it via :code:`dx.CLASS_Foobar.METHOD_`. + Fields have a similar syntax: :code:`dx.CLASS_Foobar.FIELD_`. + + As Strings can contain nearly anything, use :meth:`find_strings` instead. + + * Each `CLASS_` item will return a :class:`~ClassAnalysis` + * Each `METHOD_` item will return a :class:`~MethodClassAnalysis` + * Each `FIELD_` item will return a :class:`~FieldClassAnalysis` + """ + # 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): + log.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): + log.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): + log.warning("already existing field: {} at class {}".format(mname, name)) + setattr(cls, mname, field) + + +def is_ascii_obfuscation(vm): + """ + Tests if any class inside a DalvikVMObject + uses ASCII Obfuscation (e.g. UTF-8 Chars in Classnames) + + :param vm: `DalvikVMObject` + :return: 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 diff --git a/androguard/core/analysis/auto.py b/androguard/core/analysis/auto.py new file mode 100644 index 0000000..fa2be5a --- /dev/null +++ b/androguard/core/analysis/auto.py @@ -0,0 +1,451 @@ +from builtins import range +import os +import queue +import threading +import time +import zlib +import multiprocessing +import logging + +from androguard.core import androconf +from androguard.core.bytecodes import apk, dvm, axml +from androguard.core.analysis import analysis +from androguard.util import read + +l = logging.getLogger("androguard.auto") + + +class AndroAuto: + """ + The main class which analyse automatically android apps by calling methods + from a specific object + + Automatic analysis requires two objects to be created: + + 1) a Logger, found at key `log` in the settings + 2) an Analysis runner, found at key `my` in the settings + + Both are passed to :class:`AndroAuto` via a dictionary. + The setting dict understands the following keys: + + * `my`: The Analysis runner (required) + * `log`: The Logger + * `max_fetcher`: Maximum number of concurrent threads + + :class:`DefaultAndroLog` can be used as a baseclass for the Logger, while + :class:`DefaultAndroAnalysis` can be used a baseclass for the Analysis. + There is also :class:`DirectoryAndroAnalysis` which implements a `fetcher` + which recursively reads a directory for files and can be used a baseclass as + well. + + example:: + + from androguard.core.analysis import auto + + class AndroTest(auto.DirectoryAndroAnalysis): + # This is the Test Runner + def analysis_app(self, log, apkobj, dexobj, analysisobj): + # Just print all objects to stdout + print(log.id_file, log.filename, apkobj, dexobj, analysisobj) + + settings = { + # The directory `some/directory` should contain some APK files + "my": AndroTest('some/directory'), + # Use the default Logger + "log": auto.DefaultAndroLog, + # Use maximum of 2 threads + "max_fetcher": 2, + } + + aa = auto.AndroAuto(settings) + aa.go() + + :param settings: the settings of the analysis + :type settings: dict + """ + + def __init__(self, settings): + if not "my" in settings: + raise ValueError("'my' object not found in settings!") + + if not "log" in settings: + raise ValueError("'log' object not found in settings!") + + if not "max_fetcher" in settings: + settings["max_fetcher"] = multiprocessing.cpu_count() + l.warning("No maximum number of threads found, setting MAX_CPU: {}".format(settings["max_fetcher"])) + + self.settings = settings + + def dump(self): + """ + Dump the analysis + + Calls `dump()` on the Analysis object + """ + self.settings["my"].dump() + + def dump_file(self, filename): + """ + Dump the analysis into a file + + Calls `dump_file(filename)` on the Analysis object + """ + self.settings["my"].dump_file(filename) + + def go(self): + """ + Launch the analysis. + + this will start a total of `max_fetcher` threads. + """ + myandro = self.settings["my"] + + def worker(idx, q): + """ + Worker Thread + """ + l.debug("Running worker-%d" % idx) + + while True: + a, d, dx, axmlobj, arscobj = None, None, None, None, None + try: + filename, fileraw = q.get() + id_file = zlib.adler32(fileraw) + + l.debug("(worker-%d) get %s %d" % (idx, filename, id_file)) + + # FIXME: If the try/catch crashes before this line, there + # will be no logf to put into finish. + logf = self.settings["log"](id_file, filename) + + is_analysis_dex, is_analysis_adex = True, True + l.debug("(worker-%d) filtering file %d" % (idx, id_file)) + # TODO: This information should probably also go into the logf? + filter_file_ret, filter_file_type = myandro.filter_file(logf, fileraw) + + if filter_file_ret: + l.debug("(worker-%d) analysis %s" % (id_file, filter_file_type)) + + if filter_file_type == "APK": + a = myandro.create_apk(logf, fileraw) + is_analysis_dex = myandro.analysis_apk(logf, a) + # TODO: Support multidex here + fileraw = a.get_dex() + filter_file_type = androconf.is_android_raw(fileraw) + + elif filter_file_type == "AXML": + axmlobj = myandro.create_axml(logf, fileraw) + # TODO: the return value of analysis_axml is not checked + myandro.analysis_axml(logf, axmlobj) + + elif filter_file_type == "ARSC": + arscobj = myandro.create_arsc(logf, fileraw) + # TODO: the return value of analysis_arsc is not checked + myandro.analysis_arsc(logf, arscobj) + + if is_analysis_dex and filter_file_type == "DEX": + d = myandro.create_dex(logf, fileraw) + is_analysis_adex = myandro.analysis_dex(logf, d) + + elif is_analysis_dex and filter_file_type == "DEY": + d = myandro.create_dey(logf, fileraw) + is_analysis_adex = myandro.analysis_dey(logf, d) + + if is_analysis_adex and d: + # TODO: Support multidex here + dx = myandro.create_adex(logf, d) + # TODO: The return value of analysis_adex is not checked + myandro.analysis_adex(logf, dx) + + # TODO: this is called also if AXML or ARSC is set... + myandro.analysis_app(logf, a, d, dx) + myandro.finish(logf) + + except Exception as why: + myandro.crash(logf, why) + # FIXME: finish is called here in any case of an exception + # but is only called if filter_file_ret is true above. + myandro.finish(logf) + + del a, d, dx, axmlobj, arscobj + q.task_done() + + q = queue.Queue(self.settings["max_fetcher"]) + + for i in range(self.settings["max_fetcher"]): + t = threading.Thread(target=worker, args=[i, q]) + t.daemon = True + t.start() + + # FIXME: Busy waiting with sleep... + terminated = True + while terminated: + terminated = myandro.fetcher(q) + + try: + if terminated: + time.sleep(10) + except KeyboardInterrupt: + terminated = False + + q.join() + + +class DefaultAndroAnalysis: + """ + This class can be used as a template in order to analyse apps + + The order of methods called in this class is the following: + + * :meth:`fetcher` is called to get files + * :meth:`filter_file` is called to get the filetype + * :meth:`create_apk` or :meth:`create_axml` or :meth:`create_arsc` and + :meth:`create_dex` or :meth:`create_dey` depending on the filetype + * :meth:`analysis_apk` or :meth:`analysis_axml` or :meth:`analysis_arsc` and + :meth:`analysis_dex` or :meth:`analysis_dey` depending on the filetype + * :meth:`create_adex` if at least one dex was found + * :meth:`analysis_app` with all the gathered objects so far + * :meth:`finish` is called in any case after the analysis + + :meth:`crash` can be called during analysis if any Exception happens. + """ + + def fetcher(self, q): + """ + This method is called to fetch a new app in order to analyse it. The queue + must be fill with the following format: (filename, raw) + + must return False if the queue is filled, thus all files are read. + + :param q: the Queue to put new app + """ + return False + + def filter_file(self, log, fileraw): + """ + This method is called in order to filer a specific app + + :param log: an object which corresponds to a unique app + :param bytes fileraw: the raw file as bytes + :rtype: a tuple with 2 elements, the return value (boolean) if it is necessary to + continue the analysis and the file type + """ + file_type = androconf.is_android_raw(fileraw) + if file_type in ["APK", "DEX", "DEY", "AXML", "ARSC"]: + return True, file_type + return False, None + + def create_axml(self, log, fileraw): + """ + This method is called in order to create a new AXML object + + :param log: an object which corresponds to a unique app + :param fileraw: the raw axml (a string) + :rtype: an :class:`~androguard.core.bytecodes.axml.AXMLPrinter` object + """ + return axml.AXMLPrinter(fileraw) + + def create_arsc(self, log, fileraw): + """ + This method is called in order to create a new ARSC object + + :param log: an object which corresponds to a unique app + :param fileraw: the raw arsc (a string) + + :rtype: an :class:`~androguard.core.bytecodes.axml.ARSCParser` object + """ + return axml.ARSCParser(fileraw) + + def create_apk(self, log, fileraw): + """ + This method is called in order to create a new APK object + + :param log: an object which corresponds to a unique app + :param fileraw: the raw apk (a string) + + :rtype: an :class:`~androguard.core.bytecodes.apk.APK` object + """ + return apk.APK(fileraw, raw=True) + + def create_dex(self, log, dexraw): + """ + This method is called in order to create a DalvikVMFormat object + + :param log: an object which corresponds to a unique app + :param dexraw: the raw classes.dex (a string) + + :rtype: a :class:`~androguard.core.bytecodes.dvm.DalvikVMFormat` object + """ + return dvm.DalvikVMFormat(dexraw) + + def create_dey(self, log, dexraw): + """ + This method is called in order to create a DalvikOdexVMFormat object + + :param log: an object which corresponds to a unique app + :param dexraw: the raw odex file (a string) + + :rtype: a :class:`~androguard.core.bytecodes.dvm.DalvikOdexVMFormat` object + """ + return dvm.DalvikOdexVMFormat(dexraw) + + def create_adex(self, log, dexobj): + """ + This method is called in order to create an Analysis object + + :param log: an object which corresponds to a unique app + :param androguard.core.bytecodes.dvm.DalvikVMFormat dexobj: a :class:`DalvikVMFormat` object + + :rytpe: a :class:`~androguard.core.analysis.analysis.Analysis` object + """ + vm_analysis = analysis.Analysis(dexobj) + vm_analysis.create_xref() + return vm_analysis + + def analysis_axml(self, log, axmlobj): + """ + This method is called in order to know if the analysis must continue + + :param log: an object which corresponds to a unique app + :param androguard.core.bytecodes.axml.AXMLPrinter axmlobj: a :class:`AXMLPrinter` object + + :returns: True if the analysis should continue afterwards + :rtype: bool + """ + return True + + def analysis_arsc(self, log, arscobj): + """ + This method is called in order to know if the analysis must continue + + :param log: an object which corresponds to a unique app + :param androguard.core.bytecodes.axml.ARSCParser arscobj: a :class:`ARSCParser` object + + :returns: True if the analysis should continue afterwards + :rtype: bool + """ + return True + + def analysis_apk(self, log, apkobj): + """ + This method is called in order to know if the analysis must continue + + :param log: an object which corresponds to a unique app + :param androguard.core.bytecodes.apk.APK apkobj: a :class:`APK` object + + :returns: True if a DEX file should be analyzed as well + :rtype: bool + """ + return True + + def analysis_dex(self, log, dexobj): + """ + This method is called in order to know if the analysis must continue + + :param log: an object which corresponds to a unique app + :param androguard.core.bytecodes.dvm.DalvikVMFormat dexobj: a :class:`DalvikVMFormat` object + + :returns: True if the analysis should continue with an analysis.Analysis + :rtype: bool + """ + return True + + def analysis_dey(self, log, deyobj): + """ + This method is called in order to know if the analysis must continue + + :param log: an object which corresponds to a unique app + :param androguard.core.bytecodes.dvm.DalvikOdexVMFormat deyobj: a :class:`DalvikOdexVMFormat` object + + :returns: True if the analysis should continue with an analysis.Analysis + :rtype: bool + """ + return True + + def analysis_adex(self, log, adexobj): + """ + This method is called in order to know if the analysis must continue + + :param log: an object which corresponds to a unique app + :param androguard.core.analysis.analysis.Analysis adexobj: a :class:`Analysis` object + + :rtype: a boolean + """ + return True + + def analysis_app(self, log, apkobj, dexobj, adexobj): + """ + This method is called if you wish to analyse the final app + + :param log: an object which corresponds to a unique app + :param androguard.core.bytecodes.apk.APK apkobj: a :class:`APK` object + :param androguard.core.bytecodes.dvm.DalvikVMFormat dexobj: a :class:`DalvikVMFormat` object + :param androguard.core.analysis.analysis.Analysis adexobj: a :class:`Analysis` object + """ + pass + + def finish(self, log): + """ + This method is called before the end of the analysis + + :param log: an object which corresponds to an unique app + """ + pass + + def crash(self, log, why): + """ + This method is called if a crash happens + + :param log: an object which corresponds to an unique app + :param why: the exception + """ + pass + + def dump(self): + """ + This method is called to dump the result + """ + pass + + def dump_file(self, filename): + """ + This method is called to dump the result in a file + + :param filename: the filename to dump the result + """ + pass + + +class DirectoryAndroAnalysis(DefaultAndroAnalysis): + """ + A simple class example to analyse a whole directory with many APKs in it + """ + + def __init__(self, directory): + self.directory = directory + + def fetcher(self, q): + for root, _, files in os.walk(self.directory, followlinks=True): + for f in files: + real_filename = os.path.join(root, f) + q.put((real_filename, read(real_filename))) + return False + + +class DefaultAndroLog: + """ + A base class for the Androguard Auto Logger. + + The Logger contains two attributes of the analyzed File: :py:attr:`filename` + and :py:attr:`id_file`, which is the Adler32 Checksum of the file. + + The Logger can be extended to contain more attributes. + """ + def __init__(self, id_file, filename): + self.id_file = id_file + self.filename = filename + + def __str__(self): + return "".format(self.id_file, self.filename) + diff --git a/androguard/core/analysis/tags.py b/androguard/core/analysis/tags.py new file mode 100644 index 0000000..a1e6cd5 --- /dev/null +++ b/androguard/core/analysis/tags.py @@ -0,0 +1,109 @@ +import re + + +class Enum: + def __init__(self, names): + self.names = names + for value, name in enumerate(self.names): + setattr(self, name.upper(), value) + + def tuples(self): + return tuple(enumerate(self.names)) + + +TAG_ANDROID = Enum( + ['ANDROID', 'TELEPHONY', 'SMS', 'SMSMESSAGE', 'ACCESSIBILITYSERVICE', + 'ACCOUNTS', 'ANIMATION', 'APP', 'BLUETOOTH', 'CONTENT', 'DATABASE', + 'DEBUG', 'DRM', 'GESTURE', 'GRAPHICS', 'HARDWARE', 'INPUTMETHODSERVICE', + 'LOCATION', 'MEDIA', 'MTP', 'NET', 'NFC', 'OPENGL', 'OS', 'PREFERENCE', + 'PROVIDER', 'RENDERSCRIPT', 'SAX', 'SECURITY', 'SERVICE', 'SPEECH', + 'SUPPORT', 'TEST', 'TEXT', 'UTIL', 'VIEW', 'WEBKIT', 'WIDGET', + 'DALVIK_BYTECODE', 'DALVIK_SYSTEM', 'JAVA_REFLECTION']) + +TAG_REVERSE_ANDROID = dict((i[0], i[1]) for i in TAG_ANDROID.tuples()) + +TAGS_ANDROID = { + TAG_ANDROID.ANDROID: [0, "Landroid"], + TAG_ANDROID.TELEPHONY: [0, "Landroid/telephony"], + TAG_ANDROID.SMS: [0, "Landroid/telephony/SmsManager"], + TAG_ANDROID.SMSMESSAGE: [0, "Landroid/telephony/SmsMessage"], + TAG_ANDROID.DEBUG: [0, "Landroid/os/Debug"], + TAG_ANDROID.ACCESSIBILITYSERVICE: [0, "Landroid/accessibilityservice"], + TAG_ANDROID.ACCOUNTS: [0, "Landroid/accounts"], + TAG_ANDROID.ANIMATION: [0, "Landroid/animation"], + TAG_ANDROID.APP: [0, "Landroid/app"], + TAG_ANDROID.BLUETOOTH: [0, "Landroid/bluetooth"], + TAG_ANDROID.CONTENT: [0, "Landroid/content"], + TAG_ANDROID.DATABASE: [0, "Landroid/database"], + TAG_ANDROID.DRM: [0, "Landroid/drm"], + TAG_ANDROID.GESTURE: [0, "Landroid/gesture"], + TAG_ANDROID.GRAPHICS: [0, "Landroid/graphics"], + TAG_ANDROID.HARDWARE: [0, "Landroid/hardware"], + TAG_ANDROID.INPUTMETHODSERVICE: [0, "Landroid/inputmethodservice"], + TAG_ANDROID.LOCATION: [0, "Landroid/location"], + TAG_ANDROID.MEDIA: [0, "Landroid/media"], + TAG_ANDROID.MTP: [0, "Landroid/mtp"], + TAG_ANDROID.NET: [0, "Landroid/net"], + TAG_ANDROID.NFC: [0, "Landroid/nfc"], + TAG_ANDROID.OPENGL: [0, "Landroid/opengl"], + TAG_ANDROID.OS: [0, "Landroid/os"], + TAG_ANDROID.PREFERENCE: [0, "Landroid/preference"], + TAG_ANDROID.PROVIDER: [0, "Landroid/provider"], + TAG_ANDROID.RENDERSCRIPT: [0, "Landroid/renderscript"], + TAG_ANDROID.SAX: [0, "Landroid/sax"], + TAG_ANDROID.SECURITY: [0, "Landroid/security"], + TAG_ANDROID.SERVICE: [0, "Landroid/service"], + TAG_ANDROID.SPEECH: [0, "Landroid/speech"], + TAG_ANDROID.SUPPORT: [0, "Landroid/support"], + TAG_ANDROID.TEST: [0, "Landroid/test"], + TAG_ANDROID.TEXT: [0, "Landroid/text"], + TAG_ANDROID.UTIL: [0, "Landroid/util"], + TAG_ANDROID.VIEW: [0, "Landroid/view"], + TAG_ANDROID.WEBKIT: [0, "Landroid/webkit"], + TAG_ANDROID.WIDGET: [0, "Landroid/widget"], + TAG_ANDROID.DALVIK_BYTECODE: [0, "Ldalvik/bytecode"], + TAG_ANDROID.DALVIK_SYSTEM: [0, "Ldalvik/system"], + TAG_ANDROID.JAVA_REFLECTION: [0, "Ljava/lang/reflect"], +} + + +class Tags: + """ + Handle specific tags + + :param patterns: + :params reverse: + """ + + def __init__(self, patterns=TAGS_ANDROID, reverse=TAG_REVERSE_ANDROID): + self.tags = set() + + self.patterns = patterns + self.reverse = TAG_REVERSE_ANDROID + + for i in self.patterns: + self.patterns[i][1] = re.compile(self.patterns[i][1]) + + def emit(self, method): + for i in self.patterns: + if self.patterns[i][0] == 0: + if self.patterns[i][1].search(method.get_class()) is not None: + self.tags.add(i) + + def emit_by_classname(self, classname): + for i in self.patterns: + if self.patterns[i][0] == 0: + if self.patterns[i][1].search(classname) is not None: + self.tags.add(i) + + def get_list(self): + return [self.reverse[i] for i in self.tags] + + def __contains__(self, key): + return key in self.tags + + def __str__(self): + return str([self.reverse[i] for i in self.tags]) + + def empty(self): + return self.tags == set() diff --git a/androguard/core/androconf.py b/androguard/core/androconf.py new file mode 100644 index 0000000..e10fa8d --- /dev/null +++ b/androguard/core/androconf.py @@ -0,0 +1,378 @@ +import sys +import os +import logging +import tempfile + +from androguard import __version__ +from androguard.core.api_specific_resources import load_permission_mappings, load_permissions +ANDROGUARD_VERSION = __version__ + +log = logging.getLogger("androguard.default") + + +class InvalidResourceError(Exception): + """ + Invalid Resource Erorr is thrown by load_api_specific_resource_module + """ + pass + + +def is_ascii_problem(s): + """ + Test if a string contains other chars than ASCII + + :param s: a string to test + :return: True if string contains other chars than ASCII, False otherwise + """ + try: + s.encode("ascii") + return False + except (UnicodeEncodeError, UnicodeDecodeError): + return True + + +class Color(object): + Normal = "\033[0m" + Black = "\033[30m" + Red = "\033[31m" + Green = "\033[32m" + Yellow = "\033[33m" + Blue = "\033[34m" + Purple = "\033[35m" + Cyan = "\033[36m" + Grey = "\033[37m" + Bold = "\033[1m" + + +default_conf = { + ## Configuration for executables used by androguard + # Assume the binary is in $PATH, otherwise give full path + "BIN_JADX": "jadx", + # Dex2jar binary + "BIN_DEX2JAR": "dex2jar.sh", + + # TODO Use apksigner instead + "BIN_JARSIGNER": "jarsigner", + + "BIN_DED": "ded.sh", # TO BE REMOVED + "BIN_JAD": "jad", # TO BE REMOVED + "BIN_WINEJAD": "jad.exe", # TO BE REMOVED + "BIN_FERNFLOWER": "fernflower.jar", # TO BE REMOVED + "OPTIONS_FERNFLOWER": {"dgs": '1', # TO BE REMOVED + "asc": '1'}, + + ## 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, + + # Recode strings when getting them from ClassManager + # FIXME: Should be not needed anymore? + "RECODE_ASCII_STRING": False, + # Optional Function which can recode a string + "RECODE_ASCII_STRING_METH": None, + + ## Color output configuration + "COLORS": { + "OFFSET": Color.Yellow, + "OFFSET_ADDR": Color.Green, + "INSTRUCTION_NAME": Color.Yellow, + "BRANCH_FALSE": Color.Red, + "BRANCH_TRUE": Color.Green, + "BRANCH": Color.Blue, + "EXCEPTION": Color.Cyan, + "BB": Color.Purple, + "NOTE": Color.Red, + "NORMAL": Color.Normal, + "OUTPUT": { + "normal": Color.Normal, + "registers": Color.Normal, + "literal": Color.Green, + "offset": Color.Purple, + "raw": Color.Red, + "string": Color.Red, + "meth": Color.Cyan, + "type": Color.Blue, + "field": Color.Green, + }, + }, +} + + +class Configuration: + instance = None + + def __init__(self): + """ + 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 default_colors(obj): + CONF["COLORS"]["OFFSET"] = obj.Yellow + CONF["COLORS"]["OFFSET_ADDR"] = obj.Green + CONF["COLORS"]["INSTRUCTION_NAME"] = obj.Yellow + CONF["COLORS"]["BRANCH_FALSE"] = obj.Red + CONF["COLORS"]["BRANCH_TRUE"] = obj.Green + CONF["COLORS"]["BRANCH"] = obj.Blue + CONF["COLORS"]["EXCEPTION"] = obj.Cyan + CONF["COLORS"]["BB"] = obj.Purple + CONF["COLORS"]["NOTE"] = obj.Red + CONF["COLORS"]["NORMAL"] = obj.Normal + + CONF["COLORS"]["OUTPUT"]["normal"] = obj.Normal + CONF["COLORS"]["OUTPUT"]["registers"] = obj.Normal + CONF["COLORS"]["OUTPUT"]["literal"] = obj.Green + CONF["COLORS"]["OUTPUT"]["offset"] = obj.Purple + CONF["COLORS"]["OUTPUT"]["raw"] = obj.Red + CONF["COLORS"]["OUTPUT"]["string"] = obj.Red + CONF["COLORS"]["OUTPUT"]["meth"] = obj.Cyan + CONF["COLORS"]["OUTPUT"]["type"] = obj.Blue + CONF["COLORS"]["OUTPUT"]["field"] = obj.Green + + +def disable_colors(): + """ Disable colors from the output (color = normal)""" + for i in CONF["COLORS"]: + if isinstance(CONF["COLORS"][i], dict): + for j in CONF["COLORS"][i]: + CONF["COLORS"][i][j] = Color.normal + else: + CONF["COLORS"][i] = Color.normal + + +def remove_colors(): + """ Remove colors from the output (no escape sequences)""" + for i in CONF["COLORS"]: + if isinstance(CONF["COLORS"][i], dict): + for j in CONF["COLORS"][i]: + CONF["COLORS"][i][j] = "" + else: + CONF["COLORS"][i] = "" + + +def enable_colors(colors): + for i in colors: + CONF["COLORS"][i] = colors[i] + + +def save_colors(): + c = {} + for i in CONF["COLORS"]: + if isinstance(CONF["COLORS"][i], dict): + c[i] = {} + for j in CONF["COLORS"][i]: + c[i][j] = CONF["COLORS"][i][j] + else: + c[i] = CONF["COLORS"][i] + return c + + +def is_android(filename): + """ + 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): + """ + Returns a string that describes the type of file, for common Android + specific formats + """ + 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" + 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 show_logging(level=logging.INFO): + """ + enable log messages on stdout + + We will catch all messages here! From all loggers... + """ + logger = logging.getLogger() + + h = logging.StreamHandler(stream=sys.stderr) + h.setFormatter(logging.Formatter(fmt="[%(levelname)-8s] %(name)s: %(message)s")) + + logger.addHandler(h) + logger.setLevel(level) + + +def set_options(key, value): + """ + .. deprecated:: 3.3.5 + Use :code:`CONF[key] = value` instead + """ + CONF[key] = value + + +def rrmdir(directory): + """ + Recursivly 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): + """ + 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, goalcolor, steps): + """ + 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, goalcolor, steps): + """ + wrapper for interpolate_tuple that accepts colors as html ("#CCCCC" and such) + """ + 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, api=None): + """ + 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 + :return: 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 + log.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 + diff --git a/androguard/core/api_specific_resources/__init__.py b/androguard/core/api_specific_resources/__init__.py new file mode 100644 index 0000000..68c781a --- /dev/null +++ b/androguard/core/api_specific_resources/__init__.py @@ -0,0 +1,83 @@ +import json +import os +import re +import logging + +log = logging.getLogger(__name__) + + +class APILevelNotFoundError(Exception): + pass + + +def load_permissions(apilevel, permtype='permissions'): + """ + 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 (:code:`'permissions'`) or + permission groups (:code:`'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: + log.error("No Permissions available, can not load!") + return {} + + log.debug("Available API levels: {}".format(", ".join(map(str, sorted(levels))))) + + if not os.path.isfile(permissions_file): + if apilevel > max(levels): + log.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): + log.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)) + log.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): + """ + 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) diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_10.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_10.json new file mode 100644 index 0000000..e21b8b6 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_10.json @@ -0,0 +1,1365 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_13.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_13.json new file mode 100644 index 0000000..e91c605 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_13.json @@ -0,0 +1,1401 @@ +{ + "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" + } + } +} diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_14.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_14.json new file mode 100644 index 0000000..f3186a9 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_14.json @@ -0,0 +1,1563 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_15.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_15.json new file mode 100644 index 0000000..bf6410e --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_15.json @@ -0,0 +1,1590 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_16.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_16.json new file mode 100644 index 0000000..80b0a6f --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_16.json @@ -0,0 +1,1725 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_17.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_17.json new file mode 100644 index 0000000..0aa7d80 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_17.json @@ -0,0 +1,2058 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_18.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_18.json new file mode 100644 index 0000000..014c941 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_18.json @@ -0,0 +1,2139 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_19.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_19.json new file mode 100644 index 0000000..b0524c7 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_19.json @@ -0,0 +1,2346 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_21.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_21.json new file mode 100644 index 0000000..3ce0494 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_21.json @@ -0,0 +1,2688 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_22.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_22.json new file mode 100644 index 0000000..0c34046 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_22.json @@ -0,0 +1,2769 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_23.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_23.json new file mode 100644 index 0000000..8eebe81 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_23.json @@ -0,0 +1,2922 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_24.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_24.json new file mode 100644 index 0000000..78e9b11 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_24.json @@ -0,0 +1,3237 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_25.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_25.json new file mode 100644 index 0000000..10ce3d5 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_25.json @@ -0,0 +1,3246 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_26.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_26.json new file mode 100644 index 0000000..9dfcf90 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_26.json @@ -0,0 +1,3561 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_27.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_27.json new file mode 100644 index 0000000..1de91d2 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_27.json @@ -0,0 +1,3741 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_28.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_28.json new file mode 100644 index 0000000..8075018 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_28.json @@ -0,0 +1,4209 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_4.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_4.json new file mode 100644 index 0000000..1367360 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_4.json @@ -0,0 +1,1131 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_5.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_5.json new file mode 100644 index 0000000..93a2114 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_5.json @@ -0,0 +1,1203 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_6.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_6.json new file mode 100644 index 0000000..93a2114 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_6.json @@ -0,0 +1,1203 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_7.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_7.json new file mode 100644 index 0000000..93a2114 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_7.json @@ -0,0 +1,1203 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_8.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_8.json new file mode 100644 index 0000000..49e08c2 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_8.json @@ -0,0 +1,1311 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/aosp_permissions/permissions_9.json b/androguard/core/api_specific_resources/aosp_permissions/permissions_9.json new file mode 100644 index 0000000..f5aeca3 --- /dev/null +++ b/androguard/core/api_specific_resources/aosp_permissions/permissions_9.json @@ -0,0 +1,1338 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_16.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_16.json new file mode 100644 index 0000000..eb6c394 --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_16.json @@ -0,0 +1,3708 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_17.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_17.json new file mode 100644 index 0000000..3c14b2a --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_17.json @@ -0,0 +1,4238 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_18.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_18.json new file mode 100644 index 0000000..221e35a --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_18.json @@ -0,0 +1,4439 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_19.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_19.json new file mode 100644 index 0000000..d81f3df --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_19.json @@ -0,0 +1,4211 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_21.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_21.json new file mode 100644 index 0000000..47ce106 --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_21.json @@ -0,0 +1,6129 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_22.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_22.json new file mode 100644 index 0000000..3ff8986 --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_22.json @@ -0,0 +1,5774 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_23.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_23.json new file mode 100644 index 0000000..194e002 --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_23.json @@ -0,0 +1,4536 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_24.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_24.json new file mode 100644 index 0000000..6c44cfc --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_24.json @@ -0,0 +1,6721 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/api_specific_resources/api_permission_mappings/permissions_25.json b/androguard/core/api_specific_resources/api_permission_mappings/permissions_25.json new file mode 100644 index 0000000..adddf65 --- /dev/null +++ b/androguard/core/api_specific_resources/api_permission_mappings/permissions_25.json @@ -0,0 +1,6849 @@ +{ + "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" + ] +} \ No newline at end of file diff --git a/androguard/core/bytecode.py b/androguard/core/bytecode.py new file mode 100644 index 0000000..1199188 --- /dev/null +++ b/androguard/core/bytecode.py @@ -0,0 +1,974 @@ +from __future__ import print_function + +from builtins import str +from builtins import range +from builtins import object +import hashlib +from xml.sax.saxutils import escape +from struct import unpack, pack +import textwrap + +import json +from androguard.core.androconf import CONF, enable_colors, remove_colors, save_colors, color_range +import logging + +log = logging.getLogger("androguard.bytecode") + + +def disable_print_colors(): + colors = save_colors() + remove_colors() + return colors + + +def enable_print_colors(colors): + enable_colors(colors) + + +# Handle exit message +def Exit(msg): + log.warning("Error : " + msg) + raise Exception("oops") + + +def _PrintBanner(): + print_fct = CONF["PRINT_FCT"] + print_fct("*" * 75 + "\n") + + +def _PrintSubBanner(title=None): + print_fct = CONF["PRINT_FCT"] + if title is None: + print_fct("#" * 20 + "\n") + else: + print_fct("#" * 10 + " " + title + "\n") + + +def _PrintNote(note, tab=0): + print_fct = CONF["PRINT_FCT"] + note_color = CONF["COLORS"]["NOTE"] + normal_color = CONF["COLORS"]["NORMAL"] + print_fct("\t" * tab + "%s# %s%s" % (note_color, note, normal_color) + "\n") + + +# Print arg into a correct format +def _Print(name, arg): + buff = name + " " + + if type(arg).__name__ == 'int': + buff += "0x%x" % arg + elif type(arg).__name__ == 'long': + buff += "0x%x" % arg + elif type(arg).__name__ == 'str': + buff += "%s" % arg + elif isinstance(arg, SV): + buff += "0x%x" % arg.get_value() + elif isinstance(arg, SVs): + buff += arg.get_value().__str__() + + print(buff) + + +def PrettyShowEx(exceptions): + if len(exceptions) > 0: + CONF["PRINT_FCT"]("Exceptions:\n") + for i in exceptions: + CONF["PRINT_FCT"]("\t%s%s%s\n" % + (CONF["COLORS"]["EXCEPTION"], i.show_buff(), + CONF["COLORS"]["NORMAL"])) + + +def _PrintXRef(tag, items): + print_fct = CONF["PRINT_FCT"] + for i in items: + print_fct("%s: %s %s %s %s\n" % + (tag, i[0].get_class_name(), i[0].get_name(), + i[0].get_descriptor(), ' '.join("%x" % j.get_idx() + for j in i[1]))) + + +def _PrintDRef(tag, items): + print_fct = CONF["PRINT_FCT"] + for i in items: + print_fct("%s: %s %s %s %s\n" % + (tag, i[0].get_class_name(), i[0].get_name(), + i[0].get_descriptor(), ' '.join("%x" % j for j in i[1]))) + + +def _PrintDefault(msg): + print_fct = CONF["PRINT_FCT"] + print_fct(msg) + + +def PrettyShow(m_a, basic_blocks, notes={}): + idx = 0 + nb = 0 + + offset_color = CONF["COLORS"]["OFFSET"] + offset_addr_color = CONF["COLORS"]["OFFSET_ADDR"] + instruction_name_color = CONF["COLORS"]["INSTRUCTION_NAME"] + branch_false_color = CONF["COLORS"]["BRANCH_FALSE"] + branch_true_color = CONF["COLORS"]["BRANCH_TRUE"] + branch_color = CONF["COLORS"]["BRANCH"] + exception_color = CONF["COLORS"]["EXCEPTION"] + bb_color = CONF["COLORS"]["BB"] + normal_color = CONF["COLORS"]["NORMAL"] + print_fct = CONF["PRINT_FCT"] + + colors = CONF["COLORS"]["OUTPUT"] + + for i in basic_blocks: + print_fct("%s%s%s : \n" % (bb_color, i.get_name(), normal_color)) + instructions = list(i.get_instructions()) + for ins in instructions: + if nb in notes: + for note in notes[nb]: + _PrintNote(note, 1) + + print_fct("\t%s%-3d%s(%s%08x%s) " % + (offset_color, nb, normal_color, offset_addr_color, idx, + normal_color)) + print_fct("%s%-20s%s" % + (instruction_name_color, ins.get_name(), normal_color)) + + operands = ins.get_operands() + print_fct( + "%s" % + ", ".join(m_a.get_vm().colorize_operands(operands, colors))) + + op_value = ins.get_op_value() + if ins == instructions[-1] and i.childs: + print_fct(" ") + + # packed/sparse-switch + if (op_value == 0x2b or op_value == 0x2c) and len(i.childs) > 1: + values = i.get_special_ins(idx).get_values() + print_fct("%s[ D:%s%s " % + (branch_false_color, i.childs[0][2].get_name(), + branch_color)) + print_fct(' '.join("%d:%s" % ( + values[j], i.childs[j + 1][2].get_name()) for j in + range(0, len(i.childs) - 1)) + " ]%s" % + normal_color) + else: + if len(i.childs) == 2: + print_fct("%s[ %s%s " % (branch_false_color, + i.childs[0][2].get_name(), + branch_true_color)) + print_fct(' '.join("%s" % c[2].get_name( + ) for c in i.childs[1:]) + " ]%s" % normal_color) + else: + print_fct("%s[ " % branch_color + ' '.join( + "%s" % c[2].get_name() for c in i.childs) + " ]%s" % + normal_color) + + idx += ins.get_length() + nb += 1 + + print_fct("\n") + + if i.get_exception_analysis(): + print_fct("\t%s%s%s\n" % + (exception_color, i.exception_analysis.show_buff(), + normal_color)) + + print_fct("\n") + + +def method2dot(mx, colors=None): + """ + Export analysis method to dot format + + :param mx: :class:`~androguard.core.analysis.analysis.MethodAnalysis` + :param colors: dict of colors to use, if colors is None the default colors are used + + :returns: a string which contains the dot graph + """ + + if not colors: + colors = { + "true_branch": "green", + "false_branch": "red", + "default_branch": "purple", + "jump_branch": "blue", + "bg_idx": "lightgray", + "idx": "blue", + "bg_start_idx": "yellow", + "bg_instruction": "lightgray", + "instruction_name": "black", + "instructions_operands": "yellow", + "raw": "red", + "string": "red", + "literal": "green", + "offset": "#4000FF", + "method": "#DF3A01", + "field": "#088A08", + "type": "#0000FF", + "registers_range": ("#999933", "#6666FF") + } + + node_tpl = "\nstruct_%s [label=<\n\n%s
>];\n" + label_tpl = " %x %s %s \n" + link_tpl = "\n" + + edges_html = "" + blocks_html = "" + + method = mx.get_method() + sha256 = hashlib.sha256(bytearray("%s%s%s" % ( + mx.get_method().get_class_name(), mx.get_method().get_name(), + mx.get_method().get_descriptor()), "UTF-8")).hexdigest() + + registers = {} + if method.get_code(): + for DVMBasicMethodBlock in mx.basic_blocks.gets(): + for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions(): + operands = DVMBasicMethodBlockInstruction.get_operands(0) + for register in operands: + if register[0] == 0: + if register[1] not in registers: + registers[register[1]] = 0 + registers[register[1]] += 1 +# for i in range(method.get_code().get_registers_size()): +# registers[i] = 0 + + if registers: + registers_colors = color_range(colors["registers_range"][0], + colors["registers_range"][1], + len(registers)) + for i in registers: + registers[i] = registers_colors.pop(0) + + new_links = [] + + for DVMBasicMethodBlock in mx.basic_blocks.gets(): + ins_idx = DVMBasicMethodBlock.start + block_id = hashlib.md5(bytearray(sha256 + DVMBasicMethodBlock.get_name(), "UTF-8")).hexdigest() + + content = link_tpl % 'header' + + for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions(): + if DVMBasicMethodBlockInstruction.get_op_value( + ) == 0x2b or DVMBasicMethodBlockInstruction.get_op_value() == 0x2c: + new_links.append((DVMBasicMethodBlock, ins_idx, + DVMBasicMethodBlockInstruction.get_ref_off() * 2 + ins_idx)) + elif DVMBasicMethodBlockInstruction.get_op_value() == 0x26: + new_links.append((DVMBasicMethodBlock, ins_idx, + DVMBasicMethodBlockInstruction.get_ref_off() * 2 + ins_idx)) + + operands = DVMBasicMethodBlockInstruction.get_operands(ins_idx) + output = ", ".join(mx.get_vm().get_operand_html( + i, registers, colors, escape, textwrap.wrap) for i in operands) + + formatted_operands = DVMBasicMethodBlockInstruction.get_formatted_operands( + ) + if formatted_operands: + output += " ; %s" % str(formatted_operands) + + bg_idx = colors["bg_idx"] + if ins_idx == 0 and "bg_start_idx" in colors: + bg_idx = colors["bg_start_idx"] + + content += label_tpl % ( + bg_idx, colors["idx"], ins_idx, colors["bg_instruction"], + colors["instruction_name"], + DVMBasicMethodBlockInstruction.get_name(), output) + + ins_idx += DVMBasicMethodBlockInstruction.get_length() + last_instru = DVMBasicMethodBlockInstruction + + # all blocks from one method parsed + # updating dot HTML content + content += link_tpl % 'tail' + blocks_html += node_tpl % (block_id, content) + + # Block edges color treatment (conditional branchs colors) + val = colors["true_branch"] + if len(DVMBasicMethodBlock.childs) > 1: + val = colors["false_branch"] + elif len(DVMBasicMethodBlock.childs) == 1: + val = colors["jump_branch"] + + values = None + if (last_instru.get_op_value() == 0x2b or + last_instru.get_op_value() == 0x2c + ) and len(DVMBasicMethodBlock.childs) > 1: + val = colors["default_branch"] + values = ["default"] + values.extend(DVMBasicMethodBlock.get_special_ins( + ins_idx - last_instru.get_length()).get_values()) + + # updating dot edges + for DVMBasicMethodBlockChild in DVMBasicMethodBlock.childs: + label_edge = "" + + if values: + label_edge = values.pop(0) + + child_id = hashlib.md5( + bytearray(sha256 + DVMBasicMethodBlockChild[-1].get_name(), "UTF-8")).hexdigest() + edges_html += "struct_%s:tail -> struct_%s:header [color=\"%s\", label=\"%s\"];\n" % ( + block_id, child_id, val, label_edge) + # color switch + if val == colors["false_branch"]: + val = colors["true_branch"] + elif val == colors["default_branch"]: + val = colors["true_branch"] + + exception_analysis = DVMBasicMethodBlock.get_exception_analysis() + if exception_analysis: + for exception_elem in exception_analysis.exceptions: + exception_block = exception_elem[-1] + if exception_block: + exception_id = hashlib.md5( + bytearray(sha256 + exception_block.get_name(), "UTF-8")).hexdigest() + edges_html += "struct_%s:tail -> struct_%s:header [color=\"%s\", label=\"%s\"];\n" % ( + block_id, exception_id, "black", exception_elem[0]) + + for link in new_links: + DVMBasicMethodBlock = link[0] + DVMBasicMethodBlockChild = mx.basic_blocks.get_basic_block(link[2]) + + if DVMBasicMethodBlockChild: + block_id = hashlib.md5(bytearray(sha256 + DVMBasicMethodBlock.get_name( + ), "UTF-8")).hexdigest() + child_id = hashlib.md5(bytearray(sha256 + DVMBasicMethodBlockChild.get_name( + ), "UTF-8")).hexdigest() + + edges_html += "struct_%s:tail -> struct_%s:header [color=\"%s\", label=\"data(0x%x) to @0x%x\", style=\"dashed\"];\n" % ( + block_id, child_id, "yellow", link[1], link[2]) + + method_label = method.get_class_name() + "." + method.get_name( + ) + "->" + method.get_descriptor() + + method_information = method.get_information() + if method_information: + method_label += "\\nLocal registers v%d ... v%d" % ( + method_information["registers"][0], + method_information["registers"][1]) + if "params" in method_information: + for register, rtype in method_information["params"]: + method_label += "\\nparam v%d = %s" % (register, rtype) + method_label += "\\nreturn = %s" % (method_information["return"]) + + return {'name': method_label, 'nodes': blocks_html, 'edges': edges_html} + + +def method2format(output, _format="png", mx=None, raw=None): + """ + Export method to a specific file format + + @param output : output filename + @param _format : format type (png, jpg ...) (default : png) + @param mx : specify the MethodAnalysis object + @param raw : use directly a dot raw buffer if None + """ + # pydot is optional! + import pydot + + buff = "digraph {\n" + buff += "graph [rankdir=TB]\n" + buff += "node [shape=plaintext]\n" + + if raw: + data = raw + else: + data = method2dot(mx) + + # subgraphs cluster + buff += "subgraph cluster_{} ".format(hashlib.md5(bytearray(output, "UTF-8")).hexdigest()) + buff += "{\n" + buff += "label=\"{}\"\n".format(data['name']) + buff += data['nodes'] + buff += "}\n" + + # subgraphs edges + buff += data['edges'] + buff += "}\n" + + d = pydot.graph_from_dot_data(buff) + if d: + for g in d: + getattr(g, "write_" + _format.lower())(output) + + +def method2png(output, mx, raw=False): + """ + Export method to a png file format + + :param output: output filename + :type output: string + :param mx: specify the MethodAnalysis object + :type mx: :class:`MethodAnalysis` object + :param raw: use directly a dot raw buffer + :type raw: string + """ + buff = raw + if not raw: + buff = method2dot(mx) + + method2format(output, "png", mx, buff) + + +def method2jpg(output, mx, raw=False): + """ + Export method to a jpg file format + + :param output: output filename + :type output: string + :param mx: specify the MethodAnalysis object + :type mx: :class:`MethodAnalysis` object + :param raw: use directly a dot raw buffer (optional) + :type raw: string + """ + buff = raw + if not raw: + buff = method2dot(mx) + + method2format(output, "jpg", mx, buff) + + +def vm2json(vm): + """ + Get a JSON representation of a DEX file + + :param vm: :class:`~androguard.core.bytecodes.dvm.DalvikVMFormat` + :return: + """ + d = {"name": "root", "children": []} + + for _class in vm.get_classes(): + c_class = {"name": _class.get_name(), "children": []} + + for method in _class.get_methods(): + c_method = {"name": method.get_name(), "children": []} + + c_class["children"].append(c_method) + + d["children"].append(c_class) + + return json.dumps(d) + + +class TmpBlock(object): + + def __init__(self, name): + self.name = name + + def get_name(self): + return self.name + + +def method2json(mx, directed_graph=False): + """ + Create directed or undirected graph in the json format. + + :param mx: :class:`~androguard.core.analysis.analysis.MethodAnalysis` + :param directed_graph: True if a directed graph should be created (default: False) + :return: + """ + if directed_graph: + return method2json_direct(mx) + return method2json_undirect(mx) + + +def method2json_undirect(mx): + """ + + :param mx: :class:`~androguard.core.analysis.analysis.MethodAnalysis` + :return: + """ + d = {} + reports = [] + d["reports"] = reports + + for DVMBasicMethodBlock in mx.basic_blocks.gets(): + cblock = {"BasicBlockId": DVMBasicMethodBlock.get_name(), + "registers": mx.get_method().get_code().get_registers_size(), "instructions": []} + + ins_idx = DVMBasicMethodBlock.start + for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions(): + c_ins = {"idx": ins_idx, "name": DVMBasicMethodBlockInstruction.get_name(), + "operands": DVMBasicMethodBlockInstruction.get_operands( + ins_idx)} + + cblock["instructions"].append(c_ins) + ins_idx += DVMBasicMethodBlockInstruction.get_length() + + cblock["Edge"] = [] + for DVMBasicMethodBlockChild in DVMBasicMethodBlock.childs: + cblock["Edge"].append(DVMBasicMethodBlockChild[-1].get_name()) + + reports.append(cblock) + + return json.dumps(d) + + +def method2json_direct(mx): + """ + + :param mx: :class:`~androguard.core.analysis.analysis.MethodAnalysis` + :return: + """ + d = {} + reports = [] + d["reports"] = reports + + hooks = {} + + l = [] + for DVMBasicMethodBlock in mx.basic_blocks.gets(): + for index, DVMBasicMethodBlockChild in enumerate(DVMBasicMethodBlock.childs): + if DVMBasicMethodBlock.get_name() == DVMBasicMethodBlockChild[-1].get_name(): + + preblock = TmpBlock(DVMBasicMethodBlock.get_name() + "-pre") + + cnblock = {"BasicBlockId": DVMBasicMethodBlock.get_name() + "-pre", + "start": DVMBasicMethodBlock.start, + "notes": [], + "Edge": [DVMBasicMethodBlock.get_name()], + "registers": 0, + "instructions": [], + "info_bb": 0} + + l.append(cnblock) + + for parent in DVMBasicMethodBlock.fathers: + hooks[parent[-1].get_name()] = [] + hooks[parent[-1].get_name()].append(preblock) + + for idx, child in enumerate(parent[-1].childs): + if child[-1].get_name() == DVMBasicMethodBlock.get_name( + ): + hooks[parent[-1].get_name()].append(child[-1]) + + for DVMBasicMethodBlock in mx.basic_blocks.gets(): + cblock = {"BasicBlockId": DVMBasicMethodBlock.get_name(), + "start": DVMBasicMethodBlock.start, + "notes": DVMBasicMethodBlock.get_notes(), + "registers": mx.get_method().get_code().get_registers_size(), + "instructions": []} + + ins_idx = DVMBasicMethodBlock.start + last_instru = None + for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions(): + c_ins = {"idx": ins_idx, + "name": DVMBasicMethodBlockInstruction.get_name(), + "operands": DVMBasicMethodBlockInstruction.get_operands(ins_idx), + "formatted_operands": DVMBasicMethodBlockInstruction.get_formatted_operands()} + + cblock["instructions"].append(c_ins) + + if (DVMBasicMethodBlockInstruction.get_op_value() == 0x2b or + DVMBasicMethodBlockInstruction.get_op_value() == 0x2c): + values = DVMBasicMethodBlock.get_special_ins(ins_idx) + cblock["info_next"] = values.get_values() + + ins_idx += DVMBasicMethodBlockInstruction.get_length() + last_instru = DVMBasicMethodBlockInstruction + + cblock["info_bb"] = 0 + if DVMBasicMethodBlock.childs: + if len(DVMBasicMethodBlock.childs) > 1: + cblock["info_bb"] = 1 + + if (last_instru.get_op_value() == 0x2b or + last_instru.get_op_value() == 0x2c): + cblock["info_bb"] = 2 + + cblock["Edge"] = [] + for DVMBasicMethodBlockChild in DVMBasicMethodBlock.childs: + ok = False + if DVMBasicMethodBlock.get_name() in hooks: + if DVMBasicMethodBlockChild[-1] in hooks[DVMBasicMethodBlock.get_name()]: + ok = True + cblock["Edge"].append(hooks[DVMBasicMethodBlock.get_name()][0].get_name()) + + if not ok: + cblock["Edge"].append(DVMBasicMethodBlockChild[-1].get_name()) + + exception_analysis = DVMBasicMethodBlock.get_exception_analysis() + if exception_analysis: + cblock["Exceptions"] = exception_analysis.get() + + reports.append(cblock) + + reports.extend(l) + + return json.dumps(d) + + +class SV(object): + + def __init__(self, size, buff): + self.__size = size + self.__value = unpack(self.__size, buff)[0] + + def _get(self): + return pack(self.__size, self.__value) + + def __str__(self): + return "0x%x" % self.__value + + def __int__(self): + return self.__value + + def get_value_buff(self): + return self._get() + + def get_value(self): + return self.__value + + def set_value(self, attr): + self.__value = attr + + +class SVs(object): + + def __init__(self, size, ntuple, buff): + self.__size = size + + self.__value = ntuple._make(unpack(self.__size, buff)) + + def _get(self): + l = [] + for i in self.__value._fields: + l.append(getattr(self.__value, i)) + return pack(self.__size, *l) + + def _export(self): + return [x for x in self.__value._fields] + + def get_value_buff(self): + return self._get() + + def get_value(self): + return self.__value + + def set_value(self, attr): + self.__value = self.__value._replace(**attr) + + def __str__(self): + return self.__value.__str__() + + +def object_to_bytes(obj): + """ + Convert a object to a bytearray or call get_raw() of the object + if no useful type was found. + """ + if isinstance(obj, str): + return bytearray(obj, "UTF-8") + elif isinstance(obj, bool): + return bytearray() + elif isinstance(obj, int): + return pack("= len(self.__buff) + + def get_buff(self): + """ + Return the whole buffer + + :rtype: bytearray + """ + return self.__buff + + def set_buff(self, buff): + """ + Overwrite the current buffer with the content of `buff` + + :param bytearray buff: the new buffer + """ + self.__buff = buff + + def save(self, filename): + """ + Save the current buffer to `filename` + + Exisiting files with the same name will be overwritten. + + :param str filename: the name of the file to save to + """ + with open(filename, "wb") as fd: + fd.write(self.__buff) + + +class Buff(object): + def __init__(self, offset, buff): + self.offset = offset + self.buff = buff + + self.size = len(buff) + + +# Here for legacy reasons. Might get removed some day... +_Bytecode = BuffHandle + + +def FormatClassToJava(i): + """ + Transform a java class name into the typed variant found in DEX files. + + example:: + + >>> FormatClassToJava('java.lang.Object') + 'Ljava/lang/Object;' + + :param i: the input class name + :rtype: str + """ + return "L" + i.replace(".", "/") + ";" + + +def FormatClassToPython(i): + """ + Transform a typed class name into a form which can be used as a python + attribute + + example:: + + >>> FormatClassToPython('Lfoo/bar/foo/Barfoo$InnerClass;') + 'Lfoo_bar_foo_Barfoo_InnerClass' + + :param i: classname to transform + :rtype: str + """ + i = i[:-1] + i = i.replace("/", "_") + i = i.replace("$", "_") + + return i + + +def get_package_class_name(name): + """ + Return package and class name in a java variant from a typed variant name. + + If no package could be found, the package is an empty string. + + example:: + + >>> get_package_class_name('Ljava/lang/Object;') + ('java.lang', 'Object') + + :param name: the name + :rtype: tuple + :return: + """ + if name[0] != 'L' and name[-1] != ';': + raise ValueError("The name '{}' does not look like a typed name!".format(name)) + + name = name[1:-1] + if '/' not in name: + return '', name + + package, clsname = name.rsplit('/', 1) + package = package.replace('/', '.') + + return package, clsname + + +def FormatNameToPython(i): + """ + Transform a (method) name into a form which can be used as a python + attribute + + example:: + + >>> FormatNameToPython('') + 'clinit' + + :param i: name to transform + :rtype: str + """ + + i = i.replace("<", "") + i = i.replace(">", "") + i = i.replace("$", "_") + + return i + + +def FormatDescriptorToPython(i): + """ + Format a descriptor into a form which can be used as a python attribute + + example:: + + >>> FormatDescriptorToPython('(Ljava/lang/Long; Ljava/lang/Long; Z Z)V') + 'Ljava_lang_LongLjava_lang_LongZZV + + :param i: name to transform + :rtype: str + """ + + i = i.replace("/", "_") + i = i.replace(";", "") + i = i.replace("[", "") + i = i.replace("(", "") + i = i.replace(")", "") + i = i.replace(" ", "") + i = i.replace("$", "") + + return i + + +class Node(object): + def __init__(self, n, s): + self.id = n + self.title = s + self.children = [] + diff --git a/androguard/core/bytecodes/__init__.py b/androguard/core/bytecodes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/androguard/core/bytecodes/apk.py b/androguard/core/bytecodes/apk.py new file mode 100644 index 0000000..da2ee70 --- /dev/null +++ b/androguard/core/bytecodes/apk.py @@ -0,0 +1,2162 @@ +from __future__ import division +from __future__ import print_function + +from builtins import str +from builtins import object +from androguard.core import androconf +from androguard.util import read, get_certificate_name_string + +from androguard.core.bytecodes.axml import ARSCParser, AXMLPrinter, ARSCResTableConfig, AXMLParser, format_value, START_TAG, END_TAG, TEXT, END_DOCUMENT + +import io +from zlib import crc32 +import os +import re +import binascii +import zipfile +import logging +from struct import unpack +import hashlib +import warnings + +import lxml.sax +from xml.dom.pulldom import SAX2DOM + +# Used for reading Certificates +from asn1crypto import cms, x509, keys + +NS_ANDROID_URI = 'http://schemas.android.com/apk/res/android' +NS_ANDROID = '{{{}}}'.format(NS_ANDROID_URI) # Namespace as used by etree + +log = logging.getLogger("androguard.apk") + + +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('= 0x7fffffff: + max_sdk_str = "0x%x" % self.maxSDK + + return "\n".join([ + 'signer minSDK : {0:d}'.format(self.minSDK), + 'signer maxSDK : {0:s}'.format(max_sdk_str), + base_str + ]) + + +class APKV2Signer(object): + """ + This class holds all data associated with an APK V2 SigningBlock signer. + source : https://source.android.com/security/apksigning/v2.html + """ + + def __init__(self): + self._bytes = None + self.signed_data = None + self.signatures = None + self.public_key = None + + def __str__(self): + return "\n".join([ + '{0:s}'.format(str(self.signed_data)), + 'signatures : {0}'.format(_dump_digests_or_signatures(self.signatures)), + 'public key : {0}'.format(binascii.hexlify(self.public_key)), + ]) + + +class APKV3Signer(APKV2Signer): + """ + This class holds all data associated with an APK V3 SigningBlock signer. + source : https://source.android.com/security/apksigning/v3.html + """ + + def __init__(self): + super(APKV3Signer, self).__init__() + self.minSDK = None + self.maxSDK = None + + def __str__(self): + + base_str = super(APKV3Signer, self).__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 : {0:d}'.format(self.minSDK), + 'signer maxSDK : {0:s}'.format(max_sdk_str), + base_str + ]) + + +class APK(object): + # 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, raw=False, magic_file=None, skip_analysis=False, testzip=False): + """ + This class can access to all elements in an APK file + + example:: + + 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) + + :type filename: string + :type raw: boolean + :type magic_file: string + :type skip_analysis: boolean + :type testzip: boolean + + """ + if magic_file: + log.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 = bytearray(filename) + self._sha256 = hashlib.sha256(self.__raw).hexdigest() + # Set the filename to something sane + self.filename = "raw_apk_sha256:{}".format(self._sha256) + else: + self.__raw = bytearray(read(filename)) + + self.zip = zipfile.ZipFile(io.BytesIO(self.__raw), mode="r") + + if testzip: + # 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! + ret = self.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" + try: + manifest_data = self.zip.read(i) + except KeyError: + log.warning("Missing AndroidManifest.xml. Is this an APK file?") + else: + ap = AXMLPrinter(manifest_data) + + if not ap.is_valid(): + log.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(): + log.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": + log.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 + + self.permission_module = androconf.load_api_specific_resource_module( + "aosp_permissions", self.get_target_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.__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: + log.warning(self.get_max_sdk_version() + 'is not a valid value for maxSdkVersion') + except TypeError: + pass + return maxSdkVersion + + def is_valid_APK(self): + """ + 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. + + :rtype: boolean + """ + return self.valid_apk + + def get_filename(self): + """ + Return the filename of the APK + + :rtype: :class:`str` + """ + return self.filename + + def get_app_name(self): + """ + 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. + + :rtype: :class:`str` + """ + + 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? + log.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. + log.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 + log.warning("Resource ID with Package name '{}' encountered! Will not resolve".format(package)) + return app_name + + try: + app_name = res_parser.get_resolved_res_configs( + res_id, + ARSCResTableConfig.default_config())[0][1] + except Exception as e: + log.warning("Exception selecting app name: %s" % e) + return app_name + + def get_app_icon(self, max_dpi=65536): + """ + 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 https://developer.android.com/guide/practices/screens_support.html + and https://developer.android.com/ndk/reference/group___configuration.html + + * 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: https://stackoverflow.com/a/34370735/446140 + + :rtype: :class:`str` + """ + 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("@"): + res_id = int(app_icon[1:], 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: + log.warning("Exception selecting app icon: %s" % e) + + return app_icon + + def get_package(self): + """ + Return the name of the package + + This information is read from the AndroidManifest.xml + + :rtype: :class:`str` + """ + return self.package + + def get_androidversion_code(self): + """ + Return the android version code + + This information is read from the AndroidManifest.xml + + :rtype: :class:`str` + """ + return self.androidversion["Code"] + + def get_androidversion_name(self): + """ + Return the android version name + + This information is read from the AndroidManifest.xml + + :rtype: :class:`str` + """ + return self.androidversion["Name"] + + def get_files(self): + """ + Return the file names inside the APK. + + :rtype: a list of :class:`str` + """ + return self.zip.namelist() + + def _get_file_magic_name(self, buffer): + """ + Return the filetype guessed for a buffer + :param buffer: bytes + :returns: str of filetype + """ + 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 + log.warning("No Magic library was found on your system.") + return default + except TypeError as e: + self.__no_magic = True + log.warning("It looks like you have the magic python package installed but not the magic library itself!") + log.warning("Error from magic library: %s", e) + log.warning("Please follow the installation instructions at https://github.com/ahupp/python-magic/#installation") + return default + + try: + # There are several implementations of magic, + # unfortunately all called magic + # We use this one: https://github.com/ahupp/python-magic/ + getattr(magic, "MagicException") + except AttributeError: + self.__no_magic = True + log.warning("Not the correct Magic library was found on your system. Please install python-magic!") + return default + + try: + ftype = magic.from_buffer(buffer[:1024]) + except magic.MagicError as e: + log.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): + """ + 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): + """ + Return the files inside the APK with their associated types (by using python-magic) + + At the same time, the CRC32 are calculated for the files. + + :rtype: a dictionnary + """ + 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` 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.getinfo(filename).CRC: + log.error("File '{}' has different CRC32 after unpacking! " + "Declared: {:08x}, Calculated: {:08x}".format(filename, + self.zip.getinfo(filename).CRC, + self.files_crc32[filename])) + return buffer + + def get_files_crc32(self): + """ + 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): + """ + Return the files inside the APK with their associated types and crc32 + + :rtype: str, str, int + """ + for k in self.get_files(): + yield k, self.get_files_types()[k], self.get_files_crc32()[k] + + def get_raw(self): + """ + Return raw bytes of the APK + + :rtype: bytes + """ + return self.__raw + + def get_file(self, filename): + """ + Return the raw data of the specified filename + inside the APK + + :rtype: bytes + """ + try: + return self.zip.read(filename) + except KeyError: + raise FileNotPresent(filename) + + def get_dex(self): + """ + 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 :func:`~APK.get_all_dex`. + + :rtype: bytes + """ + 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): + """ + 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 + + :rtype: a list of str + """ + dexre = re.compile("classes(\d*).dex") + return filter(lambda x: dexre.match(x), self.get_files()) + + def get_all_dex(self): + """ + Return the raw data of all classes dex files + + :rtype: a generator of bytes + """ + for dex_name in self.get_dex_names(): + yield self.get_file(dex_name) + + def is_multidex(self): + """ + Test if the APK has multiple DEX files + + :returns: True if multiple dex found, otherwise False + """ + dexre = re.compile("^classes(\d+)?.dex$") + return len([instance for instance in self.get_files() if dexre.search(instance)]) > 1 + + def get_elements(self, tag_name, attribute, with_namespace=True): + """ + .. deprecated:: 3.3.5 + use :meth:`get_all_attribute_value` instead + + Return elements in xml files which match with the tag name and the specific attribute + + :param str tag_name: a string which specify the tag name + :param str attribute: a string which specify the attribute + """ + warnings.warn("This method is deprecated since 3.3.5.", DeprecationWarning) + for i in self.xml: + if self.xml[i] is None: + continue + for item in self.xml[i].findall('.//' + tag_name): + if with_namespace: + value = item.get(self._ns(attribute)) + else: + value = item.get(attribute) + # There might be an attribute without the namespace + if value: + yield self._format_value(value) + + def _format_value(self, value): + """ + Format a value with packagename, if not already set. + For example, the name :code:`'.foobar'` will be transformed into :code:`'package.name.foobar'`. + + Names which do not contain any dots are assumed to be packagename-less as well: + :code:`foobar` will also transform into :code:`package.name.foobar`. + + :param value: + :returns: + """ + if len(value) > 0: + v_dot = value.find(".") + if v_dot == 0: + value = self.package + "." + value + elif v_dot == -1: + value = self.package + "." + value + return value + + def get_element(self, tag_name, attribute, **attribute_filter): + """ + .. deprecated:: 3.3.5 + use :meth:`get_attribute_value` instead + + Return element 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 + :rtype: str + """ + warnings.warn("This method is deprecated since 3.3.5.", DeprecationWarning) + for i in self.xml: + if self.xml[i] is None: + continue + tag = self.xml[i].findall('.//' + tag_name) + if len(tag) == 0: + return None + for item in tag: + skip_this_item = False + for attr, val in list(attribute_filter.items()): + attr_val = item.get(self._ns(attr)) + if attr_val != val: + skip_this_item = True + break + + if skip_this_item: + continue + + value = item.get(self._ns(attribute)) + + if value is not None: + return value + return None + + def get_all_attribute_value( + self, tag_name, attribute, format_value=True, **attribute_filter + ): + """ + 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 + """ + tags = self.find_tags(tag_name, **attribute_filter) + for tag in tags: + value = tag.get(attribute) or tag.get(self._ns(attribute)) + if value is not None: + if format_value: + yield self._format_value(value) + else: + yield value + + def get_attribute_value( + self, tag_name, attribute, format_value=False, **attribute_filter + ): + """ + 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 + """ + + 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, attribute): + """ + 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 + log.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, **attribute_filter): + """ + Return a list of all the matched tags in all available xml + + :param str tag: specify the tag name + """ + 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, tag_name, **attribute_filter + ): + """ + Return a list of all the matched tags in a specific xml + w + :param str xml_name: specify from which xml to pick the tag from + :param str tag_name: specify the tag name + """ + 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 = xml.findall(".//" + tag_name) + return [ + tag for tag in tags if self.is_tag_matched( + tag, **attribute_filter + ) + ] + + def is_tag_matched(self, tag, **attribute_filter): + """ + 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 :code:`{"name": "foobar"}` will match on :code:`` + as well as on :code:``. + + :param lxml.etree.Element tag: specify the tag element + :param attribute_filter: specify the attribute filter as dictionary + """ + 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): + """ + Return names of the main activities + + These values are read from the AndroidManifest.xml + + :rtype: a set of str + """ + 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")) + if activity is not None: + x.add(item.get(self._ns("name"))) + else: + log.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")) + if activity is not None: + y.add(item.get(self._ns("name"))) + else: + log.warning('Launcher activity without name') + + return x.intersection(y) + + def get_main_activity(self): + """ + Return the name of the main activity + + This value is read from the AndroidManifest.xml + + :rtype: str + """ + activities = self.get_main_activities() + if len(activities) > 0: + return self._format_value(activities.pop()) + return None + + def get_activities(self): + """ + Return the android:name attribute of all activities + + :rtype: a list of str + """ + return list(self.get_all_attribute_value("activity", "name")) + + def get_services(self): + """ + Return the android:name attribute of all services + + :rtype: a list of str + """ + return list(self.get_all_attribute_value("service", "name")) + + def get_receivers(self): + """ + Return the android:name attribute of all receivers + + :rtype: a list of string + """ + return list(self.get_all_attribute_value("receiver", "name")) + + def get_providers(self): + """ + Return the android:name attribute of all providers + + :rtype: a list of string + """ + return list(self.get_all_attribute_value("provider", "name")) + + def get_intent_filters(self, itemtype, name): + """ + 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 + """ + d = {"action": [], "category": []} + + 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 ssitem in sitem.findall("action"): + if ssitem.get(self._ns("name")) not in d["action"]: + d["action"].append(ssitem.get(self._ns("name"))) + for ssitem in sitem.findall("category"): + if ssitem.get(self._ns("name")) not in d["category"]: + d["category"].append(ssitem.get(self._ns("name"))) + + if not d["action"]: + del d["action"] + + if not d["category"]: + del d["category"] + + return d + + def get_permissions(self): + """ + 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 :meth:`get_uses_implied_permission_list` if you need a list + of implied permissions. + + :returns: A list of permissions + :rtype: list + """ + return self.permissions + + def get_uses_implied_permission_list(self): + """ + Return all permissions implied by the target SDK or other permissions. + + :rtype: list of string + """ + 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 get_details_permissions(self): + """ + Return permissions with details. + + THis can only return details about the permission, if the permission is + defined in the AOSP. + + :rtype: 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"]] + else: + # FIXME: the permission might be signature, if it is defined by the app itself! + l[i] = ["normal", "Unknown permission from android reference", + "Unknown permission from android reference"] + return l + + def get_requested_permissions(self): + """ + .. deprecated:: 3.1.0 + use :meth:`get_permissions` instead. + + Returns all requested permissions. + + It has the same result as :meth:`get_permissions` and might be removed in the future + + :rtype: list of str + """ + warnings.warn("This method is deprecated since 3.1.0.", DeprecationWarning) + return self.get_permissions() + + def get_requested_aosp_permissions(self): + """ + Returns requested permissions declared within AOSP project. + + This includes several other permissions as well, which are in the platform apps. + + :rtype: list of str + """ + 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): + """ + Returns requested aosp permissions with details. + + :rtype: dictionary + """ + 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): + """ + Returns list of requested permissions not declared within AOSP project. + + :rtype: list of strings + """ + 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): + """ + Returns list of the declared permissions. + + :rtype: list of strings + """ + return list(self.declared_permissions.keys()) + + def get_declared_permissions_details(self): + """ + Returns declared permissions with the details. + + :rtype: dict + """ + return self.declared_permissions + + def get_max_sdk_version(self): + """ + Return the android:maxSdkVersion attribute + + :rtype: string + """ + return self.get_attribute_value("uses-sdk", "maxSdkVersion") + + def get_min_sdk_version(self): + """ + Return the android:minSdkVersion attribute + + :rtype: string + """ + return self.get_attribute_value("uses-sdk", "minSdkVersion") + + def get_target_sdk_version(self): + """ + Return the android:targetSdkVersion attribute + + :rtype: string + """ + return self.get_attribute_value("uses-sdk", "targetSdkVersion") + + def get_effective_target_sdk_version(self): + """ + 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: + https://developer.android.com/guide/topics/manifest/uses-sdk-element.html + + :rtype: int + """ + 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): + """ + Return the android:name attributes for libraries + + :rtype: list + """ + return list(self.get_all_attribute_value("uses-library", "name")) + + def get_features(self): + """ + Return a list of all android:names found for the tag uses-feature + in the AndroidManifest.xml + + :returns: list + """ + return list(self.get_all_attribute_value("uses-feature", "name")) + + def is_wearable(self): + """ + 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): + """ + 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): + """ + 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): + """ + Return the DER coded X.509 certificate from the signature file. + + :param filename: Signature filename in APK + :returns: DER coded X.509 certificate as binary + """ + pkcs7message = self.get_file(filename) + + pkcs7obj = cms.ContentInfo.load(pkcs7message) + cert = pkcs7obj['content']['certificates'][0].chosen.dump() + return cert + + def get_certificate(self, filename): + """ + 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: a :class:`Certificate` certificate + """ + cert = self.get_certificate_der(filename) + certificate = x509.Certificate.load(cert) + + return certificate + + def new_zip(self, filename, deleted_files=None, new_files={}): + """ + Create a new zip file + + :param filename: the output filename of the zip + :param deleted_files: a regex pattern to remove specific file + :param new_files: a dictionnary of new files + + :type filename: string + :type deleted_files: None or a string + :type new_files: a dictionnary (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.filename) is None: + # if the regex of deleted_files doesn't match the filename + if new_files is not False: + if item.filename in new_files: + # and if the filename is in new_files + zout.writestr(item, new_files[item.filename]) + continue + # Otherwise, write the original file. + buffer = self.zip.read(item.filename) + zout.writestr(item, buffer) + # Block two: deleted_files is None, new_files is not empty + elif new_files is not False: + if item.filename in new_files: + zout.writestr(item, new_files[item.filename]) + else: + buffer = self.zip.read(item.filename) + 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.filename) + zout.writestr(item, buffer) + zout.close() + + def get_android_manifest_axml(self): + """ + Return the :class:`AXMLPrinter` object which corresponds to the AndroidManifest.xml file + + :rtype: :class:`~androguard.core.bytecodes.axml.AXMLPrinter` + """ + try: + return self.axml["AndroidManifest.xml"] + except KeyError: + return None + + def get_android_manifest_xml(self): + """ + Return the parsed xml object which corresponds to the AndroidManifest.xml file + + :rtype: :class:`~lxml.etree.Element` + """ + try: + return self.xml["AndroidManifest.xml"] + except KeyError: + return None + + def get_android_resources(self): + """ + Return the :class:`~androguard.core.bytecodes.axml.ARSCParser` object which corresponds to the resources.arsc file + + :rtype: :class:`~androguard.core.bytecodes.axml.ARSCParser` + """ + 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): + """ + Returns true if either a v1 or v2 (or both) signature was found. + """ + return self.is_signed_v1() or self.is_signed_v2() + + def is_signed_v1(self): + """ + 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. + """ + return self.get_signature_name() is not None + + def is_signed_v2(self): + """ + 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. + """ + if self._is_signed_v2 is None: + self.parse_v2_v3_signature() + + return self._is_signed_v2 + + def is_signed_v3(self): + """ + 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. + """ + if self._is_signed_v3 is None: + self.parse_v2_v3_signature() + + return self._is_signed_v3 + + def read_uint32_le(self, io_stream): + value, = unpack(' 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(' 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') + diff --git a/androguard/core/bytecodes/axml/__init__.py b/androguard/core/bytecodes/axml/__init__.py new file mode 100644 index 0000000..4fe6710 --- /dev/null +++ b/androguard/core/bytecodes/axml/__init__.py @@ -0,0 +1,2721 @@ +from __future__ import division +from __future__ import print_function + +from builtins import chr +from builtins import range +from builtins import object +from androguard.core import bytecode + +from androguard.core.resources import public +from androguard.core.bytecodes.axml.types import * + +from struct import pack, unpack +from xml.sax.saxutils import escape +import collections +from collections import defaultdict + +from lxml import etree +import logging +import re +import sys +import binascii + +log = logging.getLogger("androguard.axml") + + +# Constants for ARSC Files +# see http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#215 +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 + +# 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_LENGHT = 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): + """ + Convert a complex unit into float + """ + return float(xcomplex & 0xFFFFFF00) * RADIX_MULTS[(xcomplex >> 4) & 3] + + +class StringBlock(object): + """ + StringBlock is a CHUNK inside an AXML File: `ResStringPool_header` + It contains all strings, which are used by referecing 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, header): + """ + :param buff: buffer which holds the string block + :param header: a instance of :class:`~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: + log.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 + """ + return self.getString(idx) + + def __len__(self): + """ + Get the number of strings stored in this table + """ + return self.stringCount + + def __iter__(self): + """ + Iterable over all strings + """ + for i in range(self.stringCount): + yield self.getString(i) + + def getString(self, idx): + """ + Return the string at the index in the string table + + :param idx: index in the string table + :return: str + """ + 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): + """ + Return the style associated with the index + + :param idx: index of the style + :return: + """ + return self.m_styles[idx] + + def _decode8(self, offset): + """ + Decode an UTF-8 String at the given offset + + :param offset: offset of the string inside the data + :return: str + """ + # 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 + + 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): + """ + Decode an UTF-16 String at the given offset + + :param offset: offset of the string inside the data + :return: str + """ + 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 + + 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, encoding, str_len): + """ + 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: str + """ + string = data.decode(encoding, 'replace') + if len(string) != str_len: + log.warning("invalid decoded string length") + return string + + def _decode_length(self, offset, sizeof_char): + """ + 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): + """ + 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(object): + """ + 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 :class:`~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()` 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): + self._reset() + + self._valid = True + self.axml_tampered = False + self.buff = bytecode.BuffHandle(raw_buff) + + # Minimum is a single ARSCHeader, which would be a strange edge case... + if self.buff.size() < 8: + log.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: + log.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) + except ResParserError as e: + log.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(): + log.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 + log.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 + log.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) + except ResParserError as e: + log.error("Error parsing resource header of string pool: %s", e) + self._valid = False + return + + if header.header_size != 0x1C: + log.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) + + # Stores resource ID mappings, if any + self.m_resourceIDs = [] + + # Store a list of prefix/uri mappings encountered + self.namespaces = [] + + def is_valid(self): + """ + Get the state of the AXMLPrinter. + if an error happend somewhere in the process of parsing the file, + this flag is set to False. + """ + 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): + 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.end() or self.buff.get_idx() == self.filesize: + self.m_event = END_DOCUMENT + break + + # Again, we read an ARSCHeader + try: + h = ARSCHeader(self.buff) + except ResParserError as e: + log.error("Error parsing resource header: %s", 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: + log.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: + log.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. + log.error("Not a XML resource chunk type: 0x{:04x}. Skipping {} bytes".format(h.type, h.size)) + self.buff.set_idx(h.end) + continue + + # Check that we read a correct header + if h.header_size != 0x10: + log.error("XML Resource Type Chunk header size does not match 16! " \ + "At chunk type 0x{:04x}, declared header size={}, chunk size={}".format(h.type, h.header_size, h.size)) + self._valid = False + return + + # 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 == '': + log.warning("Namespace prefix '{}' resolves to empty URI. " + "This might be a packer.".format(s_prefix)) + + if (prefix, uri) in self.namespaces: + log.info("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 * ATTRIBUTE_LENGHT): + # Each field is linearly parsed into the array + # Each Attribute contains: + # * Namespace URI (String ID) + # * Name (String ID) + # * Value + # * Type + # * Data + 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("= len(self.m_attributes): + log.warning("Invalid attribute index") + + return offset + + def getAttributeCount(self): + """ + Return the number of Attributes for a Tag + or -1 if not in a tag + """ + if self.m_event != START_TAG: + return -1 + + return self.m_attribute_count + + def getAttributeUri(self, index): + """ + Returns the numeric ID for the namespace URI of an attribute + """ + offset = self._get_attribute_offset(index) + uri = self.m_attributes[offset + ATTRIBUTE_IX_NAMESPACE_URI] + + return uri + + def getAttributeNamespace(self, index): + """ + Return the Namespace URI (if any) for the attribute + """ + uri = self.getAttributeUri(index) + + # No Namespace + if uri == 0xFFFFFFFF: + return u'' + + return self.sb[uri] + + def getAttributeName(self, index): + """ + Returns the String which represents the attribute name + """ + 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 not res: + attr = self.m_resourceIDs[name] + if attr in public.SYSTEM_RESOURCES['attributes']['inverse']: + res = 'android:' + public.SYSTEM_RESOURCES['attributes']['inverse'][attr] + else: + # 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): + """ + Return the type of the attribute at the given index + + :param index: index of the attribute + """ + offset = self._get_attribute_offset(index) + return self.m_attributes[offset + ATTRIBUTE_IX_VALUE_TYPE] + + def getAttributeValueData(self, index): + """ + Return the data of the attribute at the given index + + :param index: index of the attribute + """ + offset = self._get_attribute_offset(index) + return self.m_attributes[offset + ATTRIBUTE_IX_VALUE_DATA] + + def getAttributeValue(self, index): + """ + This function is only used to look up strings + All other work is done by + :func:`~androguard.core.bytecodes.axml.format_value` + # FIXME should unite those functions + :param index: index of the attribute + :return: + """ + 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 u'' + + +def format_value(_type, _data, lookup_string=lambda ix: ""): + """ + 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 + """ + + # 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 "?%s%08X" % (fmt_package(_data), _data) + + elif _type == TYPE_REFERENCE: + return "@%s%08X" % (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%s" % (complexToFloat(_data), DIMENSION_UNITS[_data & COMPLEX_UNIT_MASK]) + + elif _type == TYPE_FRACTION: + return "%f%s" % (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>" % (_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): + self.axml = AXMLParser(raw_buff) + + self.root = None + self.packerwarning = False + cur = [] + + while self.axml.is_valid(): + _type = next(self.axml) + + if _type == START_TAG: + name = self._fix_name(self.axml.name) + uri = self._print_namespace(self.axml.namespace) + tag = "{}{}".format(uri, name) + + comment = self.axml.comment + if comment: + if self.root is None: + log.warning("Can not attach comment with content '{}' without root!".format(comment)) + else: + cur[-1].append(etree.Comment(comment)) + + log.debug("START_TAG: {} (line={})".format(tag, self.axml.m_lineNumber)) + elem = etree.Element(tag, nsmap=self.axml.nsmap) + + for i in range(self.axml.getAttributeCount()): + uri = self._print_namespace(self.axml.getAttributeNamespace(i)) + name = self._fix_name(self.axml.getAttributeName(i)) + value = self._fix_value(self._get_attribute_value(i)) + + log.debug("found an attribute: {}{}='{}'".format(uri, name, value.encode("utf-8"))) + if "{}{}".format(uri, name) in elem.attrib: + log.warning("Duplicate attribute '{}{}'! Will overwrite!".format(uri, name)) + elem.set("{}{}".format(uri, name), value) + + if self.root is None: + self.root = elem + else: + if not cur: + # looks like we lost the root? + log.error("No more elements available to attach to! Is the XML malformed?") + break + cur[-1].append(elem) + cur.append(elem) + + if _type == END_TAG: + if not cur: + log.warning("Too many END_TAG! No more elements available to attach to!") + + name = self.axml.name + uri = self._print_namespace(self.axml.namespace) + tag = "{}{}".format(uri, name) + if cur[-1].tag != tag: + log.warning("Closing tag '{}' does not match current stack! At line number: {}. Is the XML malformed?".format(self.axml.name, self.axml.m_lineNumber)) + cur.pop() + if _type == TEXT: + log.debug("TEXT for {}".format(cur[-1])) + cur[-1].text = self.axml.text + if _type == END_DOCUMENT: + # Check if all namespace mappings are closed + if len(self.axml.namespaces) > 0: + log.warning("Not all namespace mappings were closed! Malformed AXML?") + break + + def get_buff(self): + """ + Returns the raw XML file without prettification applied. + + :returns: bytes, encoded as UTF-8 + """ + return self.get_xml(pretty=False) + + def get_xml(self, pretty=True): + """ + Get the XML as an UTF-8 string + + :returns: bytes encoded as UTF-8 + """ + return etree.tostring(self.root, encoding="utf-8", pretty_print=pretty) + + def get_xml_obj(self): + """ + Get the XML as an ElementTree object + + :returns: :class:`lxml.etree.Element` + """ + return self.root + + def is_valid(self): + """ + Return the state of the AXMLParser. + If this flag is set to False, the parsing has failed, thus + the resulting XML will not work or will even be empty. + """ + return self.axml.is_valid() + + def is_packed(self): + """ + Returns True if the AXML is likely to be packed + + Packers do some weird stuff and we try to detect it. + Sometimes the files are not packed but simply broken or compiled with + some broken version of a tool. + Some file corruption might also be appear to be a packed file. + + :returns: True if packer detected, False otherwise + """ + return self.packerwarning + + def _get_attribute_value(self, index): + """ + Wrapper function for format_value + to resolve the actual value of an attribute in a tag + :param index: index of the current attribute + :return: formatted value + """ + _type = self.axml.getAttributeValueType(index) + _data = self.axml.getAttributeValueData(index) + + return format_value(_type, _data, lambda _: self.axml.getAttributeValue(index)) + + def _fix_name(self, name): + """ + Apply some fixes to element named and attribute names. + Try to get conform to: + > Like element names, attribute names are case-sensitive and must start with a letter or underscore. + > The rest of the name can contain letters, digits, hyphens, underscores, and periods. + See: https://msdn.microsoft.com/en-us/library/ms256152(v=vs.110).aspx + + :param name: Name of the attribute + :return: a fixed version of the name + """ + if not name[0].isalpha() and name[0] != "_": + log.warning("Invalid start for name '{}'".format(name)) + self.packerwarning = True + name = "_{}".format(name) + if name.startswith("android:"): + # Seems be a common thing... + # Actually this means that the Manifest is likely to be broken, as + # usually no namespace URI is set in this case. + log.warning("Name '{}' starts with 'android:' prefix! The Manifest seems to be broken? Removing prefix.".format(name)) + self.packerwarning = True + name = name[len("android:"):] + if ":" in name: + # Print out an extra warning + log.warning("Name seems to contain a namespace prefix: '{}'".format(name)) + if not re.match(r"^[a-zA-Z0-9._-]*$", name): + log.warning("Name '{}' contains invalid characters!".format(name)) + self.packerwarning = True + name = re.sub(r"[^a-zA-Z0-9._-]", "_", name) + + return name + + def _fix_value(self, value): + """ + Return a cleaned version of a value + according to the specification: + > Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] + + See https://www.w3.org/TR/xml/#charsets + + :param value: a value to clean + :return: the cleaned value + """ + if not self.__charrange or not self.__replacement: + if sys.maxunicode == 0xFFFF: + # Fix for python 2.x, surrogate pairs does not match in regex + self.__charrange = re.compile(u'^([\u0020-\uD7FF\u0009\u000A\u000D\uE000-\uFFFD]|[\uD800-\uDBFF][\uDC00-\uDFFF])*$') + # TODO: this regex is slightly wrong... surrogates are not matched as pairs. + self.__replacement = re.compile(u'[^\u0020-\uDBFF\u0009\u000A\u000D\uE000-\uFFFD\uDC00-\uDFFF]') + else: + self.__charrange = re.compile(u'^[\u0020-\uD7FF\u0009\u000A\u000D\uE000-\uFFFD\U00010000-\U0010FFFF]*$') + self.__replacement = re.compile(u'[^\u0020-\uD7FF\u0009\u000A\u000D\uE000-\uFFFD\U00010000-\U0010FFFF]') + + # Reading string until \x00. This is the same as aapt does. + if "\x00" in value: + self.packerwarning = True + log.warning("Null byte found in attribute value at position {}: " + "Value(hex): '{}'".format( + value.find("\x00"), + binascii.hexlify(value.encode("utf-8")))) + value = value[:value.find("\x00")] + + if not self.__charrange.match(value): + log.warning("Invalid character in value found. Replacing with '_'.") + self.packerwarning = True + value = self.__replacement.sub('_', value) + return value + + def _print_namespace(self, uri): + if uri != "": + uri = "{{{}}}".format(uri) + return uri + + +ACONFIGURATION_MCC = 0x0001 +ACONFIGURATION_MNC = 0x0002 +ACONFIGURATION_LOCALE = 0x0004 +ACONFIGURATION_TOUCHSCREEN = 0x0008 +ACONFIGURATION_KEYBOARD = 0x0010 +ACONFIGURATION_KEYBOARD_HIDDEN = 0x0020 +ACONFIGURATION_NAVIGATION = 0x0040 +ACONFIGURATION_ORIENTATION = 0x0080 +ACONFIGURATION_DENSITY = 0x0100 +ACONFIGURATION_SCREEN_SIZE = 0x0200 +ACONFIGURATION_VERSION = 0x0400 +ACONFIGURATION_SCREEN_LAYOUT = 0x0800 +ACONFIGURATION_UI_MODE = 0x1000 +ACONFIGURATION_LAYOUTDIR_ANY = 0x00 +ACONFIGURATION_LAYOUTDIR_LTR = 0x01 +ACONFIGURATION_LAYOUTDIR_RTL = 0x02 +ACONFIGURATION_SCREENSIZE_ANY = 0x00 +ACONFIGURATION_SCREENSIZE_SMALL = 0x01 +ACONFIGURATION_SCREENSIZE_NORMAL = 0x02 +ACONFIGURATION_SCREENSIZE_LARGE = 0x03 +ACONFIGURATION_SCREENSIZE_XLARGE = 0x04 +ACONFIGURATION_SCREENLONG_ANY = 0x00 +ACONFIGURATION_SCREENLONG_NO = 0x1 +ACONFIGURATION_SCREENLONG_YES = 0x2 +ACONFIGURATION_TOUCHSCREEN_ANY = 0x0000 +ACONFIGURATION_TOUCHSCREEN_NOTOUCH = 0x0001 +ACONFIGURATION_TOUCHSCREEN_STYLUS = 0x0002 +ACONFIGURATION_TOUCHSCREEN_FINGER = 0x0003 +ACONFIGURATION_DENSITY_DEFAULT = 0 +ACONFIGURATION_DENSITY_LOW = 120 +ACONFIGURATION_DENSITY_MEDIUM = 160 +ACONFIGURATION_DENSITY_TV = 213 +ACONFIGURATION_DENSITY_HIGH = 240 +ACONFIGURATION_DENSITY_XHIGH = 320 +ACONFIGURATION_DENSITY_XXHIGH = 480 +ACONFIGURATION_DENSITY_XXXHIGH = 640 +ACONFIGURATION_DENSITY_ANY = 0xfffe +ACONFIGURATION_DENSITY_NONE = 0xffff +MASK_LAYOUTDIR = 0xC0 +MASK_SCREENSIZE = 0x0f +MASK_SCREENLONG = 0x30 +SHIFT_LAYOUTDIR = 6 +SHIFT_SCREENLONG = 4 +LAYOUTDIR_ANY = ACONFIGURATION_LAYOUTDIR_ANY << SHIFT_LAYOUTDIR +LAYOUTDIR_LTR = ACONFIGURATION_LAYOUTDIR_LTR << SHIFT_LAYOUTDIR +LAYOUTDIR_RTL = ACONFIGURATION_LAYOUTDIR_RTL << SHIFT_LAYOUTDIR +SCREENSIZE_ANY = ACONFIGURATION_SCREENSIZE_ANY +SCREENSIZE_SMALL = ACONFIGURATION_SCREENSIZE_SMALL +SCREENSIZE_NORMAL = ACONFIGURATION_SCREENSIZE_NORMAL +SCREENSIZE_LARGE = ACONFIGURATION_SCREENSIZE_LARGE +SCREENSIZE_XLARGE = ACONFIGURATION_SCREENSIZE_XLARGE +SCREENLONG_ANY = ACONFIGURATION_SCREENLONG_ANY << SHIFT_SCREENLONG +SCREENLONG_NO = ACONFIGURATION_SCREENLONG_NO << SHIFT_SCREENLONG +SCREENLONG_YES = ACONFIGURATION_SCREENLONG_YES << SHIFT_SCREENLONG +DENSITY_DEFAULT = ACONFIGURATION_DENSITY_DEFAULT +DENSITY_LOW = ACONFIGURATION_DENSITY_LOW +DENSITY_MEDIUM = ACONFIGURATION_DENSITY_MEDIUM +DENSITY_TV = ACONFIGURATION_DENSITY_TV +DENSITY_HIGH = ACONFIGURATION_DENSITY_HIGH +DENSITY_XHIGH = ACONFIGURATION_DENSITY_XHIGH +DENSITY_XXHIGH = ACONFIGURATION_DENSITY_XXHIGH +DENSITY_XXXHIGH = ACONFIGURATION_DENSITY_XXXHIGH +DENSITY_ANY = ACONFIGURATION_DENSITY_ANY +DENSITY_NONE = ACONFIGURATION_DENSITY_NONE +TOUCHSCREEN_ANY = ACONFIGURATION_TOUCHSCREEN_ANY +TOUCHSCREEN_NOTOUCH = ACONFIGURATION_TOUCHSCREEN_NOTOUCH +TOUCHSCREEN_STYLUS = ACONFIGURATION_TOUCHSCREEN_STYLUS +TOUCHSCREEN_FINGER = ACONFIGURATION_TOUCHSCREEN_FINGER + + +class ARSCParser(object): + """ + Parser for resource.arsc files + + The ARSC File is, like the binary XML format, a chunk based format. + Both formats are actually identical but use different chunks in order to store the data. + + The most outer chunk in the ARSC file is a chunk of type RES_TABLE_TYPE. + Inside this chunk is a StringPool and at least one package. + + Each package is a chunk of type RES_TABLE_PACKAGE_TYPE. + It contains again many more chunks. + """ + def __init__(self, raw_buff): + """ + :param bytes raw_buff: the raw bytes of the file + """ + self.buff = bytecode.BuffHandle(raw_buff) + + if self.buff.size() < 8 or self.buff.size() > 0xFFFFFFFF: + raise ResParserError("Invalid file size {} for a resources.arsc file!".format(self.buff.size())) + + self.analyzed = False + self._resolved_strings = None + self.packages = defaultdict(list) + self.values = {} + self.resource_values = defaultdict(defaultdict) + self.resource_configs = defaultdict(lambda: defaultdict(set)) + self.resource_keys = defaultdict(lambda: defaultdict(defaultdict)) + self.stringpool_main = None + + # First, there is a ResTable_header. + self.header = ARSCHeader(self.buff, expected_type=RES_TABLE_TYPE) + + # More sanity checks... + if self.header.header_size != 12: + log.warning("The ResTable_header has an unexpected header size! Expected 12 bytes, got {}.".format(self.header.header_size)) + + if self.header.size > self.buff.size(): + raise ResParserError("The file seems to be truncated. Refuse to parse the file! Filesize: {}, declared size: {}".format(self.buff.size(), self.header.size)) + + if self.header.size < self.buff.size(): + log.warning("The Resource file seems to have data appended to it. Filesize: {}, declared size: {}".format(self.buff.size(), self.header.size)) + + # The ResTable_header contains the packageCount, i.e. the number of ResTable_package + self.packageCount = unpack(' self.header.end: + # this inner chunk crosses the boundary of the table chunk + log.warning("Invalid chunk found! It is larger than the outer chunk: %s", res_header) + break + + if res_header.type == RES_STRING_POOL_TYPE: + # There should be only one StringPool per resource table. + if self.stringpool_main: + log.warning("Already found a ResStringPool_header, but there should be only one! Will not parse the Pool again.") + else: + self.stringpool_main = StringBlock(self.buff, res_header) + log.debug("Found the main string pool: %s", self.stringpool_main) + + elif res_header.type == RES_TABLE_PACKAGE_TYPE: + if len(self.packages) > self.packageCount: + raise ResParserError("Got more packages ({}) than expected ({})".format(len(self.packages), self.packageCount)) + + current_package = ARSCResTablePackage(self.buff, res_header) + package_name = current_package.get_name() + + # After the Header, we have the resource type symbol table + self.buff.set_idx(current_package.header.start + current_package.typeStrings) + type_sp_header = ARSCHeader(self.buff, expected_type=RES_STRING_POOL_TYPE) + mTableStrings = StringBlock(self.buff, type_sp_header) + + # Next, we should have the resource key symbol table + self.buff.set_idx(current_package.header.start + current_package.keyStrings) + key_sp_header = ARSCHeader(self.buff, expected_type=RES_STRING_POOL_TYPE) + mKeyStrings = StringBlock(self.buff, key_sp_header) + + # Add them to the dict of read packages + self.packages[package_name].append(current_package) + self.packages[package_name].append(mTableStrings) + self.packages[package_name].append(mKeyStrings) + + pc = PackageContext(current_package, self.stringpool_main, mTableStrings, mKeyStrings) + log.debug("Constructed a PackageContext: %s", pc) + + # skip to the first header in this table package chunk + # FIXME is this correct? We have already read the first two sections! + # self.buff.set_idx(res_header.start + res_header.header_size) + # this looks more like we want: (???) + # FIXME it looks like that the two string pools we have read might not be concatenated to each other, + # thus jumping to the sum of the sizes might not be correct... + next_idx = res_header.start + res_header.header_size + type_sp_header.size + key_sp_header.size + + if next_idx != self.buff.tell(): + # If this happens, we have a testfile ;) + log.error("This looks like an odd resources.arsc file!") + log.error("Please report this error including the file you have parsed!") + log.error("next_idx = {}, current buffer position = {}".format(next_idx, self.buff.tell())) + log.error("Please open a issue at https://github.com/androguard/androguard/issues") + log.error("Thank you!") + + self.buff.set_idx(next_idx) + + # Read all other headers + while self.buff.get_idx() <= res_header.end - ARSCHeader.SIZE: + pkg_chunk_header = ARSCHeader(self.buff) + log.debug("Found a header: {}".format(pkg_chunk_header)) + if pkg_chunk_header.start + pkg_chunk_header.size > res_header.end: + # we are way off the package chunk; bail out + break + + self.packages[package_name].append(pkg_chunk_header) + + if pkg_chunk_header.type == RES_TABLE_TYPE_SPEC_TYPE: + self.packages[package_name].append(ARSCResTypeSpec(self.buff, pc)) + + elif pkg_chunk_header.type == RES_TABLE_TYPE_TYPE: + # Parse a RES_TABLE_TYPE + # http://androidxref.com/9.0.0_r3/xref/frameworks/base/tools/aapt2/format/binary/BinaryResourceParser.cpp#311 + a_res_type = ARSCResType(self.buff, pc) + self.packages[package_name].append(a_res_type) + self.resource_configs[package_name][a_res_type].add(a_res_type.config) + + log.debug("Config: {}".format(a_res_type.config)) + + entries = [] + for i in range(0, a_res_type.entryCount): + current_package.mResId = current_package.mResId & 0xffff0000 | i + entries.append((unpack('> 24) & 0xFF), + ((entry_data >> 16) & 0xFF), + ((entry_data >> 8) & 0xFF), + (entry_data & 0xFF)) + ] + + def get_resource_dimen(self, ate): + try: + return [ + ate.get_value(), "%s%s" % ( + complexToFloat(ate.key.get_data()), + DIMENSION_UNITS[ate.key.get_data() & COMPLEX_UNIT_MASK]) + ] + except IndexError: + log.debug("Out of range dimension unit index for %s: %s" % ( + complexToFloat(ate.key.get_data()), + ate.key.get_data() & COMPLEX_UNIT_MASK)) + return [ate.get_value(), ate.key.get_data()] + + # FIXME + def get_resource_style(self, ate): + return ["", ""] + + def get_packages_names(self): + """ + Retrieve a list of all package names, which are available + in the given resources.arsc. + """ + return list(self.packages.keys()) + + def get_locales(self, package_name): + """ + Retrieve a list of all available locales in a given packagename. + + :param package_name: the package name to get locales of + """ + self._analyse() + return list(self.values[package_name].keys()) + + def get_types(self, package_name, locale='\x00\x00'): + """ + Retrieve a list of all types which are available in the given + package and locale. + + :param package_name: the package name to get types of + :param locale: the locale to get types of (default: '\x00\x00') + """ + self._analyse() + return list(self.values[package_name][locale].keys()) + + def get_public_resources(self, package_name, locale='\x00\x00'): + """ + Get the XML (as string) of all resources of type 'public'. + + The public resources table contains the IDs for each item. + + :param package_name: the package name to get the resources for + :param locale: the locale to get the resources for (default: '\x00\x00') + """ + + self._analyse() + + buff = '\n' + buff += '\n' + + try: + for i in self.values[package_name][locale]["public"]: + buff += '\n' % ( + i[0], i[1], i[2]) + except KeyError: + pass + + buff += '\n' + + return buff.encode('utf-8') + + def get_string_resources(self, package_name, locale='\x00\x00'): + """ + Get the XML (as string) of all resources of type 'string'. + + Read more about string resources: + https://developer.android.com/guide/topics/resources/string-resource.html + + :param package_name: the package name to get the resources for + :param locale: the locale to get the resources for (default: '\x00\x00') + """ + self._analyse() + + buff = '\n' + buff += '\n' + + try: + for i in self.values[package_name][locale]["string"]: + if any(map(i[1].__contains__, '<&>')): + value = '' % i[1] + else: + value = i[1] + buff += '%s\n' % (i[0], value) + except KeyError: + pass + + buff += '\n' + + return buff.encode('utf-8') + + def get_strings_resources(self): + """ + Get the XML (as string) of all resources of type 'string'. + This is a combined variant, which has all locales and all package names + stored. + """ + self._analyse() + + buff = '\n' + + buff += "\n" + for package_name in self.get_packages_names(): + buff += "\n" % package_name + + for locale in self.get_locales(package_name): + buff += "\n" % repr(locale) + + buff += '\n' + try: + for i in self.values[package_name][locale]["string"]: + buff += '%s\n' % (i[0], escape(i[1])) + except KeyError: + pass + + buff += '\n' + buff += '\n' + + buff += "\n" + + buff += "\n" + + return buff.encode('utf-8') + + def get_id_resources(self, package_name, locale='\x00\x00'): + """ + Get the XML (as string) of all resources of type 'id'. + + Read more about ID resources: + https://developer.android.com/guide/topics/resources/more-resources.html#Id + + :param package_name: the package name to get the resources for + :param locale: the locale to get the resources for (default: '\x00\x00') + """ + self._analyse() + + buff = '\n' + buff += '\n' + + try: + for i in self.values[package_name][locale]["id"]: + if len(i) == 1: + buff += '\n' % (i[0]) + else: + buff += '%s\n' % (i[0], + escape(i[1])) + except KeyError: + pass + + buff += '\n' + + return buff.encode('utf-8') + + def get_bool_resources(self, package_name, locale='\x00\x00'): + """ + Get the XML (as string) of all resources of type 'bool'. + + Read more about bool resources: + https://developer.android.com/guide/topics/resources/more-resources.html#Bool + + :param package_name: the package name to get the resources for + :param locale: the locale to get the resources for (default: '\x00\x00') + """ + self._analyse() + + buff = '\n' + buff += '\n' + + try: + for i in self.values[package_name][locale]["bool"]: + buff += '%s\n' % (i[0], i[1]) + except KeyError: + pass + + buff += '\n' + + return buff.encode('utf-8') + + def get_integer_resources(self, package_name, locale='\x00\x00'): + """ + Get the XML (as string) of all resources of type 'integer'. + + Read more about integer resources: + https://developer.android.com/guide/topics/resources/more-resources.html#Integer + + :param package_name: the package name to get the resources for + :param locale: the locale to get the resources for (default: '\x00\x00') + """ + self._analyse() + + buff = '\n' + buff += '\n' + + try: + for i in self.values[package_name][locale]["integer"]: + buff += '%s\n' % (i[0], i[1]) + except KeyError: + pass + + buff += '\n' + + return buff.encode('utf-8') + + def get_color_resources(self, package_name, locale='\x00\x00'): + """ + Get the XML (as string) of all resources of type 'color'. + + Read more about color resources: + https://developer.android.com/guide/topics/resources/more-resources.html#Color + + :param package_name: the package name to get the resources for + :param locale: the locale to get the resources for (default: '\x00\x00') + """ + self._analyse() + + buff = '\n' + buff += '\n' + + try: + for i in self.values[package_name][locale]["color"]: + buff += '%s\n' % (i[0], i[1]) + except KeyError: + pass + + buff += '\n' + + return buff.encode('utf-8') + + def get_dimen_resources(self, package_name, locale='\x00\x00'): + """ + Get the XML (as string) of all resources of type 'dimen'. + + Read more about Dimension resources: + https://developer.android.com/guide/topics/resources/more-resources.html#Dimension + + :param package_name: the package name to get the resources for + :param locale: the locale to get the resources for (default: '\x00\x00') + """ + self._analyse() + + buff = '\n' + buff += '\n' + + try: + for i in self.values[package_name][locale]["dimen"]: + buff += '%s\n' % (i[0], i[1]) + except KeyError: + pass + + buff += '\n' + + return buff.encode('utf-8') + + def get_id(self, package_name, rid, locale='\x00\x00'): + """ + Returns the tuple (resource_type, resource_name, resource_id) + for the given resource_id. + + :param package_name: package name to query + :param rid: the resource_id + :param locale: specific locale + :return: tuple of (resource_type, resource_name, resource_id) + """ + self._analyse() + + try: + for i in self.values[package_name][locale]["public"]: + if i[2] == rid: + return i + except KeyError: + pass + return None, None, None + + class ResourceResolver(object): + """ + Resolves resources by ID and configuration. + This resolver deals with complex resources as well as with references. + """ + def __init__(self, android_resources, config=None): + """ + :param ARSCParser android_resources: A resource parser + :param ARSCResTableConfig config: The desired configuration or None to resolve all. + """ + self.resources = android_resources + self.wanted_config = config + + def resolve(self, res_id): + """ + the given ID into the Resource and returns a list of matching resources. + + :param int res_id: numerical ID of the resource + :return: a list of tuples of (ARSCResTableConfig, str) + """ + result = [] + self._resolve_into_result(result, res_id, self.wanted_config) + return result + + def _resolve_into_result(self, result, res_id, config): + # First: Get all candidates + configs = self.resources.get_res_configs(res_id, config) + + for config, ate in configs: + # deconstruct them and check if more candidates are generated + self.put_ate_value(result, ate, config) + + def put_ate_value(self, result, ate, config): + """ + Put a ResTableEntry into the list of results + :param list result: results array + :param ARSCResTableEntry ate: + :param ARSCResTableConfig config: + :return: + """ + if ate.is_complex(): + complex_array = [] + result.append((config, complex_array)) + for _, item in ate.item.items: + self.put_item_value(complex_array, item, config, ate, complex_=True) + else: + self.put_item_value(result, ate.key, config, ate, complex_=False) + + def put_item_value(self, result, item, config, parent, complex_): + """ + Put the tuple (ARSCResTableConfig, resolved string) into the result set + + :param list result: the result set + :param ARSCResStringPoolRef item: + :param ARSCResTableConfig config: + :param ARSCResTableEntry parent: the originating entry + :param bool complex_: True if the originating :class:`ARSCResTableEntry` was complex + :return: + """ + if item.is_reference(): + res_id = item.get_data() + if res_id: + # Infinite loop detection: + # TODO should this stay here or should be detect the loop much earlier? + if res_id == parent.mResId: + log.warning("Infinite loop detected at resource item {}. It references itself!".format(parent)) + return + + self._resolve_into_result(result, item.get_data(), self.wanted_config) + else: + if complex_: + result.append(item.format_value()) + else: + result.append((config, item.format_value())) + + def get_resolved_res_configs(self, rid, config=None): + """ + Return a list of resolved resource IDs with their corresponding configuration. + It has a similar return type as :meth:`get_res_configs` but also handles complex entries + and references. + Also instead of returning :class:`ARSCResTableEntry` in the tuple, the actual values are resolved. + + This is the preferred way of resolving resource IDs to their resources. + + :param int rid: the numerical ID of the resource + :param ARSCTableResConfig config: the desired configuration or None to retrieve all + :return: A list of tuples of (ARSCResTableConfig, str) + """ + resolver = ARSCParser.ResourceResolver(self, config) + return resolver.resolve(rid) + + def get_resolved_strings(self): + self._analyse() + if self._resolved_strings: + return self._resolved_strings + + r = {} + for package_name in self.get_packages_names(): + r[package_name] = {} + k = {} + + for locale in self.values[package_name]: + v_locale = locale + if v_locale == '\x00\x00': + v_locale = 'DEFAULT' + + r[package_name][v_locale] = {} + + try: + for i in self.values[package_name][locale]["public"]: + if i[0] == 'string': + r[package_name][v_locale][i[2]] = None + k[i[1]] = i[2] + except KeyError: + pass + + try: + for i in self.values[package_name][locale]["string"]: + if i[0] in k: + r[package_name][v_locale][k[i[0]]] = i[1] + except KeyError: + pass + + self._resolved_strings = r + return r + + def get_res_configs(self, rid, config=None, fallback=True): + """ + Return the resources found with the ID `rid` and select + the right one based on the configuration, or return all if no configuration was set. + + But we try to be generous here and at least try to resolve something: + This method uses a fallback to return at least one resource (the first one in the list) + if more than one items are found and the default config is used and no default entry could be found. + + This is usually a bad sign (i.e. the developer did not follow the android documentation: + https://developer.android.com/guide/topics/resources/localization.html#failing2) + In practise an app might just be designed to run on a single locale and thus only has those locales set. + + You can disable this fallback behaviour, to just return exactly the given result. + + :param rid: resource id as int + :param config: a config to resolve from, or None to get all results + :param fallback: Enable the fallback for resolving default configuration (default: True) + :return: a list of ARSCResTableConfig: ARSCResTableEntry + """ + self._analyse() + + if not rid: + raise ValueError("'rid' should be set") + if not isinstance(rid, int): + raise ValueError("'rid' must be an int") + + if rid not in self.resource_values: + log.warning("The requested rid '0x{:08x}' could not be found in the list of resources.".format(rid)) + return [] + + res_options = self.resource_values[rid] + if len(res_options) > 1 and config: + if config in res_options: + return [(config, res_options[config])] + elif fallback and config == ARSCResTableConfig.default_config(): + log.warning("No default resource config could be found for the given rid '0x{:08x}', using fallback!".format(rid)) + return [list(self.resource_values[rid].items())[0]] + else: + return [] + else: + return list(res_options.items()) + + def get_string(self, package_name, name, locale='\x00\x00'): + self._analyse() + + try: + for i in self.values[package_name][locale]["string"]: + if i[0] == name: + return i + except KeyError: + return None + + def get_res_id_by_key(self, package_name, resource_type, key): + try: + return self.resource_keys[package_name][resource_type][key] + except KeyError: + return None + + def get_items(self, package_name): + self._analyse() + return self.packages[package_name] + + def get_type_configs(self, package_name, type_name=None): + if package_name is None: + package_name = self.get_packages_names()[0] + result = collections.defaultdict(list) + + for res_type, configs in list(self.resource_configs[package_name].items()): + if res_type.get_package_name() == package_name and ( + type_name is None or res_type.get_type() == type_name): + result[res_type.get_type()].extend(configs) + + return result + + @staticmethod + def parse_id(name): + """ + Resolves an id from a binary XML file in the form "@[package:]DEADBEEF" + and returns a tuple of package name and resource id. + If no package name was given, i.e. the ID has the form "@DEADBEEF", + the package name is set to None. + + Raises a ValueError if the id is malformed. + + :param name: the string of the resource, as in the binary XML file + :return: a tuple of (resource_id, package_name). + """ + + if not name.startswith('@'): + raise ValueError("Not a valid resource ID, must start with @: '{}'".format(name)) + + # remove @ + name = name[1:] + + package = None + if ':' in name: + package, res_id = name.split(':', 1) + else: + res_id = name + + if len(res_id) != 8: + raise ValueError("Numerical ID is not 8 characters long: '{}'".format(res_id)) + + try: + return int(res_id, 16), package + except ValueError: + raise ValueError("ID is not a hex ID: '{}'".format(res_id)) + + def get_resource_xml_name(self, r_id, package=None): + """ + Returns the XML name for a resource, including the package name if package is None. + A full name might look like `@com.example:string/foobar` + Otherwise the name is only looked up in the specified package and is returned without + the package name. + The same example from about without the package name will read as `@string/foobar`. + + If the ID could not be found, `None` is returned. + + A description of the XML name can be found here: + https://developer.android.com/guide/topics/resources/providing-resources#ResourcesFromXml + + :param r_id: numerical ID if the resource + :param package: package name + :return: XML name identifier + """ + if package: + resource, name, i_id = self.get_id(package, r_id) + if not i_id: + return None + return "@{}/{}".format(resource, name) + else: + for p in self.get_packages_names(): + r, n, i_id = self.get_id(p, r_id) + if i_id: + # found the resource in this package + package = p + resource = r + name = n + break + if not package: + return None + else: + return "@{}:{}/{}".format(package, resource, name) + + +class PackageContext(object): + def __init__(self, current_package, stringpool_main, mTableStrings, mKeyStrings): + """ + :param ARSCResTablePackage current_package: + :param StringBlock stringpool_main: + :param StringBlock mTableStrings: + :param StringBlock mKeyStrings: + """ + self.stringpool_main = stringpool_main + self.mTableStrings = mTableStrings + self.mKeyStrings = mKeyStrings + self.current_package = current_package + + def get_mResId(self): + return self.current_package.mResId + + def set_mResId(self, mResId): + self.current_package.mResId = mResId + + def get_package_name(self): + return self.current_package.get_name() + + def __repr__(self): + return "".format(self.current_package, + self.stringpool_main, + self.mTableStrings, + self.mKeyStrings) + + +class ARSCHeader(object): + """ + Object which contains a Resource Chunk. + This is an implementation of the `ResChunk_header`. + + It will throw an :class:`ResParserError` if the header could not be read successfully. + + It is not checked if the data is outside the buffer size nor if the current + chunk fits into the parent chunk (if any)! + + The parameter `expected_type` can be used to immediately check the header for the type or raise a :class:`ResParserError`. + This is useful if you know what type of chunk must follow. + + See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#196 + :raises: ResParserError + """ + + # This is the minimal size such a header must have. There might be other header data too! + SIZE = 2 + 2 + 4 + + def __init__(self, buff, expected_type=None): + """ + :param androguard.core.bytecode.BuffHandle buff: the buffer set to the position where the header starts. + :param int expected_type: the type of the header which is expected. + """ + self.start = buff.get_idx() + # Make sure we do not read over the buffer: + if buff.size() < self.start + self.SIZE: + raise ResParserError("Can not read over the buffer size! Offset={}".format(self.start)) + + self._type, self._header_size, self._size = unpack('".format(self.start, + self.type, + self.header_size, + self.size) + + +class ARSCResTablePackage(object): + """ + A `ResTable_package` + + See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#861 + """ + def __init__(self, buff, header): + self.header = header + self.start = buff.get_idx() + self.id = unpack(' read 256 bytes + # TODO why not read a null terminated string in buffer (like the meth name suggests) instead of parsing it later in get_name()? + self.name = buff.readNullString(256) + self.typeStrings = unpack('" % ( + self.start, + self.id, + self.flags, + self.entryCount, + self.entriesStart, + self.mResId, + "table:" + self.parent.mTableStrings.getString(self.id - 1) + ) + + +class ARSCResTableConfig(object): + """ + ARSCResTableConfig contains the configuration for specific resource selection. + This is used on the device to determine which resources should be loaded + based on different properties of the device like locale or displaysize. + + See the definition of `ResTable_config` in + http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#911 + """ + @classmethod + def default_config(cls): + if not hasattr(cls, 'DEFAULT'): + cls.DEFAULT = ARSCResTableConfig(None) + return cls.DEFAULT + + def __init__(self, buff=None, **kwargs): + if buff is not None: + self.start = buff.get_idx() + + # uint32_t + self.size = unpack('= 32: + # struct of + # uint8_t screenLayout + # uint8_t uiMode + # uint16_t smallestScreenWidthDp + self.screenConfig, = unpack('= 36: + # struct of + # uint16_t screenWidthDp + # uint16_t screenHeightDp + self.screenSizeDp, = unpack('= 40: + # struct of + # uint8_t screenLayout2 + # uint8_t colorMode + # uint16_t screenConfigPad2 + self.screenConfig2, = unpack(" 0: + log.debug("Skipping padding bytes!") + self.padding = buff.read(self.exceedingSize) + + else: + self.start = 0 + self.size = 0 + self.imsi = \ + ((kwargs.pop('mcc', 0) & 0xffff) << 0) + \ + ((kwargs.pop('mnc', 0) & 0xffff) << 16) + + self.locale = 0 + for char_ix, char in kwargs.pop('locale', "")[0:4]: + self.locale += (ord(char) << (char_ix * 8)) + + self.screenType = \ + ((kwargs.pop('orientation', 0) & 0xff) << 0) + \ + ((kwargs.pop('touchscreen', 0) & 0xff) << 8) + \ + ((kwargs.pop('density', 0) & 0xffff) << 16) + + self.input = \ + ((kwargs.pop('keyboard', 0) & 0xff) << 0) + \ + ((kwargs.pop('navigation', 0) & 0xff) << 8) + \ + ((kwargs.pop('inputFlags', 0) & 0xff) << 16) + \ + ((kwargs.pop('inputPad0', 0) & 0xff) << 24) + + self.screenSize = \ + ((kwargs.pop('screenWidth', 0) & 0xffff) << 0) + \ + ((kwargs.pop('screenHeight', 0) & 0xffff) << 16) + + self.version = \ + ((kwargs.pop('sdkVersion', 0) & 0xffff) << 0) + \ + ((kwargs.pop('minorVersion', 0) & 0xffff) << 16) + + self.screenConfig = \ + ((kwargs.pop('screenLayout', 0) & 0xff) << 0) + \ + ((kwargs.pop('uiMode', 0) & 0xff) << 8) + \ + ((kwargs.pop('smallestScreenWidthDp', 0) & 0xffff) << 16) + + self.screenSizeDp = \ + ((kwargs.pop('screenWidthDp', 0) & 0xffff) << 0) + \ + ((kwargs.pop('screenHeightDp', 0) & 0xffff) << 16) + + # TODO add this some day... + self.screenConfig2 = 0 + + self.exceedingSize = 0 + + def _unpack_language_or_region(self, char_in, char_base): + char_out = "" + if char_in[0] & 0x80: + first = char_in[1] & 0x1f + second = ((char_in[1] & 0xe0) >> 5) + ((char_in[0] & 0x03) << 3) + third = (char_in[0] & 0x7c) >> 2 + char_out += chr(first + char_base) + char_out += chr(second + char_base) + char_out += chr(third + char_base) + else: + if char_in[0]: + char_out += chr(char_in[0]) + if char_in[1]: + char_out += chr(char_in[1]) + return char_out + + def get_language_and_region(self): + """ + Returns the combined language+region string or \x00\x00 for the default locale + :return: + """ + if self.locale != 0: + _language = self._unpack_language_or_region([self.locale & 0xff, (self.locale & 0xff00) >> 8, ], ord('a')) + _region = self._unpack_language_or_region([(self.locale & 0xff0000) >> 16, (self.locale & 0xff000000) >> 24, ], ord('0')) + return (_language + "-r" + _region) if _region else _language + return "\x00\x00" + + def get_config_name_friendly(self): + """ + Here for legacy reasons. + + use :meth:`~get_qualifier` instead. + """ + return self.get_qualifier() + + def get_qualifier(self): + """ + Return resource name qualifier for the current configuration. + for example + * `ldpi-v4` + * `hdpi-v4` + + All possible qualifiers are listed in table 2 of https://developer.android.com/guide/topics/resources/providing-resources + + ..todo:: This name might not have all properties set! Therefore returned values might not reflect the true qualifier name! + :return: str + """ + res = [] + + mcc = self.imsi & 0xFFFF + mnc = (self.imsi & 0xFFFF0000) >> 16 + if mcc != 0: + res.append("mcc%d" % mcc) + if mnc != 0: + res.append("mnc%d" % mnc) + + if self.locale != 0: + res.append(self.get_language_and_region()) + + screenLayout = self.screenConfig & 0xff + if (screenLayout & MASK_LAYOUTDIR) != 0: + if screenLayout & MASK_LAYOUTDIR == LAYOUTDIR_LTR: + res.append("ldltr") + elif screenLayout & MASK_LAYOUTDIR == LAYOUTDIR_RTL: + res.append("ldrtl") + else: + res.append("layoutDir_%d" % (screenLayout & MASK_LAYOUTDIR)) + + smallestScreenWidthDp = (self.screenConfig & 0xFFFF0000) >> 16 + if smallestScreenWidthDp != 0: + res.append("sw%ddp" % smallestScreenWidthDp) + + screenWidthDp = self.screenSizeDp & 0xFFFF + screenHeightDp = (self.screenSizeDp & 0xFFFF0000) >> 16 + if screenWidthDp != 0: + res.append("w%ddp" % screenWidthDp) + if screenHeightDp != 0: + res.append("h%ddp" % screenHeightDp) + + if (screenLayout & MASK_SCREENSIZE) != SCREENSIZE_ANY: + if screenLayout & MASK_SCREENSIZE == SCREENSIZE_SMALL: + res.append("small") + elif screenLayout & MASK_SCREENSIZE == SCREENSIZE_NORMAL: + res.append("normal") + elif screenLayout & MASK_SCREENSIZE == SCREENSIZE_LARGE: + res.append("large") + elif screenLayout & MASK_SCREENSIZE == SCREENSIZE_XLARGE: + res.append("xlarge") + else: + res.append("screenLayoutSize_%d" % (screenLayout & MASK_SCREENSIZE)) + if (screenLayout & MASK_SCREENLONG) != 0: + if screenLayout & MASK_SCREENLONG == SCREENLONG_NO: + res.append("notlong") + elif screenLayout & MASK_SCREENLONG == SCREENLONG_YES: + res.append("long") + else: + res.append("screenLayoutLong_%d" % (screenLayout & MASK_SCREENLONG)) + + density = (self.screenType & 0xffff0000) >> 16 + if density != DENSITY_DEFAULT: + if density == DENSITY_LOW: + res.append("ldpi") + elif density == DENSITY_MEDIUM: + res.append("mdpi") + elif density == DENSITY_TV: + res.append("tvdpi") + elif density == DENSITY_HIGH: + res.append("hdpi") + elif density == DENSITY_XHIGH: + res.append("xhdpi") + elif density == DENSITY_XXHIGH: + res.append("xxhdpi") + elif density == DENSITY_XXXHIGH: + res.append("xxxhdpi") + elif density == DENSITY_NONE: + res.append("nodpi") + elif density == DENSITY_ANY: + res.append("anydpi") + else: + res.append("%ddpi" % (density)) + + touchscreen = (self.screenType & 0xff00) >> 8 + if touchscreen != TOUCHSCREEN_ANY: + if touchscreen == TOUCHSCREEN_NOTOUCH: + res.append("notouch") + elif touchscreen == TOUCHSCREEN_FINGER: + res.append("finger") + elif touchscreen == TOUCHSCREEN_STYLUS: + res.append("stylus") + else: + res.append("touchscreen_%d" % touchscreen) + + screenSize = self.screenSize + if screenSize != 0: + screenWidth = self.screenSize & 0xffff + screenHeight = (self.screenSize & 0xffff0000) >> 16 + res.append("%dx%d" % (screenWidth, screenHeight)) + + version = self.version + if version != 0: + sdkVersion = self.version & 0xffff + minorVersion = (self.version & 0xffff0000) >> 16 + res.append("v%d" % sdkVersion) + if minorVersion != 0: + res.append(".%d" % minorVersion) + + return "-".join(res) + + def get_language(self): + x = self.locale & 0x0000ffff + return chr(x & 0x00ff) + chr((x & 0xff00) >> 8) + + def get_country(self): + x = (self.locale & 0xffff0000) >> 16 + return chr(x & 0x00ff) + chr((x & 0xff00) >> 8) + + def get_density(self): + x = ((self.screenType >> 16) & 0xffff) + return x + + def is_default(self): + """ + Test if this is a default resource, which matches all + + This is indicated that all fields are zero. + :return: True if default, False otherwise + """ + return all(map(lambda x: x == 0, self._get_tuple())) + + def _get_tuple(self): + return ( + self.imsi, + self.locale, + self.screenType, + self.input, + self.screenSize, + self.version, + self.screenConfig, + self.screenSizeDp, + self.screenConfig2, + ) + + def __hash__(self): + return hash(self._get_tuple()) + + def __eq__(self, other): + return self._get_tuple() == other._get_tuple() + + def __repr__(self): + return "".format(self.get_qualifier(), repr(self._get_tuple())) + + +class ARSCResTableEntry(object): + """ + A `ResTable_entry`. + + See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#1458 + """ + # If set, this is a complex entry, holding a set of name/value + # mappings. It is followed by an array of ResTable_map structures. + FLAG_COMPLEX = 1 + + # If set, this resource has been declared public, so libraries + # are allowed to reference it. + FLAG_PUBLIC = 2 + + # If set, this is a weak resource and may be overriden by strong + # resources of the same name/type. This is only useful during + # linking with other resource tables. + FLAG_WEAK = 4 + + def __init__(self, buff, mResId, parent=None): + self.start = buff.get_idx() + self.mResId = mResId + self.parent = parent + + self.size = unpack('".format( + self.start, + self.mResId, + self.size, + self.flags, + self.index, + self.item if self.is_complex() else self.key) + + +class ARSCComplex(object): + """ + This is actually a `ResTable_map_entry` + + It contains a set of {name: value} mappings, which are of type `ResTable_map`. + A `ResTable_map` contains two items: `ResTable_ref` and `Res_value`. + + See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#1485 for `ResTable_map_entry` + and http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#1498 for `ResTable_map` + """ + def __init__(self, buff, parent=None): + self.start = buff.get_idx() + self.parent = parent + + self.id_parent = unpack('".format(self.start, self.id_parent, self.count) + + +class ARSCResStringPoolRef(object): + """ + This is actually a `Res_value` + It holds information about the stored resource value + + See: http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#262 + """ + def __init__(self, buff, parent=None): + self.start = buff.get_idx() + self.parent = parent + + self.size, = unpack("".format( + self.start, + self.size, + TYPE_TABLE.get(self.data_type, "0x%x" % self.data_type), + self.data) + + +def get_arsc_info(arscobj): + """ + Return a string containing all resources packages ordered by packagename, locale and type. + + :param arscobj: :class:`~ARSCParser` + :return: a string + """ + buff = "" + for package in arscobj.get_packages_names(): + buff += package + ":\n" + for locale in arscobj.get_locales(package): + buff += "\t" + repr(locale) + ":\n" + for ttype in arscobj.get_types(package, locale): + buff += "\t\t" + ttype + ":\n" + try: + tmp_buff = getattr(arscobj, "get_" + ttype + "_resources")( + package, locale).decode("utf-8", 'replace').split("\n") + for i in tmp_buff: + buff += "\t\t\t" + i + "\n" + except AttributeError: + pass + return buff diff --git a/androguard/core/bytecodes/axml/types.py b/androguard/core/bytecodes/axml/types.py new file mode 100644 index 0000000..e2292f8 --- /dev/null +++ b/androguard/core/bytecodes/axml/types.py @@ -0,0 +1,51 @@ +# Type definiton for (type, data) tuples representing a value +# See http://androidxref.com/9.0.0_r3/xref/frameworks/base/libs/androidfw/include/androidfw/ResourceTypes.h#262 + +# The 'data' is either 0 or 1, specifying this resource is either +# undefined or empty, respectively. +TYPE_NULL = 0x00 +# The 'data' holds a ResTable_ref, a reference to another resource +# table entry. +TYPE_REFERENCE = 0x01 +# The 'data' holds an attribute resource identifier. +TYPE_ATTRIBUTE = 0x02 +# The 'data' holds an index into the containing resource table's +# global value string pool. +TYPE_STRING = 0x03 +# The 'data' holds a single-precision floating point number. +TYPE_FLOAT = 0x04 +# The 'data' holds a complex number encoding a dimension value +# such as "100in". +TYPE_DIMENSION = 0x05 +# The 'data' holds a complex number encoding a fraction of a +# container. +TYPE_FRACTION = 0x06 +# The 'data' holds a dynamic ResTable_ref, which needs to be +# resolved before it can be used like a TYPE_REFERENCE. +TYPE_DYNAMIC_REFERENCE = 0x07 +# The 'data' holds an attribute resource identifier, which needs to be resolved +# before it can be used like a TYPE_ATTRIBUTE. +TYPE_DYNAMIC_ATTRIBUTE = 0x08 +# Beginning of integer flavors... +TYPE_FIRST_INT = 0x10 +# The 'data' is a raw integer value of the form n..n. +TYPE_INT_DEC = 0x10 +# The 'data' is a raw integer value of the form 0xn..n. +TYPE_INT_HEX = 0x11 +# The 'data' is either 0 or 1, for input "false" or "true" respectively. +TYPE_INT_BOOLEAN = 0x12 +# Beginning of color integer flavors... +TYPE_FIRST_COLOR_INT = 0x1c +# The 'data' is a raw integer value of the form #aarrggbb. +TYPE_INT_COLOR_ARGB8 = 0x1c +# The 'data' is a raw integer value of the form #rrggbb. +TYPE_INT_COLOR_RGB8 = 0x1d +# The 'data' is a raw integer value of the form #argb. +TYPE_INT_COLOR_ARGB4 = 0x1e +# The 'data' is a raw integer value of the form #rgb. +TYPE_INT_COLOR_RGB4 = 0x1f +# ...end of integer flavors. +TYPE_LAST_COLOR_INT = 0x1f +# ...end of integer flavors. +TYPE_LAST_INT = 0x1f + diff --git a/androguard/core/bytecodes/dvm.py b/androguard/core/bytecodes/dvm.py new file mode 100644 index 0000000..2a92d40 --- /dev/null +++ b/androguard/core/bytecodes/dvm.py @@ -0,0 +1,8764 @@ +from __future__ import division +from __future__ import print_function + +from builtins import str +from builtins import range +from builtins import object +from androguard.core import bytecode +from androguard.core.bytecodes.apk import APK +from androguard.core.androconf import CONF + +from androguard.core.bytecodes import mutf8 +from androguard.core.bytecodes.dvm_types import TYPE_MAP_ITEM, ACCESS_FLAGS, TYPE_DESCRIPTOR + +import sys +import re +import struct +import binascii +import time +from struct import pack, unpack, calcsize +import logging +import warnings + +log = logging.getLogger("androguard.dvm") + +# TODO there is DEX 38 already +if sys.version_info[0] == 3: + DEX_FILE_MAGIC_35 = b'dex\n035\x00' + DEX_FILE_MAGIC_36 = b'dex\n036\x00' + DEX_FILE_MAGIC_37 = b'dex\n037\x00' + ODEX_FILE_MAGIC_35 = b'dey\n035\x00' + ODEX_FILE_MAGIC_36 = b'dey\n036\x00' + ODEX_FILE_MAGIC_37 = b'dey\n037\x00' +else: + DEX_FILE_MAGIC_35 = 'dex\n035\x00' + DEX_FILE_MAGIC_36 = 'dex\n036\x00' + DEX_FILE_MAGIC_37 = 'dex\n037\x00' + ODEX_FILE_MAGIC_35 = 'dey\n035\x00' + ODEX_FILE_MAGIC_36 = 'dey\n036\x00' + ODEX_FILE_MAGIC_37 = 'dey\n037\x00' + +# https://source.android.com/devices/tech/dalvik/dex-format#value-formats +VALUE_BYTE = 0x00 # (none; must be 0) ubyte[1] signed one-byte integer value +VALUE_SHORT = 0x02 # size - 1 (0..1) ubyte[size] signed two-byte integer value, sign-extended +VALUE_CHAR = 0x03 # size - 1 (0..1) ubyte[size] unsigned two-byte integer value, zero-extended +VALUE_INT = 0x04 # size - 1 (0..3) ubyte[size] signed four-byte integer value, sign-extended +VALUE_LONG = 0x06 # size - 1 (0..7) ubyte[size] signed eight-byte integer value, sign-extended +VALUE_FLOAT = 0x10 # size - 1 (0..3) ubyte[size] four-byte bit pattern, zero-extended to the right, and interpreted as an IEEE754 32-bit floating point value +VALUE_DOUBLE = 0x11 # size - 1 (0..7) ubyte[size] eight-byte bit pattern, zero-extended to the right, and interpreted as an IEEE754 64-bit floating point value +VALUE_STRING = 0x17 # size - 1 (0..3) ubyte[size] unsigned (zero-extended) four-byte integer value, interpreted as an index into the string_ids section and representing a string value +VALUE_TYPE = 0x18 # size - 1 (0..3) ubyte[size] unsigned (zero-extended) four-byte integer value, interpreted as an index into the type_ids section and representing a reflective type/class value +VALUE_FIELD = 0x19 # size - 1 (0..3) ubyte[size] unsigned (zero-extended) four-byte integer value, interpreted as an index into the field_ids section and representing a reflective field value +VALUE_METHOD = 0x1a # size - 1 (0..3) ubyte[size] unsigned (zero-extended) four-byte integer value, interpreted as an index into the method_ids section and representing a reflective method value +VALUE_ENUM = 0x1b # size - 1 (0..3) ubyte[size] unsigned (zero-extended) four-byte integer value, interpreted as an index into the field_ids section and representing the value of an enumerated type constant +VALUE_ARRAY = 0x1c # (none; must be 0) encoded_array an array of values, in the format specified by "encoded_array Format" below. The size of the value is implicit in the encoding. +VALUE_ANNOTATION = 0x1d # (none; must be 0) encoded_annotation a sub-annotation, in the format specified by "encoded_annotation Format" below. The size of the value is implicit in the encoding. +VALUE_NULL = 0x1e # (none; must be 0) (none) null reference value +VALUE_BOOLEAN = 0x1f # boolean (0..1) (none) one-bit value; 0 for false and 1 for true. The bit is represented in the value_arg. + +# https://source.android.com/devices/tech/dalvik/dex-format#debug-info-item +DBG_END_SEQUENCE = 0x00 # (none) terminates a debug info sequence for a code_item +DBG_ADVANCE_PC = 0x01 # uleb128 addr_diff addr_diff: amount to add to address register advances the address register without emitting a positions entry +DBG_ADVANCE_LINE = 0x02 # sleb128 line_diff line_diff: amount to change line register by advances the line register without emitting a positions entry +DBG_START_LOCAL = 0x03 # uleb128 register_num +# uleb128p1 name_idx +# uleb128p1 type_idx +# register_num: register that will contain local name_idx: string index of the name +# type_idx: type index of the type introduces a local variable at the current address. Either name_idx or type_idx may be NO_INDEX to indicate that that value is unknown. +DBG_START_LOCAL_EXTENDED = 0x04 # uleb128 register_num uleb128p1 name_idx uleb128p1 type_idx uleb128p1 sig_idx +# register_num: register that will contain local +# name_idx: string index of the name +# type_idx: type index of the type +# sig_idx: string index of the type signature +# introduces a local with a type signature at the current address. Any of name_idx, type_idx, or sig_idx may be NO_INDEX to indicate that that value is unknown. ( +# If sig_idx is -1, though, the same data could be represented more efficiently using the opcode DBG_START_LOCAL.) +# Note: See the discussion under "dalvik.annotation.Signature" below for caveats about handling signatures. +DBG_END_LOCAL = 0x05 # uleb128 register_num +# register_num: register that contained local +# marks a currently-live local variable as out of scope at the current address +DBG_RESTART_LOCAL = 0x06 # uleb128 register_num +# register_num: register to restart re-introduces a local variable at the current address. +# The name and type are the same as the last local that was live in the specified register. +DBG_SET_PROLOGUE_END = 0x07 # (none) sets the prologue_end state machine register, indicating that the next position entry that is added should be considered the end of a +# method prologue (an appropriate place for a method breakpoint). The prologue_end register is cleared by any special (>= 0x0a) opcode. +DBG_SET_EPILOGUE_BEGIN = 0x08 # (none) sets the epilogue_begin state machine register, indicating that the next position entry that is added should be considered the beginning +# of a method epilogue (an appropriate place to suspend execution before method exit). The epilogue_begin register is cleared by any special (>= 0x0a) opcode. +DBG_SET_FILE = 0x09 # uleb128p1 name_idx +# name_idx: string index of source file name; NO_INDEX if unknown indicates that all subsequent line number entries make reference to this source file name, +# instead of the default name specified in code_item +DBG_Special_Opcodes_BEGIN = 0x0a # (none) advances the line and address registers, emits a position entry, and clears prologue_end and epilogue_begin. See below for description. +DBG_Special_Opcodes_END = 0xff +DBG_LINE_BASE = -4 +DBG_LINE_RANGE = 15 + + +class Error(Exception): + """ + Base class for exceptions in this module. + """ + pass + + +class InvalidInstruction(Error): + pass + + +def read_null_terminated_string(f): + """ + Read a null terminated string from a file-like object. + + :param f: file-like object + :rtype: bytearray + """ + x = bytearray() + while True: + z = f.read(1) + if ord(z) == 0: + return x + else: + x.append(ord(z)) + + +def get_access_flags_string(value): + """ + Transform an access flag field to the corresponding string + + :param value: the value of the access flags + :type value: int + + :rtype: string + """ + flags = [] + for k, v in ACCESS_FLAGS.items(): + if (k & value) == k: + flags.append(v) + + return " ".join(flags) + + +def get_type(atype, size=None): + """ + Retrieve the type of a descriptor (e.g : I) + """ + if atype.startswith('java.lang'): + atype = atype.replace('java.lang.', '') + res = TYPE_DESCRIPTOR.get(atype.lstrip('java.lang')) + if res is None: + if atype[0] == 'L': + res = atype[1:-1].replace('/', '.') + elif atype[0] == '[': + if size is None: + res = '%s[]' % get_type(atype[1:]) + else: + res = '%s[%s]' % (get_type(atype[1:]), size) + else: + res = atype + return res + + +MATH_DVM_OPCODES = { + "add.": '+', + "div.": '/', + "mul.": '*', + "or.": '|', + "sub.": '-', + "and.": '&', + "xor.": '^', + "shl.": "<<", + "shr.": ">>", +} + +FIELD_READ_DVM_OPCODES = [".get"] +FIELD_WRITE_DVM_OPCODES = [".put"] + +BREAK_DVM_OPCODES = ["invoke.", "move.", ".put", "if."] + +BRANCH_DVM_OPCODES = ["throw", "throw.", "if.", "goto", "goto.", "return", + "return.", "packed-switch$", "sparse-switch$"] + + +def clean_name_instruction(instruction): + op_value = instruction.get_op_value() + + # goto range + if 0x28 <= op_value <= 0x2a: + return "goto" + + return instruction.get_name() + + +def static_operand_instruction(instruction): + buff = "" + + if isinstance(instruction, Instruction): + # get instructions without registers + for val in instruction.get_literals(): + buff += "%s" % val + + op_value = instruction.get_op_value() + if op_value == 0x1a or op_value == 0x1b: + buff += instruction.get_string() + + return buff + + +def get_sbyte(buff): + return unpack('=b', bytearray(buff.read(1)))[0] + + +def get_byte(buff): + return unpack('=B', bytearray(buff.read(1)))[0] + + +def readuleb128(buff): + """ + Read an unsigned LEB128 at the current position of the buffer + + :param buff: a file like object + :return: decoded unsigned LEB128 + """ + result = get_byte(buff) + if result > 0x7f: + cur = get_byte(buff) + result = (result & 0x7f) | ((cur & 0x7f) << 7) + if cur > 0x7f: + cur = get_byte(buff) + result |= (cur & 0x7f) << 14 + if cur > 0x7f: + cur = get_byte(buff) + result |= (cur & 0x7f) << 21 + if cur > 0x7f: + cur = get_byte(buff) + if cur > 0x0f: + log.warning("possible error while decoding number") + result |= cur << 28 + + return result + + +def readuleb128p1(buff): + """ + Read an unsigned LEB128p1 at the current position of the buffer. + This format is the same as uLEB128 but has the ability to store the value -1. + + :param buff: a file like object + :return: decoded uLEB128p1 + """ + return readuleb128(buff) - 1 + + +def readsleb128(buff): + """ + Read a signed LEB128 at the current position of the buffer. + + :param buff: a file like object + :return: decoded sLEB128 + """ + result = 0 + shift = 0 + + for x in range(0, 5): + cur = get_byte(buff) + result |= (cur & 0x7f) << shift + shift += 7 + + if not cur & 0x80: + bit_left = max(32 - shift, 0) + result = result << bit_left + if result > 0x7fffffff: + result = (0x7fffffff & result) - 0x80000000 + result = result >> bit_left + break + + return result + + +def writeuleb128(value): + """ + Convert an integer value to the corresponding unsigned LEB128. + + Raises a value error, if the given value is negative. + + :param value: non-negative integer + :return: bytes + """ + if value < 0: + raise ValueError("value must be non-negative!") + + remaining = value >> 7 + + buff = bytearray() + while remaining > 0: + buff += pack("=B", ((value & 0x7f) | 0x80)) + + value = remaining + remaining >>= 7 + + buff += pack("=B", value & 0x7f) + return buff + + +def writesleb128(value): + """ + Convert an integer value to the corresponding signed LEB128 + + :param value: integer value + :return: bytes + """ + remaining = value >> 7 + hasMore = True + buff = bytearray() + + if (value & (-sys.maxsize - 1)) == 0: + end = 0 + else: + end = -1 + + while hasMore: + hasMore = (remaining != end) or ((remaining & 1) != ((value >> 6) & 1)) + tmp = 0 + if hasMore: + tmp = 0x80 + + buff += pack("=B", (value & 0x7f) | tmp) + value = remaining + remaining >>= 7 + + return buff + + +def determineNext(i, end, m): + op_value = i.get_op_value() + + # throw + return* + if (op_value == 0x27) or (0x0e <= op_value <= 0x11): + return [-1] + # goto + elif 0x28 <= op_value <= 0x2a: + off = i.get_ref_off() * 2 + return [off + end] + # if + elif 0x32 <= op_value <= 0x3d: + off = i.get_ref_off() * 2 + return [end + i.get_length(), off + end] + # sparse/packed + elif op_value in (0x2b, 0x2c): + x = [end + i.get_length()] + + code = m.get_code().get_bc() + off = i.get_ref_off() * 2 + + data = code.get_ins_off(off + end) + + if data is not None: + for target in data.get_targets(): + x.append(target * 2 + end) + + return x + return [] + + +def determineException(vm, m): + """ + Returns try-catch handler inside the method. + + :param vm: a :class:`~DalvikVMFormat` + :param m: a :class:`~EncodedMethod` + :return: + """ + # no exceptions ! + if m.get_code().get_tries_size() <= 0: + return [] + + h_off = {} + + handler_catch_list = m.get_code().get_handlers() + + for try_item in m.get_code().get_tries(): + offset_handler = try_item.get_handler_off( + ) + handler_catch_list.get_off() + if offset_handler in h_off: + h_off[offset_handler].append([try_item]) + else: + h_off[offset_handler] = [] + h_off[offset_handler].append([try_item]) + + # print m.get_name(), "\t HANDLER_CATCH_LIST SIZE", handler_catch_list.size, handler_catch_list.get_offset() + for handler_catch in handler_catch_list.get_list(): + if handler_catch.get_off() not in h_off: + continue + + for i in h_off[handler_catch.get_off()]: + i.append(handler_catch) + + exceptions = [] + # print m.get_name(), h_off + for i in h_off: + for value in h_off[i]: + try_value = value[0] + + z = [try_value.get_start_addr() * 2, + (try_value.get_start_addr() * 2) + + (try_value.get_insn_count() * 2) - 1] + + handler_catch = value[1] + + for handler in handler_catch.get_handlers(): + z.append([vm.get_cm_type(handler.get_type_idx()), + handler.get_addr() * 2]) + + if handler_catch.get_size() <= 0: + z.append(["Ljava/lang/Throwable;", + handler_catch.get_catch_all_addr() * 2]) + + exceptions.append(z) + + # print m.get_name(), exceptions + return exceptions + + +class HeaderItem(object): + """ + This class can parse an header_item of a dex file + + :param buff: a string which represents a Buff object of the header_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, size, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.magic = unpack("=Q", buff.read(8))[0] + self.checksum = unpack("=i", buff.read(4))[0] + self.signature = unpack("=20s", buff.read(20))[0] + self.file_size = unpack("=I", buff.read(4))[0] + self.header_size = unpack("=I", buff.read(4))[0] + self.endian_tag = unpack("=I", buff.read(4))[0] + self.link_size = unpack("=I", buff.read(4))[0] + self.link_off = unpack("=I", buff.read(4))[0] + self.map_off = unpack("=I", buff.read(4))[0] + self.string_ids_size = unpack("=I", buff.read(4))[0] + self.string_ids_off = unpack("=I", buff.read(4))[0] + self.type_ids_size = unpack("=I", buff.read(4))[0] + self.type_ids_off = unpack("=I", buff.read(4))[0] + self.proto_ids_size = unpack("=I", buff.read(4))[0] + self.proto_ids_off = unpack("=I", buff.read(4))[0] + self.field_ids_size = unpack("=I", buff.read(4))[0] + self.field_ids_off = unpack("=I", buff.read(4))[0] + self.method_ids_size = unpack("=I", buff.read(4))[0] + self.method_ids_off = unpack("=I", buff.read(4))[0] + self.class_defs_size = unpack("=I", buff.read(4))[0] + self.class_defs_off = unpack("=I", buff.read(4))[0] + self.data_size = unpack("=I", buff.read(4))[0] + self.data_off = unpack("=I", buff.read(4))[0] + + self.map_off_obj = None + self.string_off_obj = None + self.type_off_obj = None + self.proto_off_obj = None + self.field_off_obj = None + self.method_off_obj = None + self.class_off_obj = None + self.data_off_obj = None + + def reload(self): + pass + + def get_obj(self): + if self.map_off_obj is None: + self.map_off_obj = self.CM.get_item_by_offset(self.map_off) + + if self.string_off_obj is None: + self.string_off_obj = self.CM.get_item_by_offset( + self.string_ids_off) + + if self.type_off_obj is None: + self.type_off_obj = self.CM.get_item_by_offset(self.type_ids_off) + + if self.proto_off_obj is None: + self.proto_off_obj = self.CM.get_item_by_offset(self.proto_ids_off) + + if self.field_off_obj is None: + self.field_off_obj = self.CM.get_item_by_offset(self.field_ids_off) + + if self.method_off_obj is None: + self.method_off_obj = self.CM.get_item_by_offset( + self.method_ids_off) + + if self.class_off_obj is None: + self.class_off_obj = self.CM.get_item_by_offset(self.class_defs_off) + + if self.data_off_obj is None: + self.data_off_obj = self.CM.get_item_by_offset(self.data_off) + + self.map_off = self.map_off_obj.get_off() + + self.string_ids_size = len(self.string_off_obj) + self.string_ids_off = self.string_off_obj[0].get_off() + + self.type_ids_size = len(self.type_off_obj.type) + self.type_ids_off = self.type_off_obj.get_off() + + self.proto_ids_size = len(self.proto_off_obj.proto) + self.proto_ids_off = self.proto_off_obj.get_off() + + self.field_ids_size = len(self.field_off_obj.elem) + self.field_ids_off = self.field_off_obj.get_off() + + self.method_ids_size = len(self.method_off_obj.methods) + self.method_ids_off = self.method_off_obj.get_off() + + self.class_defs_size = len(self.class_off_obj.class_def) + self.class_defs_off = self.class_off_obj.get_off() + + self.data_size = len(self.data_off_obj.map_item) + self.data_off = self.data_off_obj.get_off() + + return pack("=Q", self.magic) + \ + pack("=i", self.checksum) + \ + pack("=20s", self.signature) + \ + pack("=I", self.file_size) + \ + pack("=I", self.header_size) + \ + pack("=I", self.endian_tag) + \ + pack("=I", self.link_size) + \ + pack("=I", self.link_off) + \ + pack("=I", self.map_off) + \ + pack("=I", self.string_ids_size) + \ + pack("=I", self.string_ids_off) + \ + pack("=I", self.type_ids_size) + \ + pack("=I", self.type_ids_off) + \ + pack("=I", self.proto_ids_size) + \ + pack("=I", self.proto_ids_off) + \ + pack("=I", self.field_ids_size) + \ + pack("=I", self.field_ids_off) + \ + pack("=I", self.method_ids_size) + \ + pack("=I", self.method_ids_off) + \ + pack("=I", self.class_defs_size) + \ + pack("=I", self.class_defs_off) + \ + pack("=I", self.data_size) + \ + pack("=I", self.data_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_raw()) + + def show(self): + bytecode._PrintSubBanner("Header Item") + bytecode._PrintDefault("magic=%s, checksum=%s, signature=%s\n" % + (self.magic, self.checksum, + binascii.hexlify(self.signature).decode("ASCII"))) + bytecode._PrintDefault("file_size=%x, header_size=%x, endian_tag=%x\n" % + (self.file_size, self.header_size, + self.endian_tag)) + bytecode._PrintDefault("link_size=%x, link_off=%x\n" % + (self.link_size, self.link_off)) + bytecode._PrintDefault("map_off=%x\n" % self.map_off) + bytecode._PrintDefault("string_ids_size=%x, string_ids_off=%x\n" % + (self.string_ids_size, self.string_ids_off)) + bytecode._PrintDefault("type_ids_size=%x, type_ids_off=%x\n" % + (self.type_ids_size, self.type_ids_off)) + bytecode._PrintDefault("proto_ids_size=%x, proto_ids_off=%x\n" % + (self.proto_ids_size, self.proto_ids_off)) + bytecode._PrintDefault("field_ids_size=%x, field_ids_off=%x\n" % + (self.field_ids_size, self.field_ids_off)) + bytecode._PrintDefault("method_ids_size=%x, method_ids_off=%x\n" % + (self.method_ids_size, self.method_ids_off)) + bytecode._PrintDefault("class_defs_size=%x, class_defs_off=%x\n" % + (self.class_defs_size, self.class_defs_off)) + bytecode._PrintDefault("data_size=%x, data_off=%x\n" % + (self.data_size, self.data_off)) + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + +class AnnotationOffItem(object): + """ + This class can parse an annotation_off_item of a dex file + + :param buff: a string which represents a Buff object of the annotation_off_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.annotation_off = unpack("=I", buff.read(4))[0] + + def get_annotation_off(self): + return self.annotation_off + + def show(self): + bytecode._PrintSubBanner("Annotation Off Item") + bytecode._PrintDefault("annotation_off=0x%x\n" % self.annotation_off) + + def get_obj(self): + if self.annotation_off != 0: + self.annotation_off = self.CM.get_obj_by_offset( + self.annotation_off).get_off() + + return pack("=I", self.annotation_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class AnnotationSetItem(object): + """ + This class can parse an annotation_set_item of a dex file + + :param buff: a string which represents a Buff object of the annotation_set_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + self.annotation_off_item = [] + + self.size = unpack("=I", buff.read(4))[0] + for i in range(0, self.size): + self.annotation_off_item.append(AnnotationOffItem(buff, cm)) + + def get_annotation_off_item(self): + """ + Return the offset from the start of the file to an annotation + + :rtype: a list of :class:`AnnotationOffItem` + """ + return self.annotation_off_item + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def reload(self): + pass + + def show(self): + bytecode._PrintSubBanner("Annotation Set Item") + for i in self.annotation_off_item: + i.show() + + def get_obj(self): + return pack("=I", self.size) + + def get_raw(self): + return self.get_obj() + b''.join(i.get_raw() + for i in self.annotation_off_item) + + def get_length(self): + length = len(self.get_obj()) + + for i in self.annotation_off_item: + length += i.get_length() + + return length + + +class AnnotationSetRefItem(object): + """ + This class can parse an annotation_set_ref_item of a dex file + + :param buff: a string which represents a Buff object of the annotation_set_ref_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.annotations_off = unpack("=I", buff.read(4))[0] + + def get_annotations_off(self): + """ + Return the offset from the start of the file to the referenced annotation set or + 0 if there are no annotations for this element. + + :rtype: int + """ + return self.annotations_off + + def show(self): + bytecode._PrintSubBanner("Annotation Set Ref Item") + bytecode._PrintDefault("annotation_off=0x%x\n" % self.annotations_off) + + def get_obj(self): + if self.annotations_off != 0: + self.annotations_off = self.CM.get_obj_by_offset( + self.annotations_off).get_off() + + return pack("=I", self.annotations_off) + + def get_raw(self): + return self.get_obj() + + +class AnnotationSetRefList(object): + """ + This class can parse an annotation_set_ref_list_item of a dex file + + :param buff: a string which represents a Buff object of the annotation_set_ref_list_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.offset = buff.get_idx() + + self.CM = cm + self.list = [] + + self.size = unpack("=I", buff.read(4))[0] + for i in range(0, self.size): + self.list.append(AnnotationSetRefItem(buff, cm)) + + def get_list(self): + """ + Return elements of the list + + :rtype: :class:`AnnotationSetRefItem` + """ + return self.list + + def get_off(self): + return self.offset + + def set_off(self, off): + self.offset = off + + def reload(self): + pass + + def show(self): + bytecode._PrintSubBanner("Annotation Set Ref List Item") + for i in self.list: + i.show() + + def get_obj(self): + return [i for i in self.list] + + def get_raw(self): + return pack("=I", self.size) + b''.join(i.get_raw() for i in self.list) + + def get_length(self): + return len(self.get_raw()) + + +class FieldAnnotation(object): + """ + This class can parse a field_annotation of a dex file + + :param buff: a string which represents a Buff object of the field_annotation + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.offset = buff.get_idx() + + self.CM = cm + self.field_idx = unpack("=I", buff.read(4))[0] + self.annotations_off = unpack("=I", buff.read(4))[0] + + def get_field_idx(self): + """ + Return the index into the field_ids list for the identity of the field being annotated + + :rtype: int + """ + return self.get_field_idx + + def get_annotations_off(self): + """ + Return the offset from the start of the file to the list of annotations for the field + + :rtype: int + """ + return self.annotations_off + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def show(self): + bytecode._PrintSubBanner("Field Annotation") + bytecode._PrintDefault("field_idx=0x%x annotations_off=0x%x\n" % + (self.field_idx, self.annotations_off)) + + def get_obj(self): + if self.annotations_off != 0: + self.annotations_off = self.CM.get_obj_by_offset( + self.annotations_off).get_off() + + return pack("=I", self.field_idx) + pack("=I", self.annotations_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_raw()) + + +class MethodAnnotation(object): + """ + This class can parse a method_annotation of a dex file + + :param buff: a string which represents a Buff object of the method_annotation + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.offset = buff.get_idx() + + self.CM = cm + self.method_idx = unpack("=I", buff.read(4))[0] + self.annotations_off = unpack("=I", buff.read(4))[0] + + def get_method_idx(self): + """ + Return the index into the method_ids list for the identity of the method being annotated + + :rtype: int + """ + return self.method_idx + + def get_annotations_off(self): + """ + Return the offset from the start of the file to the list of annotations for the method + + :rtype: int + """ + return self.annotations_off + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def show(self): + bytecode._PrintSubBanner("Method Annotation") + bytecode._PrintDefault("method_idx=0x%x annotations_off=0x%x\n" % + (self.method_idx, self.annotations_off)) + + def get_obj(self): + if self.annotations_off != 0: + self.annotations_off = self.CM.get_obj_by_offset( + self.annotations_off).get_off() + + return pack("=I", self.method_idx) + pack("=I", self.annotations_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_raw()) + + +class ParameterAnnotation(object): + """ + This class can parse a parameter_annotation of a dex file + + :param buff: a string which represents a Buff object of the parameter_annotation + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.offset = buff.get_idx() + + self.CM = cm + self.method_idx = unpack("=I", buff.read(4))[0] + self.annotations_off = unpack("=I", buff.read(4))[0] + + def get_method_idx(self): + """ + Return the index into the method_ids list for the identity of the method whose parameters are being annotated + + :rtype: int + """ + return self.get_method_idx + + def get_annotations_off(self): + """ + Return the offset from the start of the file to the list of annotations for the method parameters + + :rtype: int + """ + return self.annotations_off + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def show(self): + bytecode._PrintSubBanner("Parameter Annotation") + bytecode._PrintDefault("method_idx=0x%x annotations_off=0x%x\n" % + (self.method_idx, self.annotations_off)) + + def get_obj(self): + if self.annotations_off != 0: + self.annotations_off = self.CM.get_obj_by_offset( + self.annotations_off).get_off() + + return pack("=I", self.method_idx) + pack("=I", self.annotations_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_raw()) + + +class AnnotationsDirectoryItem(object): + """ + This class can parse an annotations_directory_item of a dex file + + :param buff: a string which represents a Buff object of the annotations_directory_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.class_annotations_off = unpack("=I", buff.read(4))[0] + self.annotated_fields_size = unpack("=I", buff.read(4))[0] + self.annotated_methods_size = unpack("=I", buff.read(4))[0] + self.annotated_parameters_size = unpack("=I", buff.read(4))[0] + + self.field_annotations = [] + for i in range(0, self.annotated_fields_size): + self.field_annotations.append(FieldAnnotation(buff, cm)) + + self.method_annotations = [] + for i in range(0, self.annotated_methods_size): + self.method_annotations.append(MethodAnnotation(buff, cm)) + + self.parameter_annotations = [] + for i in range(0, self.annotated_parameters_size): + self.parameter_annotations.append(ParameterAnnotation(buff, cm)) + + def get_class_annotations_off(self): + """ + Return the offset from the start of the file to the annotations made directly on the class, + or 0 if the class has no direct annotations + + :rtype: int + """ + return self.class_annotations_off + + def get_annotated_fields_size(self): + """ + Return the count of fields annotated by this item + + :rtype: int + """ + return self.annotated_fields_size + + def get_annotated_methods_size(self): + """ + Return the count of methods annotated by this item + + :rtype: int + """ + return self.annotated_methods_size + + def get_annotated_parameters_size(self): + """ + Return the count of method parameter lists annotated by this item + + :rtype: int + """ + return self.annotated_parameters_size + + def get_field_annotations(self): + """ + Return the list of associated field annotations + + :rtype: a list of :class:`FieldAnnotation` + """ + return self.field_annotations + + def get_method_annotations(self): + """ + Return the list of associated method annotations + + :rtype: a list of :class:`MethodAnnotation` + """ + return self.method_annotations + + def get_parameter_annotations(self): + """ + Return the list of associated method parameter annotations + + :rtype: a list of :class:`ParameterAnnotation` + """ + return self.parameter_annotations + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def reload(self): + pass + + def show(self): + bytecode._PrintSubBanner("Annotations Directory Item") + bytecode._PrintDefault( + "class_annotations_off=0x%x annotated_fields_size=%d annotated_methods_size=%d annotated_parameters_size=%d\n" + % (self.class_annotations_off, self.annotated_fields_size, + self.annotated_methods_size, self.annotated_parameters_size)) + + for i in self.field_annotations: + i.show() + + for i in self.method_annotations: + i.show() + + for i in self.parameter_annotations: + i.show() + + def get_obj(self): + if self.class_annotations_off != 0: + self.class_annotations_off = self.CM.get_obj_by_offset( + self.class_annotations_off).get_off() + + return pack("=I", self.class_annotations_off) + \ + pack("=I", self.annotated_fields_size) + \ + pack("=I", self.annotated_methods_size) + \ + pack("=I", self.annotated_parameters_size) + + def get_raw(self): + return self.get_obj() + \ + b''.join(i.get_raw() for i in self.field_annotations) + \ + b''.join(i.get_raw() for i in self.method_annotations) + \ + b''.join(i.get_raw() for i in self.parameter_annotations) + + def get_length(self): + length = len(self.get_obj()) + for i in self.field_annotations: + length += i.get_length() + + for i in self.method_annotations: + length += i.get_length() + + for i in self.parameter_annotations: + length += i.get_length() + + return length + + +class TypeItem(object): + """ + This class can parse a type_item of a dex file + + :param buff: a string which represents a Buff object of the type_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.type_idx = unpack("=H", buff.read(2))[0] + + def get_type_idx(self): + """ + Return the index into the type_ids list + + :rtype: int + """ + return self.type_idx + + def get_string(self): + """ + Return the type string + + :rtype: string + """ + return self.CM.get_type(self.type_idx) + + def show(self): + bytecode._PrintSubBanner("Type Item") + bytecode._PrintDefault("type_idx=%d\n" % self.type_idx) + + def get_obj(self): + return pack("=H", self.type_idx) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class TypeList(object): + """ + This class can parse a type_list of a dex file + + :param buff: a string which represents a Buff object of the type_list + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + self.size = unpack("=I", buff.read(4))[0] + + self.list = [] + for i in range(0, self.size): + self.list.append(TypeItem(buff, cm)) + + self.pad = b"" + if self.size % 2 != 0: + self.pad = buff.read(2) + + self.len_pad = len(self.pad) + + def get_pad(self): + """ + Return the alignment string + + :rtype: string + """ + return self.pad + + def get_type_list_off(self): + """ + Return the offset of the item + + :rtype: int + """ + return self.offset + + def get_string(self): + """ + Return the concatenation of all strings + + :rtype: string + """ + return ' '.join(i.get_string() for i in self.list) + + def get_size(self): + """ + Return the size of the list, in entries + + :rtype: int + """ + return self.size + + def get_list(self): + """ + Return the list of TypeItem + + :rtype: a list of :class:`TypeItem` objects + """ + return self.list + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + self.len_pad + + def reload(self): + pass + + def show(self): + bytecode._PrintSubBanner("Type List") + bytecode._PrintDefault("size=%d\n" % self.size) + + for i in self.list: + i.show() + + def get_obj(self): + return self.pad + pack("=I", self.size) + + def get_raw(self): + return self.get_obj() + b''.join(i.get_raw() for i in self.list) + + def get_length(self): + length = len(self.get_obj()) + + for i in self.list: + length += i.get_length() + + return length + + +class DBGBytecode(object): + def __init__(self, cm, op_value): + self.CM = cm + self.op_value = op_value + self.format = [] + + def get_op_value(self): + return self.op_value + + def add(self, value, ttype): + self.format.append((value, ttype)) + + def get_value(self): + if self.get_op_value() == DBG_START_LOCAL: + return self.CM.get_string(self.format[1][0]) + elif self.get_op_value() == DBG_START_LOCAL_EXTENDED: + return self.CM.get_string(self.format[1][0]) + + return None + + def show(self): + bytecode._PrintSubBanner("DBGBytecode") + bytecode._PrintDefault("op_value=%x format=%s value=%s\n" % ( + self.op_value, str(self.format), self.get_value())) + + def get_obj(self): + return [] + + def get_raw(self): + buff = self.op_value.get_value_buff() + for i in self.format: + if i[1] == "u": + buff += writeuleb128(i[0]) + elif i[1] == "s": + buff += writesleb128(i[0]) + return buff + + +class DebugInfoItem(object): + def __init__(self, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.line_start = readuleb128(buff) + self.parameters_size = readuleb128(buff) + + # print "line", self.line_start, "params", self.parameters_size + + self.parameter_names = [] + for i in range(0, self.parameters_size): + self.parameter_names.append(readuleb128p1(buff)) + + self.bytecodes = [] + bcode = DBGBytecode(self.CM, get_byte(buff)) + self.bytecodes.append(bcode) + + while bcode.get_op_value() != DBG_END_SEQUENCE: + bcode_value = bcode.get_op_value() + + if bcode_value == DBG_ADVANCE_PC: + bcode.add(readuleb128(buff), "u") + elif bcode_value == DBG_ADVANCE_LINE: + bcode.add(readsleb128(buff), "s") + elif bcode_value == DBG_START_LOCAL: + bcode.add(readuleb128(buff), "u") + bcode.add(readuleb128p1(buff), "u1") + bcode.add(readuleb128p1(buff), "u1") + elif bcode_value == DBG_START_LOCAL_EXTENDED: + bcode.add(readuleb128(buff), "u") + bcode.add(readuleb128p1(buff), "u1") + bcode.add(readuleb128p1(buff), "u1") + bcode.add(readuleb128p1(buff), "u1") + elif bcode_value == DBG_END_LOCAL: + bcode.add(readuleb128(buff), "u") + elif bcode_value == DBG_RESTART_LOCAL: + bcode.add(readuleb128(buff), "u") + elif bcode_value == DBG_SET_PROLOGUE_END: + pass + elif bcode_value == DBG_SET_EPILOGUE_BEGIN: + pass + elif bcode_value == DBG_SET_FILE: + bcode.add(readuleb128p1(buff), "u1") + else: # bcode_value >= DBG_Special_Opcodes_BEGIN and bcode_value <= DBG_Special_Opcodes_END: + pass + + bcode = DBGBytecode(self.CM, get_byte(buff)) + self.bytecodes.append(bcode) + + def reload(self): + pass + + def get_parameters_size(self): + return self.parameters_size + + def get_line_start(self): + return self.line_start + + def get_parameter_names(self): + return self.parameter_names + + def get_translated_parameter_names(self): + l = [] + for i in self.parameter_names: + if i == -1: + l.append(None) + else: + l.append(self.CM.get_string(i)) + return l + + def get_bytecodes(self): + return self.bytecodes + + def show(self): + bytecode._PrintSubBanner("Debug Info Item") + bytecode._PrintDefault("line_start=%d parameters_size=%d\n" % + (self.line_start, self.parameters_size)) + nb = 0 + for i in self.parameter_names: + bytecode._PrintDefault("parameter_names[%d]=%s\n" % + (nb, self.CM.get_string(i))) + nb += 1 + + for i in self.bytecodes: + i.show() + + def get_raw(self): + return [bytecode.Buff(self.__offset, writeuleb128(self.line_start) + \ + writeuleb128(self.parameters_size) + \ + b''.join(writeuleb128(i) for i in self.parameter_names) + \ + b''.join(i.get_raw() for i in self.bytecodes))] + + def get_off(self): + return self.offset + + +class DebugInfoItemEmpty(object): + def __init__(self, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + self.__buff = buff + self.__raw = "" + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def reload(self): + offset = self.offset + + n = self.CM.get_next_offset_item(offset) + + s_idx = self.__buff.get_idx() + self.__buff.set_idx(offset) + self.__raw = self.__buff.read(n - offset) + self.__buff.set_idx(s_idx) + + def show(self): + pass + + def get_obj(self): + return [] + + def get_raw(self): + return self.__raw + + def get_length(self): + return len(self.__raw) + + +class EncodedArray(object): + """ + This class can parse an encoded_array of a dex file + + :param buff: a string which represents a Buff object of the encoded_array + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.size = readuleb128(buff) + + self.values = [] + for i in range(0, self.size): + self.values.append(EncodedValue(buff, cm)) + + def get_size(self): + """ + Return the number of elements in the array + + :rtype: int + """ + return self.size + + def get_values(self): + """ + Return a series of size encoded_value byte sequences in the format specified by this section, + concatenated sequentially + + :rtype: a list of :class:`EncodedValue` objects + """ + return self.values + + def show(self): + bytecode._PrintSubBanner("Encoded Array") + bytecode._PrintDefault("size=%d\n" % self.size) + + for i in self.values: + i.show() + + def get_obj(self): + return writeuleb128(self.size) + + def get_raw(self): + return self.get_obj() + b''.join(i.get_raw() for i in self.values) + + def get_length(self): + length = len(self.get_obj()) + for i in self.values: + length += i.get_length() + + return length + + +class EncodedValue(object): + """ + This class can parse an encoded_value of a dex file + + :param buff: a string which represents a Buff object of the encoded_value + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + + self.val = get_byte(buff) + self.value_arg = self.val >> 5 + self.value_type = self.val & 0x1f + + self.raw_value = None + self.value = "" + + # TODO: parse floats/doubles correctly + if VALUE_SHORT <= self.value_type < VALUE_STRING: + self.value, self.raw_value = self._getintvalue(buff.read( + self.value_arg + 1)) + elif self.value_type == VALUE_STRING: + id, self.raw_value = self._getintvalue(buff.read(self.value_arg + + 1)) + self.value = cm.get_raw_string(id) + elif self.value_type == VALUE_TYPE: + id, self.raw_value = self._getintvalue(buff.read(self.value_arg + + 1)) + self.value = cm.get_type(id) + elif self.value_type == VALUE_FIELD: + id, self.raw_value = self._getintvalue(buff.read(self.value_arg + + 1)) + self.value = cm.get_field(id) + elif self.value_type == VALUE_METHOD: + id, self.raw_value = self._getintvalue(buff.read(self.value_arg + + 1)) + self.value = cm.get_method(id) + elif self.value_type == VALUE_ENUM: + id, self.raw_value = self._getintvalue(buff.read(self.value_arg + + 1)) + self.value = cm.get_field(id) + elif self.value_type == VALUE_ARRAY: + self.value = EncodedArray(buff, cm) + elif self.value_type == VALUE_ANNOTATION: + self.value = EncodedAnnotation(buff, cm) + elif self.value_type == VALUE_BYTE: + self.value = get_byte(buff) + elif self.value_type == VALUE_NULL: + self.value = None + elif self.value_type == VALUE_BOOLEAN: + if self.value_arg: + self.value = True + else: + self.value = False + else: + log.warning("Unknown value 0x%x" % self.value_type) + + def get_value(self): + """ + Return the bytes representing the value, variable in length and interpreted differently for different value_type bytes, + though always little-endian + + :rtype: an object representing the value + """ + return self.value + + def get_value_type(self): + return self.value_type + + def get_value_arg(self): + return self.value_arg + + def _getintvalue(self, buf): + ret = 0 + shift = 0 + for b in buf: + ret |= b << shift + shift += 8 + + return ret, buf + + def show(self): + bytecode._PrintSubBanner("Encoded Value") + bytecode._PrintDefault("val=%x value_arg=%x value_type=%x\n" % + (self.val, self.value_arg, self.value_type)) + + def get_obj(self): + if not isinstance(self.value, str): + return [self.value] + return [] + + def get_raw(self): + if self.raw_value is None: + return pack("=B", self.val) + bytecode.object_to_bytes(self.value) + else: + return pack("=B", self.val) + bytecode.object_to_bytes(self.raw_value) + + def get_length(self): + if self.raw_value is None: + return len(pack("=B", self.val)) + len(bytecode.object_to_bytes( + self.value)) + else: + return len(pack("=B", self.val)) + len(bytecode.object_to_bytes( + self.raw_value)) + + +class AnnotationElement(object): + """ + This class can parse an annotation_element of a dex file + + :param buff: a string which represents a Buff object of the annotation_element + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.name_idx = readuleb128(buff) + self.value = EncodedValue(buff, cm) + + def get_name_idx(self): + """ + Return the element name, represented as an index into the string_ids section + + :rtype: int + """ + return self.name_idx + + def get_value(self): + """ + Return the element value (EncodedValue) + + :rtype: a :class:`EncodedValue` object + """ + return self.value + + def show(self): + bytecode._PrintSubBanner("Annotation Element") + bytecode._PrintDefault("name_idx=%d\n" % self.name_idx) + self.value.show() + + def get_obj(self): + return writeuleb128(self.name_idx) + + def get_raw(self): + return self.get_obj() + self.value.get_raw() + + def get_length(self): + return len(self.get_obj()) + self.value.get_length() + + +class EncodedAnnotation(object): + """ + This class can parse an encoded_annotation of a dex file + + :param buff: a string which represents a Buff object of the encoded_annotation + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.type_idx = readuleb128(buff) + self.size = readuleb128(buff) + + self.elements = [] + for i in range(0, self.size): + self.elements.append(AnnotationElement(buff, cm)) + + def get_type_idx(self): + """ + Return the type of the annotation. This must be a class (not array or primitive) type + + :rtype: int + """ + return self.type_idx + + def get_size(self): + """ + Return the number of name-value mappings in this annotation + + :rtype:int + """ + return self.size + + def get_elements(self): + """ + Return the elements of the annotation, represented directly in-line (not as offsets) + + :rtype: a list of :class:`AnnotationElement` objects + """ + return self.elements + + def show(self): + bytecode._PrintSubBanner("Encoded Annotation") + bytecode._PrintDefault("type_idx=%d size=%d\n" % + (self.type_idx, self.size)) + + for i in self.elements: + i.show() + + def get_obj(self): + return [i for i in self.elements] + + def get_raw(self): + return writeuleb128(self.type_idx) + writeuleb128(self.size) + b''.join( + i.get_raw() for i in self.elements) + + def get_length(self): + length = len(writeuleb128(self.type_idx) + writeuleb128(self.size)) + + for i in self.elements: + length += i.get_length() + + return length + + +class AnnotationItem(object): + """ + This class can parse an annotation_item of a dex file + + :param buff: a string which represents a Buff object of the annotation_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.visibility = get_byte(buff) + self.annotation = EncodedAnnotation(buff, cm) + + def get_visibility(self): + """ + Return the intended visibility of this annotation + + :rtype: int + """ + return self.visibility + + def get_annotation(self): + """ + Return the encoded annotation contents + + :rtype: a :class:`EncodedAnnotation` object + """ + return self.annotation + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def reload(self): + pass + + def show(self): + bytecode._PrintSubBanner("Annotation Item") + bytecode._PrintDefault("visibility=%d\n" % self.visibility) + self.annotation.show() + + def get_obj(self): + return [self.annotation] + + def get_raw(self): + return pack("=B", self.visibility) + self.annotation.get_raw() + + def get_length(self): + length = len(pack("=B", self.visibility)) + + length += self.annotation.get_length() + + return length + + +class EncodedArrayItem(object): + """ + This class can parse an encoded_array_item of a dex file + + :param buff: a string which represents a Buff object of the encoded_array_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + self.value = EncodedArray(buff, cm) + + def get_value(self): + """ + Return the bytes representing the encoded array value + + :rtype: a :class:`EncodedArray` object + """ + return self.value + + def set_off(self, off): + self.offset = off + + def reload(self): + pass + + def show(self): + bytecode._PrintSubBanner("Encoded Array Item") + self.value.show() + + def get_obj(self): + return [self.value] + + def get_raw(self): + return self.value.get_raw() + + def get_length(self): + return self.value.get_length() + + def get_off(self): + return self.offset + + +class StringDataItem: + """ + This class can parse a string_data_item of a dex file + + Strings in Dalvik files might not be representable in python! + This is due to the fact, that you can store any UTF-16 character inside + a Dalvik file, but this string might not be decodeable in python as it can + contain invalid surrogate-pairs. + + To circumvent this issue, this class has different methods how to access the + string. There are also some fallbacks implemented to make a "invalid" string + printable in python. + Dalvik uses MUTF-8 as encoding for the strings. This encoding has the + advantage to allow for null terminated strings in UTF-8 encoding, as the + null character maps to something else. + Therefore you can use :meth:`get_data` to retrieve the actual data of the + string and can handle encoding yourself. + Or you use :meth:`get_unicode` to return a decoded UTF-16 string, which + might cause problems during printing or saving. + If you want a representation of the string, which should be printable in + python you ca use :meth:`get` which escapes invalid characters. + + :param buff: a string which represents a Buff object of the string_data_item + :type buff: BuffHandle + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + # Content of string_data_item + self.utf16_size = readuleb128(buff) + self.data = read_null_terminated_string(buff) + + def get_utf16_size(self): + """ + Return the size of this string, in UTF-16 code units + + :rtype:int + """ + return self.utf16_size + + def get_data(self): + """ + Return a series of MUTF-8 code units (a.k.a. octets, a.k.a. bytes) followed by a byte of value 0 + + :rtype: string + """ + return self.data + b"\x00" + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def reload(self): + pass + + def get_unicode(self): + """ + Returns an Unicode String + This is the actual string. Beware that some strings might be not + decodeable with usual UTF-16 decoder, as they use surrogates that are + not supported by python. + """ + s = mutf8.decode(self.data) + if len(s) != self.utf16_size: + raise ValueError("UTF16 Length does not match!") + + # Return a UTF16 String + return s + + def get(self): + """ + Returns a printable string. + In this case, all lonely surrogates are escaped, thus are represented in the + string as 6 characters: \\ud853 + Valid surrogates are encoded as 32bit values, ie. \U00024f5c. + """ + s = mutf8.decode(self.data) + if len(s) != self.utf16_size: + raise ValueError("UTF16 Length does not match!") + # log.debug("Decoding UTF16 string with IDX {}, utf16 length {} and hexdata '{}'.".format(self.offset, self.utf16_size, binascii.hexlify(self.data))) + return mutf8.patch_string(s) + + def show(self): + bytecode._PrintSubBanner("String Data Item") + bytecode._PrintDefault("utf16_size=%d data=%s\n" % + (self.utf16_size, repr(self.get()))) + + def get_obj(self): + return [] + + def get_raw(self): + """ + Returns the raw string including the ULEB128 coded length + and null byte string terminator + + :return: bytes + """ + return writeuleb128(self.utf16_size) + self.data + b"\x00" + + def get_length(self): + """ + Get the length of the raw string including the ULEB128 coded + length and the null byte terminator + + :return: int + """ + return len(writeuleb128(self.utf16_size)) + len(self.data) + 1 + + +class StringIdItem(object): + """ + This class can parse a string_id_item of a dex file + + :param buff: a string which represents a Buff object of the string_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.string_data_off = unpack("=I", buff.read(4))[0] + + def get_string_data_off(self): + """ + Return the offset from the start of the file to the string data for this item + + :rtype: int + """ + return self.string_data_off + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def reload(self): + pass + + def show(self): + bytecode._PrintSubBanner("String Id Item") + bytecode._PrintDefault("string_data_off=%x\n" % self.string_data_off) + + def get_obj(self): + if self.string_data_off != 0: + self.string_data_off = self.CM.get_string_by_offset( + self.string_data_off).get_off() + + return pack("=I", self.string_data_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class TypeIdItem(object): + """ + This class can parse a type_id_item of a dex file + + :param buff: a string which represents a Buff object of the type_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.descriptor_idx = unpack("=I", buff.read(4))[0] + self.descriptor_idx_value = None + + def get_descriptor_idx(self): + """ + Return the index into the string_ids list for the descriptor string of this type + + :rtype: int + """ + return self.descriptor_idx + + def get_descriptor_idx_value(self): + """ + Return the string associated to the descriptor + + :rtype: string + """ + return self.descriptor_idx_value + + def reload(self): + self.descriptor_idx_value = self.CM.get_string(self.descriptor_idx) + + def show(self): + bytecode._PrintSubBanner("Type Id Item") + bytecode._PrintDefault("descriptor_idx=%d descriptor_idx_value=%s\n" % + (self.descriptor_idx, self.descriptor_idx_value)) + + def get_obj(self): + return pack("=I", self.descriptor_idx) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class TypeHIdItem(object): + """ + This class can parse a list of type_id_item of a dex file + + :param buff: a string which represents a Buff object of the list of type_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, size, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.type = [] + for i in range(0, size): + self.type.append(TypeIdItem(buff, cm)) + + def get_type(self): + """ + Return the list of type_id_item + + :rtype: a list of :class:`TypeIdItem` objects + """ + return self.type + + def get(self, idx): + try: + return self.type[idx].get_descriptor_idx() + except IndexError: + return -1 + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def reload(self): + for i in self.type: + i.reload() + + def show(self): + bytecode._PrintSubBanner("Type List Item") + for i in self.type: + i.show() + + def get_obj(self): + return [i for i in self.type] + + def get_raw(self): + return b''.join(i.get_raw() for i in self.type) + + def get_length(self): + length = 0 + for i in self.type: + length += i.get_length() + return length + + +class ProtoIdItem(object): + """ + This class can parse a proto_id_item of a dex file + + :param buff: a string which represents a Buff object of the proto_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.shorty_idx = unpack("=I", buff.read(4))[0] + self.return_type_idx = unpack("=I", buff.read(4))[0] + self.parameters_off = unpack("=I", buff.read(4))[0] + + self.shorty_idx_value = None + self.return_type_idx_value = None + self.parameters_off_value = None + + def reload(self): + self.shorty_idx_value = self.CM.get_string(self.shorty_idx) + self.return_type_idx_value = self.CM.get_type(self.return_type_idx) + + def get_shorty_idx(self): + """ + Return the index into the string_ids list for the short-form descriptor string of this prototype + + :rtype: int + """ + return self.shorty_idx + + def get_return_type_idx(self): + """ + Return the index into the type_ids list for the return type of this prototype + + :rtype: int + """ + return self.return_type_idx + + def get_parameters_off(self): + """ + Return the offset from the start of the file to the list of parameter types for this prototype, or 0 if this prototype has no parameters + + :rtype: int + """ + return self.parameters_off + + def get_shorty_idx_value(self): + """ + Return the string associated to the shorty_idx + + :rtype: string + """ + if self.shorty_idx_value is None: + self.shorty_idx_value = self.CM.get_string(self.shorty_idx) + return self.shorty_idx_value + + def get_return_type_idx_value(self): + """ + Return the string associated to the return_type_idx + + :rtype: string + """ + if self.return_type_idx_value is None: + self.return_type_idx_value = self.CM.get_type(self.return_type_idx) + + return self.return_type_idx_value + + def get_parameters_off_value(self): + """ + Return the string associated to the parameters_off + + :rtype: string + """ + if self.parameters_off_value is None: + params = self.CM.get_type_list(self.parameters_off) + self.parameters_off_value = u'({})'.format(' '.join(params)) + return self.parameters_off_value + + def show(self): + bytecode._PrintSubBanner("Proto Item") + bytecode._PrintDefault( + "shorty_idx=%d return_type_idx=%d parameters_off=%d\n" % + (self.shorty_idx, self.return_type_idx, self.parameters_off)) + bytecode._PrintDefault( + "shorty_idx_value=%s return_type_idx_value=%s parameters_off_value=%s\n" + % (self.shorty_idx_value, self.return_type_idx_value, + self.parameters_off_value)) + + def get_obj(self): + if self.parameters_off != 0: + self.parameters_off = self.CM.get_obj_by_offset( + self.parameters_off).get_off() + + return pack("=I", self.shorty_idx) + pack( + "=I", self.return_type_idx) + pack("=I", self.parameters_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class ProtoHIdItem(object): + """ + This class can parse a list of proto_id_item of a dex file + + :param buff: a string which represents a Buff object of the list of proto_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, size, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.proto = [] + + for i in range(0, size): + self.proto.append(ProtoIdItem(buff, cm)) + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def get(self, idx): + try: + return self.proto[idx] + except IndexError: + return ProtoIdItemInvalid() + + def reload(self): + for i in self.proto: + i.reload() + + def show(self): + bytecode._PrintSubBanner("Proto List Item") + for i in self.proto: + i.show() + + def get_obj(self): + return [i for i in self.proto] + + def get_raw(self): + return b''.join(i.get_raw() for i in self.proto) + + def get_length(self): + length = 0 + for i in self.proto: + length += i.get_length() + return length + + +class FieldIdItem(object): + """ + This class can parse a field_id_item of a dex file + + :param buff: a string which represents a Buff object of the field_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.class_idx = unpack("=H", buff.read(2))[0] + self.type_idx = unpack("=H", buff.read(2))[0] + self.name_idx = unpack("=I", buff.read(4))[0] + + self.class_idx_value = None + self.type_idx_value = None + self.name_idx_value = None + + def reload(self): + self.class_idx_value = self.CM.get_type(self.class_idx) + self.type_idx_value = self.CM.get_type(self.type_idx) + self.name_idx_value = self.CM.get_string(self.name_idx) + + def get_class_idx(self): + """ + Return the index into the type_ids list for the definer of this field + + :rtype: int + """ + return self.class_idx + + def get_type_idx(self): + """ + Return the index into the type_ids list for the type of this field + + :rtype: int + """ + return self.type_idx + + def get_name_idx(self): + """ + Return the index into the string_ids list for the name of this field + + :rtype: int + """ + return self.name_idx + + def get_class_name(self): + """ + Return the class name of the field + + :rtype: string + """ + if self.class_idx_value is None: + self.class_idx_value = self.CM.get_type(self.class_idx) + + return self.class_idx_value + + def get_type(self): + """ + Return the type of the field + + :rtype: string + """ + if self.type_idx_value is None: + self.type_idx_value = self.CM.get_type(self.type_idx) + + return self.type_idx_value + + def get_descriptor(self): + """ + Return the descriptor of the field + + :rtype: string + """ + if self.type_idx_value is None: + self.type_idx_value = self.CM.get_type(self.type_idx) + + return self.type_idx_value + + def get_name(self): + """ + Return the name of the field + + :rtype: string + """ + if self.name_idx_value is None: + self.name_idx_value = self.CM.get_string(self.name_idx) + + return self.name_idx_value + + def get_list(self): + return [self.get_class_name(), self.get_type(), self.get_name()] + + def show(self): + bytecode._PrintSubBanner("Field Id Item") + bytecode._PrintDefault("class_idx=%d type_idx=%d name_idx=%d\n" % + (self.class_idx, self.type_idx, self.name_idx)) + bytecode._PrintDefault( + "class_idx_value=%s type_idx_value=%s name_idx_value=%s\n" % + (self.class_idx_value, self.type_idx_value, self.name_idx_value)) + + def get_obj(self): + return pack("=H", self.class_idx) + \ + pack("=H", self.type_idx) + \ + pack("=I", self.name_idx) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class FieldHIdItem(object): + """ + This class can parse a list of field_id_item of a dex file + + :param buff: a string which represents a Buff object of the list of field_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, size, buff, cm): + self.offset = buff.get_idx() + + self.elem = [] + for i in range(0, size): + self.elem.append(FieldIdItem(buff, cm)) + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def gets(self): + return self.elem + + def get(self, idx): + try: + return self.elem[idx] + except IndexError: + return FieldIdItemInvalid() + + def reload(self): + for i in self.elem: + i.reload() + + def show(self): + nb = 0 + for i in self.elem: + print(nb, end=' ') + i.show() + nb = nb + 1 + + def get_obj(self): + return [i for i in self.elem] + + def get_raw(self): + return b''.join(i.get_raw() for i in self.elem) + + def get_length(self): + length = 0 + for i in self.elem: + length += i.get_length() + return length + + +class MethodIdItem(object): + """ + This class can parse a method_id_item of a dex file + + :param buff: a string which represents a Buff object of the method_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.class_idx = unpack("=H", buff.read(2))[0] + self.proto_idx = unpack("=H", buff.read(2))[0] + self.name_idx = unpack("=I", buff.read(4))[0] + + self.class_idx_value = None + self.proto_idx_value = None + self.name_idx_value = None + + def reload(self): + self.class_idx_value = self.CM.get_type(self.class_idx) + self.proto_idx_value = self.CM.get_proto(self.proto_idx) + self.name_idx_value = self.CM.get_string(self.name_idx) + + def get_class_idx(self): + """ + Return the index into the type_ids list for the definer of this method + + :rtype: int + """ + return self.class_idx + + def get_proto_idx(self): + """ + Return the index into the proto_ids list for the prototype of this method + + :rtype: int + """ + return self.proto_idx + + def get_name_idx(self): + """ + Return the index into the string_ids list for the name of this method + + :rtype: int + """ + return self.name_idx + + def get_class_name(self): + """ + Return the class name of the method + + :rtype: string + """ + if self.class_idx_value is None: + self.class_idx_value = self.CM.get_type(self.class_idx) + + return self.class_idx_value + + def get_proto(self): + """ + Return the prototype of the method + + :rtype: string + """ + if self.proto_idx_value is None: + self.proto_idx_value = self.CM.get_proto(self.proto_idx) + + return self.proto_idx_value + + def get_descriptor(self): + """ + Return the descriptor + + :rtype: string + """ + proto = self.get_proto() + return proto[0] + proto[1] + + def get_real_descriptor(self): + """ + Return the real descriptor (i.e. without extra spaces) + + :rtype: string + """ + proto = self.get_proto() + return proto[0].replace(' ', '') + proto[1] + + def get_name(self): + """ + Return the name of the method + + :rtype: string + """ + if self.name_idx_value is None: + self.name_idx_value = self.CM.get_string(self.name_idx) + + return self.name_idx_value + + def get_list(self): + return [self.get_class_name(), self.get_name(), self.get_proto()] + + def get_triple(self): + return self.get_class_name()[1:-1], self.get_name( + ), self.get_real_descriptor() + + def show(self): + bytecode._PrintSubBanner("Method Id Item") + bytecode._PrintDefault("class_idx=%d proto_idx=%d name_idx=%d\n" % + (self.class_idx, self.proto_idx, self.name_idx)) + bytecode._PrintDefault( + "class_idx_value=%s proto_idx_value=%s name_idx_value=%s\n" % + (self.class_idx_value, self.proto_idx_value, self.name_idx_value)) + + def get_obj(self): + return pack("H", self.class_idx) + pack("H", self.proto_idx) + pack( + "I", self.name_idx) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class MethodHIdItem(object): + """ + This class can parse a list of method_id_item of a dex file + + :param buff: a string which represents a Buff object of the list of method_id_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, size, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.methods = [] + for i in range(0, size): + self.methods.append(MethodIdItem(buff, cm)) + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def get(self, idx): + try: + return self.methods[idx] + except IndexError: + return MethodIdItemInvalid() + + def reload(self): + for i in self.methods: + i.reload() + + def show(self): + print("METHOD_ID_ITEM") + nb = 0 + for i in self.methods: + print(nb, end=' ') + i.show() + nb = nb + 1 + + def get_obj(self): + return [i for i in self.methods] + + def get_raw(self): + return b''.join(i.get_raw() for i in self.methods) + + def get_length(self): + length = 0 + for i in self.methods: + length += i.get_length() + return length + + +class ProtoIdItemInvalid(object): + def get_params(self): + return "AG:IPI:invalid_params;" + + def get_shorty(self): + return "(AG:IPI:invalid_shorty)" + + def get_return_type(self): + return "(AG:IPI:invalid_return_type)" + + def show(self): + print("AG:IPI:invalid_proto_item", self.get_shorty( + ), self.get_return_type(), self.get_params()) + + +class FieldIdItemInvalid(object): + def get_class_name(self): + return "AG:IFI:invalid_class_name;" + + def get_type(self): + return "(AG:IFI:invalid_type)" + + def get_descriptor(self): + return "(AG:IFI:invalid_descriptor)" + + def get_name(self): + return "AG:IFI:invalid_name" + + def get_list(self): + return [self.get_class_name(), self.get_type(), self.get_name()] + + def show(self): + print("AG:IFI:invalid_field_item") + + +class MethodIdItemInvalid(object): + def get_class_name(self): + return "AG:IMI:invalid_class_name;" + + def get_descriptor(self): + return "(AG:IMI:invalid_descriptor)" + + def get_proto(self): + return "()AG:IMI:invalid_proto" + + def get_name(self): + return "AG:IMI:invalid_name" + + def get_list(self): + return [self.get_class_name(), self.get_name(), self.get_proto()] + + def show(self): + print("AG:IMI:invalid_method_item") + + +class EncodedField(object): + """ + This class can parse an encoded_field of a dex file + + :param buff: a string which represents a Buff object of the encoded field + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.field_idx_diff = readuleb128(buff) + self.access_flags = readuleb128(buff) + + self.field_idx = 0 + + self.name = None + self.proto = None + self.class_name = None + + self.init_value = None + self.access_flags_string = None + self.loaded = False + + def load(self): + if self.loaded: + return + self.reload() + self.loaded = True + + def reload(self): + name = self.CM.get_field(self.field_idx) + self.class_name = name[0] + self.name = name[2] + self.proto = ''.join(i for i in name[1]) + + def set_init_value(self, value): + """ + Setup the init value object of the field + + :param value: the init value + :type value: :class:`EncodedValue` + """ + self.init_value = value + + def get_init_value(self): + """ + Return the init value object of the field + + :rtype: :class:`EncodedValue` + """ + return self.init_value + + def adjust_idx(self, val): + self.field_idx = self.field_idx_diff + val + + def get_field_idx_diff(self): + """ + Return the index into the field_ids list for the identity of this field (includes the name and descriptor), + represented as a difference from the index of previous element in the list + + :rtype: int + """ + return self.field_idx_diff + + def get_field_idx(self): + """ + Return the real index of the method + + :rtype: int + """ + return self.field_idx + + def get_access_flags(self): + """ + Return the access flags of the field + + :rtype: int + """ + return self.access_flags + + def get_class_name(self): + """ + Return the class name of the field + + :rtype: string + """ + if not self.loaded: + self.load() + return self.class_name + + def get_descriptor(self): + """ + Return the descriptor of the field + + The descriptor of a field is the type of the field. + + :rtype: string + """ + if not self.loaded: + self.load() + return self.proto + + def get_name(self): + """ + Return the name of the field + + :rtype: string + """ + if not self.loaded: + self.load() + return self.name + + def get_access_flags_string(self): + """ + Return the access flags string of the field + + :rtype: string + """ + if self.access_flags_string is None: + self.access_flags_string = get_access_flags_string( + self.get_access_flags()) + + if self.access_flags_string == "": + self.access_flags_string = "0x%x" % self.get_access_flags() + return self.access_flags_string + + def set_name(self, value): + self.CM.set_hook_field_name(self, value) + self.reload() + + def get_obj(self): + return [] + + def get_raw(self): + return writeuleb128(self.field_idx_diff) + writeuleb128( + self.access_flags) + + def get_size(self): + return len(self.get_raw()) + + def show(self): + """ + Display the information (with a pretty print) about the field + """ + bytecode._PrintSubBanner("Field Information") + bytecode._PrintDefault("%s->%s %s [access_flags=%s]\n" % ( + self.get_class_name(), self.get_name(), self.get_descriptor(), + self.get_access_flags_string())) + + init_value = self.get_init_value() + if init_value is not None: + bytecode._PrintDefault("\tinit value: %s\n" % + str(init_value.get_value())) + + def __str__(self): + return "%s->%s %s [access_flags=%s]\n" % ( + self.get_class_name(), self.get_name(), self.get_descriptor(), + self.get_access_flags_string()) + + +class EncodedMethod(object): + """ + This class can parse an encoded_method of a dex file + + :param buff: a string which represents a Buff object of the encoded_method + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.method_idx_diff = readuleb128(buff) #: method index diff in the corresponding section + self.access_flags = readuleb128(buff) #: access flags of the method + self.code_off = readuleb128(buff) #: offset of the code section + + self.method_idx = 0 + + self.name = None + self.proto = None + self.class_name = None + + self.code = None + + self.access_flags_string = None + + self.notes = [] + self.loaded = False + + def adjust_idx(self, val): + self.method_idx = self.method_idx_diff + val + + def get_method_idx(self): + """ + Return the real index of the method + + :rtype: int + """ + return self.method_idx + + def get_method_idx_diff(self): + """ + Return index into the method_ids list for the identity of this method (includes the name and descriptor), + represented as a difference from the index of previous element in the lis + + :rtype: int + """ + return self.method_idx_diff + + def get_access_flags(self): + """ + Return the access flags of the method + + :rtype: int + """ + return self.access_flags + + def get_code_off(self): + """ + Return the offset from the start of the file to the code structure for this method, + or 0 if this method is either abstract or native + + :rtype: int + """ + return self.code_off + + def get_address(self): + """ + Return the offset from the start of the file to the code structure for this method, + or 0 if this method is either abstract or native + + :rtype: int + """ + return self.code_off + 0x10 + + def get_access_flags_string(self): + """ + Return the access flags string of the method + + A description of all access flags can be found here: + https://source.android.com/devices/tech/dalvik/dex-format#access-flags + + :rtype: string + """ + if self.access_flags_string is None: + self.access_flags_string = get_access_flags_string(self.get_access_flags()) + + if self.access_flags_string == "" and self.get_access_flags() != 0x0: + self.access_flags_string = "0x%x" % self.get_access_flags() + return self.access_flags_string + + def load(self): + if self.loaded: + return + self.reload() + self.loaded = True + + def reload(self): + v = self.CM.get_method(self.method_idx) + # TODO this can probably be more elegant: + # get_method returns an array with the already resolved types. + # But for example to count the number of parameters, we need to split the string now. + # This is quite tedious and could be avoided if we would return the type IDs + # instead and resolve them here. + if v and len(v) >= 3: + self.class_name = v[0] + self.name = v[1] + self.proto = ''.join(i for i in v[2]) + else: + self.class_name = 'CLASS_NAME_ERROR' + self.name = 'NAME_ERROR' + self.proto = 'PROTO_ERROR' + + self.code = self.CM.get_code(self.code_off) + + def get_locals(self): + ret = self.proto.split(')') + params = ret[0][1:].split() + + return self.code.get_registers_size() - len(params) - 1 + + def get_information(self): + info = {} + if self.code: + nb = self.code.get_registers_size() + proto = self.get_descriptor() + + ret = proto.split(')') + params = ret[0][1:].split() + + ret = proto.split(')') + params = ret[0][1:].split() + if params: + info["registers"] = (0, nb - len(params) - 1) + j = 0 + info["params"] = [] + for i in range(nb - len(params), nb): + info["params"].append((i, get_type(params[j]))) + j += 1 + else: + info["registers"] = (0, nb - 1) + + info["return"] = get_type(ret[1]) + return info + + def each_params_by_register(self, nb, proto): + """ + From the Dalvik Bytecode documentation: + + > The N arguments to a method land in the last N registers + > of the method's invocation frame, in order. + > Wide arguments consume two registers. + > Instance methods are passed a this reference as their first argument. + + This method will print a description of the register usage to stdout. + + :param nb: number of registers + :param proto: descriptor of method + """ + bytecode._PrintSubBanner("Params") + + ret = proto.split(')') + params = ret[0][1:].split() + if params: + bytecode._PrintDefault("- local registers: v%d...v%d\n" % + (0, nb - len(params) - 1)) + j = 0 + for i in range(nb - len(params), nb): + bytecode._PrintDefault("- v%d: %s\n" % (i, get_type(params[j]))) + j += 1 + else: + bytecode._PrintDefault("local registers: v%d...v%d\n" % (0, nb - 1)) + + bytecode._PrintDefault("- return: %s\n" % get_type(ret[1])) + bytecode._PrintSubBanner() + + def __str__(self): + return "%s->%s%s [access_flags=%s] @ 0x%x" % ( + self.get_class_name(), self.get_name(), self.get_descriptor(), + self.get_access_flags_string(), self.get_code_off()) + + def get_short_string(self): + """ + Return a shorter formatted String which encodes this method. + The returned name has the form: + ([arguments ...]) + + * All Class names are condensed to the actual name (no package). + * Access flags are not returned. + * and are NOT replaced by the classname! + + This name might not be unique! + + :return: str + """ + def _fmt_classname(cls): + arr = "" + # Test for arrays + while cls.startswith("["): + arr += "[" + cls = cls[1:] + + # is a object type + if cls.startswith("L"): + cls = cls[1:-1] + # only return last element + if "/" in cls: + cls = cls.rsplit("/", 1)[1] + return arr + cls + + clsname = _fmt_classname(self.get_class_name()) + + param, ret = self.get_descriptor()[1:].split(")") + params = map(_fmt_classname, param.split(" ")) + desc = "({}){}".format(" ".join(params), _fmt_classname(ret)) + + return "{cls} {meth} {desc}".format(cls=clsname, meth=self.get_name(), desc=desc) + + def show_info(self): + """ + Display the basic information about the method + """ + bytecode._PrintSubBanner("Method Information") + bytecode._PrintDefault("%s->%s%s [access_flags=%s]\n" % ( + self.get_class_name(), self.get_name(), self.get_descriptor(), + self.get_access_flags_string())) + + def show(self): + """ + Display the information (with a pretty print) about the method + """ + self.show_info() + self.show_notes() + if self.code: + self.each_params_by_register(self.code.get_registers_size(), self.get_descriptor()) + self.code.show() + + def show_notes(self): + """ + Display the notes about the method + """ + if self.notes: + bytecode._PrintSubBanner("Notes") + for i in self.notes: + bytecode._PrintNote(i) + bytecode._PrintSubBanner() + + def source(self): + """ + Return the source code of this method + + :rtype: string + """ + self.CM.decompiler_ob.display_source(self) + + def get_source(self): + return self.CM.decompiler_ob.get_source_method(self) + + def get_length(self): + """ + Return the length of the associated code of the method + + :rtype: int + """ + if self.code is not None: + return self.code.get_length() + return 0 + + def get_code(self): + """ + Return the code object associated to the method + + + :rtype: :class:`DalvikCode` object or None if no Code + """ + if not self.loaded: + self.load() + return self.code + + def is_cached_instructions(self): + if self.code is None: + return False + + return self.code.get_bc().is_cached_instructions() + + def get_instructions(self): + """ + Get the instructions + + :rtype: a generator of each :class:`Instruction` (or a cached list of instructions if you have setup instructions) + """ + if self.code is None: + return [] + return self.code.get_bc().get_instructions() + + def set_instructions(self, instructions): + """ + Set the instructions + + :param instructions: the list of instructions + :type instructions: a list of :class:`Instruction` + """ + if self.code is None: + return [] + return self.code.get_bc().set_instructions(instructions) + + def get_instruction(self, idx, off=None): + """ + Get a particular instruction by using (default) the index of the address if specified + + :param idx: index of the instruction (the position in the list of the instruction) + :type idx: int + :param off: address of the instruction + :type off: int + + :rtype: an :class:`Instruction` object + """ + if self.code is not None: + return self.code.get_bc().get_instruction(idx, off) + return None + + def get_debug(self): + """ + Return the debug object associated to this method + + :rtype: :class:`DebugInfoItem` + """ + if self.code is None: + return None + return self.code.get_debug() + + def get_descriptor(self): + """ + Return the descriptor of the method + A method descriptor will have the form (A A A ...)R + Where A are the arguments to the method and R is the return type. + Basic types will have the short form, i.e. I for integer, V for void + and class types will be named like a classname, e.g. Ljava/lang/String;. + + Typical descriptors will look like this: + ``` + (I)I // one integer argument, integer return + (C)Z // one char argument, boolean as return + (Ljava/lang/CharSequence; I)I // CharSequence and integer as + argyument, integer as return + (C)Ljava/lang/String; // char as argument, String as return. + ``` + + More information about type descriptors are found here: + https://source.android.com/devices/tech/dalvik/dex-format#typedescriptor + + :rtype: string + """ + if not self.loaded: + self.load() + return self.proto + + def get_class_name(self): + """ + Return the class name of the method + + :rtype: string + """ + if not self.loaded: + self.load() + return self.class_name + + def get_name(self): + """ + Return the name of the method + + :rtype: string + """ + if not self.loaded: + self.load() + return self.name + + def get_triple(self): + return self.CM.get_method_ref(self.method_idx).get_triple() + + def add_inote(self, msg, idx, off=None): + """ + Add a message to a specific instruction by using (default) the index of the address if specified + + :param msg: the message + :type msg: string + :param idx: index of the instruction (the position in the list of the instruction) + :type idx: int + :param off: address of the instruction + :type off: int + """ + if self.code is not None: + self.code.add_inote(msg, idx, off) + + def add_note(self, msg): + """ + Add a message to this method + + :param msg: the message + :type msg: string + """ + self.notes.append(msg) + + def set_code_idx(self, idx): + """ + Set the start address of the buffer to disassemble + + :param idx: the index + :type idx: int + """ + if self.code is not None: + self.code.set_idx(idx) + + def set_name(self, value): + self.CM.set_hook_method_name(self, value) + self.reload() + + def get_raw(self): + if self.code is not None: + self.code_off = self.code.get_off() + + return writeuleb128(self.method_idx_diff) + writeuleb128( + self.access_flags) + writeuleb128(self.code_off) + + def get_size(self): + return len(self.get_raw()) + + +class ClassDataItem(object): + """ + This class can parse a class_data_item of a dex file + + :param buff: a string which represents a Buff object of the class_data_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.static_fields_size = readuleb128(buff) + self.instance_fields_size = readuleb128(buff) + self.direct_methods_size = readuleb128(buff) + self.virtual_methods_size = readuleb128(buff) + + self.static_fields = [] + self.instance_fields = [] + self.direct_methods = [] + self.virtual_methods = [] + + self._load_elements(self.static_fields_size, self.static_fields, + EncodedField, buff, cm) + self._load_elements(self.instance_fields_size, self.instance_fields, + EncodedField, buff, cm) + self._load_elements(self.direct_methods_size, self.direct_methods, + EncodedMethod, buff, cm) + self._load_elements(self.virtual_methods_size, self.virtual_methods, + EncodedMethod, buff, cm) + + def reload(self): + pass + + def get_static_fields_size(self): + """ + Return the number of static fields defined in this item + + :rtype: int + """ + return self.static_fields_size + + def get_instance_fields_size(self): + """ + Return the number of instance fields defined in this item + + :rtype: int + """ + return self.instance_fields_size + + def get_direct_methods_size(self): + """ + Return the number of direct methods defined in this item + + :rtype: int + """ + return self.direct_methods_size + + def get_virtual_methods_size(self): + """ + Return the number of virtual methods defined in this item + + :rtype: int + """ + return self.virtual_methods_size + + def get_static_fields(self): + """ + Return the defined static fields, represented as a sequence of encoded elements + + :rtype: a list of :class:`EncodedField` objects + """ + return self.static_fields + + def get_instance_fields(self): + """ + Return the defined instance fields, represented as a sequence of encoded elements + + :rtype: a list of :class:`EncodedField` objects + """ + return self.instance_fields + + def get_direct_methods(self): + """ + Return the defined direct (any of static, private, or constructor) methods, represented as a sequence of encoded elements + + :rtype: a list of :class:`EncodedMethod` objects + """ + return self.direct_methods + + def get_virtual_methods(self): + """ + Return the defined virtual (none of static, private, or constructor) methods, represented as a sequence of encoded elements + + :rtype: a list of :class:`EncodedMethod` objects + + """ + + return self.virtual_methods + + def get_methods(self): + """ + Return direct and virtual methods + + :rtype: a list of :class:`EncodedMethod` objects + """ + return [x + for x in self.direct_methods] + [x + for x in self.virtual_methods] + + def get_fields(self): + """ + Return static and instance fields + + :rtype: a list of :class:`EncodedField` objects + """ + return [x for x in self.static_fields] + [x + for x in self.instance_fields] + + def set_off(self, off): + self.offset = off + + def set_static_fields(self, value): + if value is not None: + values = value.get_values() + if len(values) <= len(self.static_fields): + for i in range(0, len(values)): + self.static_fields[i].set_init_value(values[i]) + + def _load_elements(self, size, l, Type, buff, cm): + prev = 0 + for i in range(0, size): + el = Type(buff, cm) + el.adjust_idx(prev) + + if isinstance(el, EncodedField): + prev = el.get_field_idx() + else: + prev = el.get_method_idx() + + l.append(el) + + def show(self): + bytecode._PrintSubBanner("Class Data Item") + bytecode._PrintDefault( + "static_fields_size=%d instance_fields_size=%d direct_methods_size=%d virtual_methods_size=%d\n" % \ + (self.static_fields_size, self.instance_fields_size, self.direct_methods_size, self.virtual_methods_size)) + + bytecode._PrintSubBanner("Static Fields") + for i in self.static_fields: + i.show() + + bytecode._PrintSubBanner("Instance Fields") + for i in self.instance_fields: + i.show() + + bytecode._PrintSubBanner("Direct Methods") + for i in self.direct_methods: + i.show() + + bytecode._PrintSubBanner("Virtual Methods") + for i in self.virtual_methods: + i.show() + + def get_obj(self): + return [i for i in self.static_fields] + \ + [i for i in self.instance_fields] + \ + [i for i in self.direct_methods] + \ + [i for i in self.virtual_methods] + + def get_raw(self): + buff = writeuleb128(self.static_fields_size) + \ + writeuleb128(self.instance_fields_size) + \ + writeuleb128(self.direct_methods_size) + \ + writeuleb128(self.virtual_methods_size) + \ + b''.join(i.get_raw() for i in self.static_fields) + \ + b''.join(i.get_raw() for i in self.instance_fields) + \ + b''.join(i.get_raw() for i in self.direct_methods) + \ + b''.join(i.get_raw() for i in self.virtual_methods) + + return buff + + def get_length(self): + length = len(writeuleb128(self.static_fields_size)) + \ + len(writeuleb128(self.instance_fields_size)) + \ + len(writeuleb128(self.direct_methods_size)) + \ + len(writeuleb128(self.virtual_methods_size)) + + for i in self.static_fields: + length += i.get_size() + + for i in self.instance_fields: + length += i.get_size() + + for i in self.direct_methods: + length += i.get_size() + + for i in self.virtual_methods: + length += i.get_size() + + return length + + def get_off(self): + return self.offset + + +class ClassDefItem(object): + """ + This class can parse a class_def_item of a dex file + + :param buff: a string which represents a Buff object of the class_def_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.class_idx = unpack("=I", buff.read(4))[0] + self.access_flags = unpack("=I", buff.read(4))[0] + self.superclass_idx = unpack("=I", buff.read(4))[0] + self.interfaces_off = unpack("=I", buff.read(4))[0] + self.source_file_idx = unpack("=I", buff.read(4))[0] + self.annotations_off = unpack("=I", buff.read(4))[0] + self.class_data_off = unpack("=I", buff.read(4))[0] + self.static_values_off = unpack("=I", buff.read(4))[0] + + self.interfaces = [] + self.class_data_item = None + self.static_values = None + + self.name = None + self.sname = None + self.access_flags_string = None + + def reload(self): + self.name = self.CM.get_type(self.class_idx) + self.sname = self.CM.get_type(self.superclass_idx) + self.interfaces = self.CM.get_type_list(self.interfaces_off) + + if self.class_data_off != 0: + self.class_data_item = self.CM.get_class_data_item(self.class_data_off) + self.class_data_item.reload() + + if self.static_values_off != 0: + self.static_values = self.CM.get_encoded_array_item(self.static_values_off) + + if self.class_data_item: + self.class_data_item.set_static_fields(self.static_values.get_value()) + + def __str__(self): + return "%s->%s" % (self.get_superclassname(), self.get_name()) + + def __repr__(self): + return "".format(self.__str__()) + + def get_methods(self): + """ + Return all methods of this class + + :rtype: a list of :class:`EncodedMethod` objects + """ + if self.class_data_item is not None: + return self.class_data_item.get_methods() + return [] + + def get_fields(self): + """ + Return all fields of this class + + :rtype: a list of :class:`EncodedField` objects + """ + if self.class_data_item is not None: + return self.class_data_item.get_fields() + return [] + + def get_class_idx(self): + """ + Return the index into the type_ids list for this class + + :rtype: int + """ + return self.class_idx + + def get_access_flags(self): + """ + Return the access flags for the class (public, final, etc.) + + :rtype: int + """ + return self.access_flags + + def get_superclass_idx(self): + """ + Return the index into the type_ids list for the superclass + + :rtype: int + """ + return self.superclass_idx + + def get_interfaces_off(self): + """ + Return the offset from the start of the file to the list of interfaces, or 0 if there are none + + :rtype: int + """ + return self.interfaces_off + + def get_source_file_idx(self): + """ + Return the index into the string_ids list for the name of the file containing the original + source for (at least most of) this class, or the special value NO_INDEX to represent a lack of this information + + :rtype: int + """ + return self.source_file_idx + + def get_annotations_off(self): + """ + Return the offset from the start of the file to the annotations structure for this class, + or 0 if there are no annotations on this class. + + :rtype: int + """ + return self.annotations_off + + def get_class_data_off(self): + """ + Return the offset from the start of the file to the associated class data for this item, + or 0 if there is no class data for this class + + :rtype: int + """ + return self.class_data_off + + def get_static_values_off(self): + """ + Return the offset from the start of the file to the list of initial values for static fields, + or 0 if there are none (and all static fields are to be initialized with 0 or null) + + :rtype: int + """ + return self.static_values_off + + def get_class_data(self): + """ + Return the associated class_data_item + + :rtype: a :class:`ClassDataItem` object + """ + return self.class_data_item + + def get_name(self): + """ + Return the name of this class + + :rtype: str + """ + return self.name + + def get_superclassname(self): + """ + Return the name of the super class + + :rtype: str + """ + return self.sname + + def get_interfaces(self): + """ + Return the name of the interface + + :rtype: str + """ + return self.interfaces + + def get_access_flags_string(self): + """ + Return the access flags string of the class + + :rtype: str + """ + if self.access_flags_string is None: + self.access_flags_string = get_access_flags_string( + self.get_access_flags()) + + if self.access_flags_string == "": + self.access_flags_string = "0x%x" % self.get_access_flags() + return self.access_flags_string + + def show(self): + bytecode._PrintSubBanner("Class Def Item") + bytecode._PrintDefault( + "name=%s, sname=%s, interfaces=%s, access_flags=%s\n" % + (self.name, self.sname, self.interfaces, + self.get_access_flags_string())) + bytecode._PrintDefault( + "class_idx=%d, superclass_idx=%d, interfaces_off=%x, source_file_idx=%d, annotations_off=%x, class_data_off=%x, static_values_off=%x\n" + % (self.class_idx, self.superclass_idx, self.interfaces_off, + self.source_file_idx, self.annotations_off, self.class_data_off, + self.static_values_off)) + + for method in self.get_methods(): + method.show() + + def source(self): + """ + Return the source code of the entire class + + :rtype: string + """ + self.CM.decompiler_ob.display_all(self) + + def get_source(self): + return self.CM.decompiler_ob.get_source_class(self) + + def get_source_ext(self): + return self.CM.decompiler_ob.get_source_class_ext(self) + + def get_ast(self): + return self.CM.decompiler_ob.get_ast_class(self) + + def set_name(self, value): + self.CM.set_hook_class_name(self, value) + + def get_obj(self): + if self.interfaces_off != 0: + self.interfaces_off = self.CM.get_obj_by_offset( + self.interfaces_off).get_off() + + if self.annotations_off != 0: + self.annotations_off = self.CM.get_obj_by_offset( + self.annotations_off).get_off() + + if self.class_data_off != 0: + self.class_data_off = self.CM.get_obj_by_offset( + self.class_data_off).get_off() + + if self.static_values_off != 0: + self.static_values_off = self.CM.get_obj_by_offset( + self.static_values_off).get_off() + + return pack("=I", self.class_idx) + \ + pack("=I", self.access_flags) + \ + pack("=I", self.superclass_idx) + \ + pack("=I", self.interfaces_off) + \ + pack("=I", self.source_file_idx) + \ + pack("=I", self.annotations_off) + \ + pack("=I", self.class_data_off) + \ + pack("=I", self.static_values_off) + + def get_raw(self): + return self.get_obj() + + def get_length(self): + return len(self.get_obj()) + + +class ClassHDefItem(object): + """ + This class can parse a list of class_def_item of a dex file + + :param buff: a string which represents a Buff object of the list of class_def_item + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, size, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.class_def = [] + + for i in range(0, size): + idx = buff.get_idx() + + class_def = ClassDefItem(buff, cm) + self.class_def.append(class_def) + + buff.set_idx(idx + calcsize("=IIIIIIII")) + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def get_class_idx(self, idx): + for i in self.class_def: + if i.get_class_idx() == idx: + return i + return None + + def get_method(self, name_class, name_method): + l = [] + + for i in self.class_def: + if i.get_name() == name_class: + for j in i.get_methods(): + if j.get_name() == name_method: + l.append(j) + + return l + + def get_names(self): + return [x.get_name() for x in self.class_def] + + def reload(self): + for i in self.class_def: + i.reload() + + def show(self): + for i in self.class_def: + i.show() + + def get_obj(self): + return [i for i in self.class_def] + + def get_raw(self): + return b''.join(i.get_raw() for i in self.class_def) + + def get_length(self): + length = 0 + for i in self.class_def: + length += i.get_length() + return length + + +class EncodedTypeAddrPair(object): + """ + This class can parse an encoded_type_addr_pair of a dex file + + :param buff: a string which represents a Buff object of the encoded_type_addr_pair + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff): + self.type_idx = readuleb128(buff) + self.addr = readuleb128(buff) + + def get_type_idx(self): + """ + Return the index into the type_ids list for the type of the exception to catch + + :rtype: int + """ + return self.type_idx + + def get_addr(self): + """ + Return the bytecode address of the associated exception handler + + :rtype: int + """ + return self.addr + + def get_obj(self): + return [] + + def show(self): + bytecode._PrintSubBanner("Encoded Type Addr Pair") + bytecode._PrintDefault("type_idx=%d addr=%x\n" % + (self.type_idx, self.addr)) + + def get_raw(self): + return writeuleb128(self.type_idx) + writeuleb128(self.addr) + + def get_length(self): + return len(self.get_raw()) + + +class EncodedCatchHandler(object): + """ + This class can parse an encoded_catch_handler of a dex file + + :param buff: a string which represents a Buff object of the encoded_catch_handler + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.offset = buff.get_idx() + + self.size = readsleb128(buff) + + self.handlers = [] + + for i in range(0, abs(self.size)): + self.handlers.append(EncodedTypeAddrPair(buff)) + + if self.size <= 0: + self.catch_all_addr = readuleb128(buff) + + def get_size(self): + """ + Return the number of catch types in this list + + :rtype: int + """ + return self.size + + def get_handlers(self): + """ + Return the stream of abs(size) encoded items, one for each caught type, in the order that the types should be tested. + + :rtype: a list of :class:`EncodedTypeAddrPair` objects + """ + return self.handlers + + def get_catch_all_addr(self): + """ + Return the bytecode address of the catch-all handler. This element is only present if size is non-positive. + + :rtype: int + """ + return self.catch_all_addr + + def get_off(self): + return self.offset + + def set_off(self, off): + self.offset = off + + def show(self): + bytecode._PrintSubBanner("Encoded Catch Handler") + bytecode._PrintDefault("size=%d\n" % self.size) + + for i in self.handlers: + i.show() + + if self.size <= 0: + bytecode._PrintDefault("catch_all_addr=%x\n" % self.catch_all_addr) + + def get_raw(self): + """ + :rtype: bytearray + """ + buff = bytearray() + buff += writesleb128(self.size) + for i in self.handlers: + buff += i.get_raw() + + if self.size <= 0: + buff += writeuleb128(self.catch_all_addr) + + return buff + + def get_length(self): + length = len(writesleb128(self.size)) + + for i in self.handlers: + length += i.get_length() + + if self.size <= 0: + length += len(writeuleb128(self.catch_all_addr)) + + return length + + +class EncodedCatchHandlerList(object): + """ + This class can parse an encoded_catch_handler_list of a dex file + + :param buff: a string which represents a Buff object of the encoded_catch_handler_list + :type buff: Buff object + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + """ + + def __init__(self, buff, cm): + self.offset = buff.get_idx() + + self.size = readuleb128(buff) + self.list = [] + + for i in range(0, self.size): + self.list.append(EncodedCatchHandler(buff, cm)) + + def get_size(self): + """ + Return the size of this list, in entries + + :rtype: int + """ + return self.size + + def get_list(self): + """ + Return the actual list of handler lists, represented directly (not as offsets), and concatenated sequentially + + :rtype: a list of :class:`EncodedCatchHandler` objects + """ + return self.list + + def show(self): + bytecode._PrintSubBanner("Encoded Catch Handler List") + bytecode._PrintDefault("size=%d\n" % self.size) + + for i in self.list: + i.show() + + def get_off(self): + return self.offset + + def set_off(self, off): + self.offset = off + + def get_obj(self): + return writeuleb128(self.size) + + def get_raw(self): + """ + :rtype: bytearray + """ + buff = bytearray() + buff += self.get_obj() + for i in self.list: + buff += i.get_raw() + return buff + + def get_length(self): + length = len(self.get_obj()) + + for i in self.list: + length += i.get_length() + return length + + +KIND_METH = 0 +KIND_STRING = 1 +KIND_FIELD = 2 +KIND_TYPE = 3 +VARIES = 4 +INLINE_METHOD = 5 +VTABLE_OFFSET = 6 +FIELD_OFFSET = 7 +KIND_RAW_STRING = 8 + +OPERAND_REGISTER = 0 +OPERAND_LITERAL = 1 +OPERAND_RAW = 2 +OPERAND_OFFSET = 3 +OPERAND_KIND = 0x100 + + +def get_kind(cm, kind, value): + """ + Return the value of the 'kind' argument + + :param cm: a ClassManager object + :type cm: :class:`ClassManager` + :param kind: the type of the 'kind' argument + :type kind: int + :param value: the value of the 'kind' argument + :type value: int + + :rtype: string + """ + if kind == KIND_METH: + method = cm.get_method_ref(value) + class_name = method.get_class_name() + name = method.get_name() + descriptor = method.get_descriptor() + + return "%s->%s%s" % (class_name, name, descriptor) + + elif kind == KIND_STRING: + return repr(cm.get_string(value)) + + elif kind == KIND_RAW_STRING: + return cm.get_string(value) + + elif kind == KIND_FIELD: + class_name, proto, field_name = cm.get_field(value) + return "%s->%s %s" % (class_name, field_name, proto) + + elif kind == KIND_TYPE: + return cm.get_type(value) + + elif kind == VTABLE_OFFSET: + return "vtable[0x%x]" % value + + elif kind == FIELD_OFFSET: + return "field[0x%x]" % value + + elif kind == INLINE_METHOD: + buff = "inline[0x%x]" % value + + # FIXME: depends of the android version ... + if len(INLINE_METHODS) > value: + elem = INLINE_METHODS[value] + buff += " %s->%s%s" % (elem[0], elem[1], elem[2]) + + return buff + + return None + + +class Instruction(object): + """ + This class represents a dalvik instruction + """ + + def get_kind(self): + """ + Return the 'kind' argument of the instruction + + :rtype: int + """ + if self.OP > 0xff: + if self.OP >= 0xf2ff: + return DALVIK_OPCODES_OPTIMIZED[self.OP][1][1] + return DALVIK_OPCODES_EXTENDED_WIDTH[self.OP][1][1] + return DALVIK_OPCODES_FORMAT[self.OP][1][1] + + def get_name(self): + """ + Return the name of the instruction + + :rtype: string + """ + if self.OP > 0xff: + if self.OP >= 0xf2ff: + return DALVIK_OPCODES_OPTIMIZED[self.OP][1][0] + return DALVIK_OPCODES_EXTENDED_WIDTH[self.OP][1][0] + return DALVIK_OPCODES_FORMAT[self.OP][1][0] + + def get_op_value(self): + """ + Return the value of the opcode + + :rtype: int + """ + return self.OP + + def get_literals(self): + """ + Return the associated literals + + :rtype: list of int + """ + return [] + + def show(self, idx): + """ + Print the instruction + """ + print(self.get_name() + " " + self.get_output(idx), end=' ') + + def show_buff(self, idx): + """ + Return the display of the instruction + + :rtype: string + """ + return self.get_output(idx) + + def get_translated_kind(self): + """ + Return the translated value of the 'kind' argument + + :rtype: string + """ + return get_kind(self.cm, self.get_kind(), self.get_ref_kind()) + + def get_output(self, idx=-1): + """ + Return an additional output of the instruction + + :rtype: string + """ + raise Exception("not implemented") + + def get_operands(self, idx=-1): + """ + Return all operands + + :rtype: list + """ + raise Exception("not implemented") + + def get_length(self): + """ + Return the length of the instruction + + :rtype: int + """ + raise Exception("not implemented") + + def get_raw(self): + """ + Return the object in a raw format + + :rtype: string + """ + raise Exception("not implemented") + + def get_ref_kind(self): + """ + Return the value of the 'kind' argument + + :rtype: value + """ + raise Exception("not implemented") + + def get_formatted_operands(self): + return None + + def get_hex(self): + """ + Returns a HEX String, separated by spaces every byte + """ + s = binascii.hexlify(self.get_raw()).decode('ascii') + return " ".join(s[i:i + 2] for i in range(0, len(s), 2)) + + +class InstructionInvalid(Instruction): + """ + This class represents an invalid instruction + """ + + def __init__(self, cm, buff): + super(InstructionInvalid, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + + # log.debug("OP:%x" % (self.OP)) + + def get_name(self): + """ + Return the name of the instruction + + :rtype: string + """ + return "AG:invalid_instruction" + + def get_output(self, idx=-1): + return "(OP:%x)" % self.OP + + def get_operands(self, idx=-1): + return [] + + def get_length(self): + return 2 + + def get_raw(self): + return pack("=H", self.OP) + + +class FillArrayData(object): + """ + This class can parse a FillArrayData instruction + + :param buff: a Buff object which represents a buffer where the instruction is stored + """ + + def __init__(self, buff): + self.notes = [] + + self.format_general_size = calcsize("=HHI") + self.ident = unpack("=H", buff[0:2])[0] + self.element_width = unpack("=H", buff[2:4])[0] + self.size = unpack("=I", buff[4:8])[0] + + buf_len = self.size * self.element_width + if buf_len % 2: + buf_len += 1 + + self.data = buff[self.format_general_size:self.format_general_size + + buf_len] + + def add_note(self, msg): + """ + Add a note to this instruction + + :param msg: the message + :type msg: objects (string) + """ + self.notes.append(msg) + + def get_notes(self): + """ + Get all notes from this instruction + + :rtype: a list of objects + """ + return self.notes + + def get_op_value(self): + """ + Get the value of the opcode + + :rtype: int + """ + return self.ident + + def get_data(self): + """ + Return the data of this instruction (the payload) + + :rtype: string + """ + return self.data + + def get_output(self, idx=-1): + """ + Return an additional output of the instruction + + :rtype: string + """ + buff = "" + + data = self.get_data() + + buff += repr(data) + " | " + for i in range(0, len(data)): + buff += "\\x{:02x}".format(data[i]) + + return buff + + def get_operands(self, idx=-1): + # FIXME: not sure of binascii is the right choise here, + # but before it was repr(), which lead to weird outputs of bytearrays + if isinstance(self.get_data(), bytearray): + return [(OPERAND_RAW, binascii.hexlify(self.get_data()).decode('ascii'))] + else: + return [(OPERAND_RAW, repr(self.get_data()))] + + def get_formatted_operands(self): + return None + + def get_name(self): + """ + Return the name of the instruction + + :rtype: string + """ + return "fill-array-data-payload" + + def show_buff(self, pos): + """ + Return the display of the instruction + + :rtype: string + """ + buff = self.get_name() + " " + + for i in range(0, len(self.data)): + buff += "\\x%02x" % self.data[i] + return buff + + def show(self, pos): + """ + Print the instruction + """ + print(self.show_buff(pos), end=' ') + + def get_length(self): + """ + Return the length of the instruction + + :rtype: int + """ + return ((self.size * self.element_width + 1) // 2 + 4) * 2 + + def get_raw(self): + return pack("=H", self.ident) + pack("=H", self.element_width) + pack( + "=I", self.size) + self.data + + def get_hex(self): + """ + Returns a HEX String, separated by spaces every byte + """ + + s = binascii.hexlify(self.get_raw()).decode("ascii") + return " ".join(s[i:i + 2] for i in range(0, len(s), 2)) + + +class SparseSwitch(object): + """ + This class can parse a SparseSwitch instruction + + :param buff: a Buff object which represents a buffer where the instruction is stored + """ + + def __init__(self, buff): + self.notes = [] + + self.format_general_size = calcsize("=HH") + self.ident = unpack("=H", buff[0:2])[0] + self.size = unpack("=H", buff[2:4])[0] + + self.keys = [] + self.targets = [] + + idx = self.format_general_size + for i in range(0, self.size): + self.keys.append(unpack('=l', buff[idx:idx + 4])[0]) + idx += 4 + + for i in range(0, self.size): + self.targets.append(unpack('=l', buff[idx:idx + 4])[0]) + idx += 4 + + def add_note(self, msg): + """ + Add a note to this instruction + + :param msg: the message + :type msg: objects (string) + """ + self.notes.append(msg) + + def get_notes(self): + """ + Get all notes from this instruction + + :rtype: a list of objects + """ + return self.notes + + def get_op_value(self): + """ + Get the value of the opcode + + :rtype: int + """ + return self.ident + + def get_keys(self): + """ + Return the keys of the instruction + + :rtype: a list of long + """ + return self.keys + + def get_values(self): + return self.get_keys() + + def get_targets(self): + """ + Return the targets (address) of the instruction + + :rtype: a list of long + """ + return self.targets + + def get_output(self, idx=-1): + """ + Return an additional output of the instruction + + :rtype: string + """ + return " ".join("%x" % i for i in self.keys) + + def get_operands(self, idx=-1): + """ + Return an additional output of the instruction + + :rtype: string + """ + return [] + + def get_formatted_operands(self): + return None + + def get_name(self): + """ + Return the name of the instruction + + :rtype: string + """ + return "sparse-switch-payload" + + def show_buff(self, pos): + """ + Return the display of the instruction + + :rtype: string + """ + buff = self.get_name() + " " + for i in range(0, len(self.keys)): + buff += "%x:%x " % (self.keys[i], self.targets[i]) + + return buff + + def show(self, pos): + """ + Print the instruction + """ + print(self.show_buff(pos), end=' ') + + def get_length(self): + return self.format_general_size + (self.size * calcsize(' len(buff): + max_size = len(buff) - idx - 8 + + for i in range(0, max_size): + self.targets.append(unpack('=l', buff[idx:idx + 4])[0]) + idx += 4 + + def add_note(self, msg): + """ + Add a note to this instruction + + :param msg: the message + :type msg: objects (string) + """ + self.notes.append(msg) + + def get_notes(self): + """ + Get all notes from this instruction + + :rtype: a list of objects + """ + return self.notes + + def get_op_value(self): + """ + Get the value of the opcode + + :rtype: int + """ + return self.ident + + def get_keys(self): + """ + Return the keys of the instruction + + :rtype: a list of long + """ + return [(self.first_key + i) for i in range(0, len(self.targets))] + + def get_values(self): + return self.get_keys() + + def get_targets(self): + """ + Return the targets (address) of the instruction + + :rtype: a list of long + """ + return self.targets + + def get_output(self, idx=-1): + """ + Return an additional output of the instruction + + :rtype: string + + """ + return " ".join("%x" % (self.first_key + i) + for i in range(0, len(self.targets))) + + def get_operands(self, idx=-1): + """ + Return an additional output of the instruction + + :rtype: string + """ + return [] + + def get_formatted_operands(self): + return None + + def get_name(self): + """ + Return the name of the instruction + + :rtype: string + """ + return "packed-switch-payload" + + def show_buff(self, pos): + """ + Return the display of the instruction + + :rtype: string + """ + buff = self.get_name() + " " + buff += "%x:" % self.first_key + + for i in self.targets: + buff += " %x" % i + + return buff + + def show(self, pos): + """ + Print the instruction + """ + print(self.show_buff(pos), end=' ') + + def get_length(self): + return self.format_general_size + (self.size * calcsize('=L')) + + def get_raw(self): + return pack("=H", self.ident) + pack("=H", self.size) + pack( + "=i", self.first_key) + b''.join(pack("=l", i) for i in self.targets) + + def get_hex(self): + """ + Returns a HEX String, separated by spaces every byte + """ + s = binascii.hexlify(self.get_raw()).decode('ascii') + return " ".join(s[i:i + 2] for i in range(0, len(s), 2)) + + +class Instruction35c(Instruction): + """ + This class represents all instructions which have the 35c format + """ + + def __init__(self, cm, buff): + super(Instruction35c, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.G = (i16 >> 8) & 0xf + self.A = (i16 >> 12) & 0xf + self.BBBB = unpack("=H", buff[2:4])[0] + + i16 = unpack("=H", buff[4:6])[0] + self.C = i16 & 0xf + self.D = (i16 >> 4) & 0xf + self.E = (i16 >> 8) & 0xf + self.F = (i16 >> 12) & 0xf + + def get_output(self, idx=-1): + buff = "" + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.A == 0: + buff += "%s" % kind + elif self.A == 1: + buff += "v%d, %s" % (self.C, kind) + elif self.A == 2: + buff += "v%d, v%d, %s" % (self.C, self.D, kind) + elif self.A == 3: + buff += "v%d, v%d, v%d, %s" % (self.C, self.D, self.E, kind) + elif self.A == 4: + buff += "v%d, v%d, v%d, v%d, %s" % (self.C, self.D, self.E, self.F, + kind) + elif self.A == 5: + buff += "v%d, v%d, v%d, v%d, v%d, %s" % (self.C, self.D, self.E, + self.F, self.G, kind) + + return buff + + def get_operands(self, idx=-1): + l = [] + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.A == 0: + l.append((self.get_kind() + OPERAND_KIND, self.BBBB, kind)) + elif self.A == 1: + l.extend([(OPERAND_REGISTER, self.C), (self.get_kind( + ) + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 2: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 3: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) + elif self.A == 4: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 5: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( + OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) + + return l + + def get_length(self): + return 6 + + def get_ref_kind(self): + return self.BBBB + + def get_raw(self): + return pack("=HHH", (self.A << 12) | (self.G << 8) | self.OP, self.BBBB, + (self.F << 12) | (self.E << 8) | (self.D << 4) | self.C) + + +class Instruction10x(Instruction): + """ + This class represents all instructions which have the 10x format + """ + + def __init__(self, cm, buff): + super(Instruction10x, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + + def get_output(self, idx=-1): + return "" + + def get_operands(self, idx=-1): + return [] + + def get_length(self): + return 2 + + def get_raw(self): + return pack("=H", self.OP) + + +class Instruction21h(Instruction): + """ + This class represents all instructions which have the 21h format + """ + + def __init__(self, cm, buff): + super(Instruction21h, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=h", buff[2:4])[0] + + self.formatted_operands = [] + + if self.OP == 0x15: + self.formatted_operands.append(unpack('=f', bytearray([0, 0]) + pack( + '=h', self.BBBB))[0]) + elif self.OP == 0x19: + self.formatted_operands.append(unpack( + '=d', bytearray([0, 0, 0, 0, 0, 0]) + pack('=h', self.BBBB))[0]) + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, %d" % (self.AA, self.BBBB) + + if self.formatted_operands: + buff += " # %s" % (str(self.formatted_operands)) + + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_LITERAL, self.BBBB)] + + def get_formatted_operands(self): + return self.formatted_operands + + def get_literals(self): + return [self.BBBB] + + def get_raw(self): + return pack("=Hh", (self.AA << 8) | self.OP, self.BBBB) + + +class Instruction11n(Instruction): + """ + This class represents all instructions which have the 11n format + """ + + def __init__(self, cm, buff): + super(Instruction11n, self).__init__() + + i16 = unpack("=h", buff[0:2])[0] + self.OP = i16 & 0xff + self.A = (i16 >> 8) & 0xf + self.B = (i16 >> 12) + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, %d" % (self.A, self.B) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.A), (OPERAND_LITERAL, self.B)] + + def get_literals(self): + return [self.B] + + def get_length(self): + return 2 + + def get_raw(self): + return pack("=h", (self.B << 12) | (self.A << 8) | self.OP) + + +class Instruction21c(Instruction): + """ + This class represents all instructions which have the 21c format + """ + + def __init__(self, cm, buff): + super(Instruction21c, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=H", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + buff += "v%d, %s" % (self.AA, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + return [(OPERAND_REGISTER, self.AA), + (self.get_kind() + OPERAND_KIND, self.BBBB, kind)] + + def get_ref_kind(self): + return self.BBBB + + def get_string(self): + return get_kind(self.cm, self.get_kind(), self.BBBB) + + def get_raw_string(self): + return get_kind(self.cm, KIND_RAW_STRING, self.BBBB) + + def get_raw(self): + return pack("=HH", (self.AA << 8) | self.OP, self.BBBB) + + +class Instruction21s(Instruction): + """ + This class represents all instructions which have the 21s format + """ + + def __init__(self, cm, buff): + super(Instruction21s, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=h", buff[2:4])[0] + + self.formatted_operands = [] + + if self.OP == 0x16: + self.formatted_operands.append(unpack('=d', pack('=d', self.BBBB))[0 + ]) + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, %d" % (self.AA, self.BBBB) + + if self.formatted_operands: + buff += " # %s" % str(self.formatted_operands) + + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_LITERAL, self.BBBB)] + + def get_literals(self): + return [self.BBBB] + + def get_formatted_operands(self): + return self.formatted_operands + + def get_raw(self): + return pack("=Hh", (self.AA << 8) | self.OP, self.BBBB) + + +class Instruction22c(Instruction): + """ + This class represents all instructions which have the 22c format + """ + + def __init__(self, cm, buff): + super(Instruction22c, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.A = (i16 >> 8) & 0xf + self.B = (i16 >> 12) & 0xf + self.CCCC = unpack("=H", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + kind = get_kind(self.cm, self.get_kind(), self.CCCC) + buff += "v%d, v%d, %s" % (self.A, self.B, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.CCCC) + return [(OPERAND_REGISTER, self.A), (OPERAND_REGISTER, self.B), + (self.get_kind() + OPERAND_KIND, self.CCCC, kind)] + + def get_ref_kind(self): + return self.CCCC + + def get_raw(self): + return pack("=HH", + (self.B << 12) | (self.A << 8) | self.OP, self.CCCC) + + +class Instruction22cs(Instruction): + """ + This class represents all instructions which have the 22cs format + """ + + def __init__(self, cm, buff): + super(Instruction22cs, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.A = (i16 >> 8) & 0xf + self.B = (i16 >> 12) & 0xf + self.CCCC = unpack("=H", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + kind = get_kind(self.cm, self.get_kind(), self.CCCC) + buff += "v%d, v%d, %s" % (self.A, self.B, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.CCCC) + return [(OPERAND_REGISTER, self.A), (OPERAND_REGISTER, self.B), + (self.get_kind() + OPERAND_KIND, self.CCCC, kind)] + + def get_ref_kind(self): + return self.CCCC + + def get_raw(self): + return pack("=HH", + (self.B << 12) | (self.A << 8) | self.OP, self.CCCC) + + +class Instruction31t(Instruction): + """ + This class represents all instructions which have the 31t format + """ + + def __init__(self, cm, buff): + super(Instruction31t, self).__init__() + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBBBBBB = unpack("=i", buff[2:6])[0] + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, +%x (0x%x)" % (self.AA, self.BBBBBBBB, + self.BBBBBBBB * 2 + idx) + + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_LITERAL, self.BBBBBBBB)] + + def get_ref_off(self): + return self.BBBBBBBB + + def get_raw(self): + return pack("=Hi", (self.AA << 8) | self.OP, self.BBBBBBBB) + + +class Instruction31c(Instruction): + """ + This class represents all instructions which have the 31c format + """ + + def __init__(self, cm, buff): + super(Instruction31c, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBBBBBB = unpack("=I", buff[2:6])[0] + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + buff += "v%d, %s" % (self.AA, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + return [(OPERAND_REGISTER, self.AA), + (self.get_kind() + OPERAND_KIND, self.BBBBBBBB, kind)] + + def get_ref_kind(self): + return self.BBBBBBBB + + def get_string(self): + """ + Return the string associated to the 'kind' argument + + :rtype: string + """ + return get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + + def get_raw_string(self): + return get_kind(self.cm, KIND_RAW_STRING, self.BBBBBBBB) + + def get_raw(self): + return pack("=HI", (self.AA << 8) | self.OP, self.BBBBBBBB) + + +class Instruction12x(Instruction): + """ + This class represents all instructions which have the 12x format + """ + + def __init__(self, cm, buff): + super(Instruction12x, self).__init__() + + i16 = unpack("=h", buff[0:2])[0] + self.OP = i16 & 0xff + self.A = (i16 >> 8) & 0xf + self.B = (i16 >> 12) & 0xf + + def get_length(self): + return 2 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, v%d" % (self.A, self.B) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.A), (OPERAND_REGISTER, self.B)] + + def get_raw(self): + return pack("=H", (self.B << 12) | (self.A << 8) | self.OP) + + +class Instruction11x(Instruction): + """ + This class represents all instructions which have the 11x format + """ + + def __init__(self, cm, buff): + super(Instruction11x, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + def get_length(self): + return 2 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d" % self.AA + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA)] + + def get_raw(self): + return pack("=H", (self.AA << 8) | self.OP) + + +class Instruction51l(Instruction): + """ + This class represents all instructions which have the 51l format + """ + + def __init__(self, cm, buff): + super(Instruction51l, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBBBBBBBBBBBBBB = unpack("=q", buff[2:10])[0] + + self.formatted_operands = [] + + if self.OP == 0x18: + self.formatted_operands.append(unpack('=d', pack( + '=q', self.BBBBBBBBBBBBBBBB))[0]) + + def get_length(self): + return 10 + + def get_output(self, idx=-1): + buff = "" + + buff += "v%d, %d" % (self.AA, self.BBBBBBBBBBBBBBBB) + + if self.formatted_operands: + buff += " # %s" % str(self.formatted_operands) + + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), + (OPERAND_LITERAL, self.BBBBBBBBBBBBBBBB)] + + def get_formatted_operands(self): + return self.formatted_operands + + def get_literals(self): + return [self.BBBBBBBBBBBBBBBB] + + def get_raw(self): + return pack("=Hq", (self.AA << 8) | self.OP, self.BBBBBBBBBBBBBBBB) + + +class Instruction31i(Instruction): + """ + This class represents all instructions which have the 3li format + """ + + def __init__(self, cm, buff): + super(Instruction31i, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBBBBBB = unpack("=i", buff[2:6])[0] + + self.formatted_operands = [] + + if self.OP == 0x14: + self.formatted_operands.append(unpack("=f", pack("=i", + self.BBBBBBBB))[0]) + + elif self.OP == 0x17: + self.formatted_operands.append(unpack('=d', pack('=d', + self.BBBBBBBB))[0]) + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, %d" % (self.AA, self.BBBBBBBB) + + if self.formatted_operands: + buff += " # %s" % str(self.formatted_operands) + + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_LITERAL, self.BBBBBBBB)] + + def get_formatted_operands(self): + return self.formatted_operands + + def get_literals(self): + return [self.BBBBBBBB] + + def get_raw(self): + return pack("=Hi", (self.AA << 8) | self.OP, self.BBBBBBBB) + + +class Instruction22x(Instruction): + """ + This class represents all instructions which have the 22x format + """ + + def __init__(self, cm, buff): + super(Instruction22x, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=H", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, v%d" % (self.AA, self.BBBB) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_REGISTER, self.BBBB)] + + def get_raw(self): + return pack("=HH", (self.AA << 8) | self.OP, self.BBBB) + + +class Instruction23x(Instruction): + """ + This class represents all instructions which have the 23x format + """ + + def __init__(self, cm, buff): + super(Instruction23x, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + i16 = unpack("=H", buff[2:4])[0] + self.BB = i16 & 0xff + self.CC = (i16 >> 8) & 0xff + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, v%d, v%d" % (self.AA, self.BB, self.CC) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_REGISTER, self.BB), + (OPERAND_REGISTER, self.CC)] + + def get_raw(self): + return pack("=HH", (self.AA << 8) | self.OP, (self.CC << 8) | self.BB) + + +class Instruction20t(Instruction): + """ + This class represents all instructions which have the 20t format + """ + + def __init__(self, cm, buff): + super(Instruction20t, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AAAA = unpack("=h", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "%+x" % self.AAAA + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_OFFSET, self.AAAA)] + + def get_ref_off(self): + return self.AAAA + + def get_raw(self): + return pack("=Hh", self.OP, self.AAAA) + + +class Instruction21t(Instruction): + """ + This class represents all instructions which have the 21t format + """ + + def __init__(self, cm, buff): + super(Instruction21t, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=h", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, %+x" % (self.AA, self.BBBB) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_OFFSET, self.BBBB)] + + def get_ref_off(self): + return self.BBBB + + def get_raw(self): + return pack("=Hh", (self.AA << 8) | self.OP, self.BBBB) + + +class Instruction10t(Instruction): + """ + This class represents all instructions which have the 10t format + """ + + def __init__(self, cm, buff): + super(Instruction10t, self).__init__() + + self.OP = unpack("=B", buff[0:1])[0] + self.AA = unpack("=b", buff[1:2])[0] + + def get_length(self): + return 2 + + def get_output(self, idx=-1): + buff = "" + buff += "%+x" % self.AA + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_OFFSET, self.AA)] + + def get_ref_off(self): + return self.AA + + def get_raw(self): + return pack("=Bb", self.OP, self.AA) + + +class Instruction22t(Instruction): + """ + This class represents all instructions which have the 22t format + """ + + def __init__(self, cm, buff): + super(Instruction22t, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.A = (i16 >> 8) & 0xf + self.B = (i16 >> 12) & 0xf + self.CCCC = unpack("=h", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, v%d, %+x" % (self.A, self.B, self.CCCC) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.A), (OPERAND_REGISTER, self.B), + (OPERAND_OFFSET, self.CCCC)] + + def get_ref_off(self): + return self.CCCC + + def get_raw(self): + return pack("=Hh", (self.B << 12) | (self.A << 8) | self.OP, self.CCCC) + + +class Instruction22s(Instruction): + """ + This class represents all instructions which have the 22s format + """ + + def __init__(self, cm, buff): + super(Instruction22s, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.A = (i16 >> 8) & 0xf + self.B = (i16 >> 12) & 0xf + self.CCCC = unpack("=h", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, v%d, %d" % (self.A, self.B, self.CCCC) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.A), (OPERAND_REGISTER, self.B), + (OPERAND_LITERAL, self.CCCC)] + + def get_literals(self): + return [self.CCCC] + + def get_raw(self): + return pack("=Hh", (self.B << 12) | (self.A << 8) | self.OP, self.CCCC) + + +class Instruction22b(Instruction): + """ + This class represents all instructions which have the 22b format + """ + + def __init__(self, cm, buff): + super(Instruction22b, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BB = unpack("=B", buff[2:3])[0] + self.CC = unpack("=b", buff[3:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, v%d, %d" % (self.AA, self.BB, self.CC) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AA), (OPERAND_REGISTER, self.BB), + (OPERAND_LITERAL, self.CC)] + + def get_literals(self): + return [self.CC] + + def get_raw(self): + return pack("=Hh", (self.AA << 8) | self.OP, (self.CC << 8) | self.BB) + + +class Instruction30t(Instruction): + """ + This class represents all instructions which have the 30t format + """ + + def __init__(self, cm, buff): + super(Instruction30t, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + + self.AAAAAAAA = unpack("=i", buff[2:6])[0] + + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + buff += "%+x" % self.AAAAAAAA + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_OFFSET, self.AAAAAAAA)] + + def get_ref_off(self): + return self.AAAAAAAA + + def get_raw(self): + return pack("=Hi", self.OP, self.AAAAAAAA) + + +class Instruction3rc(Instruction): + """ + This class represents all instructions which have the 3rc format + """ + + def __init__(self, cm, buff): + super(Instruction3rc, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=H", buff[2:4])[0] + self.CCCC = unpack("=H", buff[4:6])[0] + + self.NNNN = self.CCCC + self.AA - 1 + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.CCCC == self.NNNN: + buff += "v%d, %s" % (self.CCCC, kind) + else: + buff += "v%d ... v%d, %s" % (self.CCCC, self.NNNN, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.CCCC == self.NNNN: + return [(OPERAND_REGISTER, self.CCCC), + (self.get_kind() + OPERAND_KIND, self.BBBB, kind)] + else: + l = [] + for i in range(self.CCCC, self.NNNN + 1): + l.append((OPERAND_REGISTER, i)) + + l.append((self.get_kind() + OPERAND_KIND, self.BBBB, kind)) + return l + + def get_ref_kind(self): + return self.BBBB + + def get_raw(self): + return pack("=HHH", (self.AA << 8) | self.OP, self.BBBB, self.CCCC) + + +class Instruction32x(Instruction): + """ + This class represents all instructions which have the 32x format + """ + + def __init__(self, cm, buff): + super(Instruction32x, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AAAA = unpack("=H", buff[2:4])[0] + self.BBBB = unpack("=H", buff[4:6])[0] + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + buff += "v%d, v%d" % (self.AAAA, self.BBBB) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_REGISTER, self.AAAA), (OPERAND_REGISTER, self.BBBB)] + + def get_raw(self): + return pack("=HHH", self.OP, self.AAAA, self.BBBB) + + +class Instruction20bc(Instruction): + """ + This class represents all instructions which have the 20bc format + """ + + def __init__(self, cm, buff): + super(Instruction20bc, self).__init__() + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=H", buff[2:4])[0] + + def get_length(self): + return 4 + + def get_output(self, idx=-1): + buff = "" + buff += "%d, %d" % (self.AA, self.BBBB) + return buff + + def get_operands(self, idx=-1): + return [(OPERAND_LITERAL, self.AA), (OPERAND_LITERAL, self.BBBB)] + + def get_raw(self): + return pack("=HH", (self.AA << 8) | self.OP, self.BBBB) + + +class Instruction35mi(Instruction): + """ + This class represents all instructions which have the 35mi format + """ + + def __init__(self, cm, buff): + super(Instruction35mi, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.G = (i16 >> 8) & 0xf + self.A = (i16 >> 12) & 0xf + self.BBBB = unpack("=H", buff[2:4])[0] + + i16 = unpack("=H", buff[4:6])[0] + self.C = i16 & 0xf + self.D = (i16 >> 4) & 0xf + self.E = (i16 >> 8) & 0xf + self.F = (i16 >> 12) & 0xf + + def get_output(self, idx=-1): + buff = "" + + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.A == 1: + buff += "v%d, %s" % (self.C, kind) + elif self.A == 2: + buff += "v%d, v%d, %s" % (self.C, self.D, kind) + elif self.A == 3: + buff += "v%d, v%d, v%d, %s" % (self.C, self.D, self.E, kind) + elif self.A == 4: + buff += "v%d, v%d, v%d, v%d, %s" % (self.C, self.D, self.E, self.F, + kind) + elif self.A == 5: + buff += "v%d, v%d, v%d, v%d, v%d, %s" % (self.C, self.D, self.E, + self.F, self.G, kind) + + return buff + + def get_operands(self, idx=-1): + l = [] + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.A == 1: + l.extend([(OPERAND_REGISTER, self.C), (self.get_kind( + ) + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 2: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 3: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) + elif self.A == 4: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 5: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( + OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) + + return l + + def get_length(self): + return 6 + + def get_ref_kind(self): + return self.BBBB + + def get_raw(self): + return pack("=HHH", (self.A << 12) | (self.G << 8) | self.OP, self.BBBB, + (self.F << 12) | (self.E << 8) | (self.D << 4) | self.C) + + +class Instruction35ms(Instruction): + """ + This class represents all instructions which have the 35ms format + """ + + def __init__(self, cm, buff): + super(Instruction35ms, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.G = (i16 >> 8) & 0xf + self.A = (i16 >> 12) & 0xf + self.BBBB = unpack("=H", buff[2:4])[0] + + i16 = unpack("=H", buff[4:6])[0] + self.C = i16 & 0xf + self.D = (i16 >> 4) & 0xf + self.E = (i16 >> 8) & 0xf + self.F = (i16 >> 12) & 0xf + + def get_output(self, idx=-1): + buff = "" + + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.A == 1: + buff += "v%d, %s" % (self.C, kind) + elif self.A == 2: + buff += "v%d, v%d, %s" % (self.C, self.D, kind) + elif self.A == 3: + buff += "v%d, v%d, v%d, %s" % (self.C, self.D, self.E, kind) + elif self.A == 4: + buff += "v%d, v%d, v%d, v%d, %s" % (self.C, self.D, self.E, self.F, + kind) + elif self.A == 5: + buff += "v%d, v%d, v%d, v%d, v%d, %s" % (self.C, self.D, self.E, + self.F, self.G, kind) + + return buff + + def get_operands(self, idx=-1): + l = [] + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.A == 1: + l.extend([(OPERAND_REGISTER, self.C), (self.get_kind( + ) + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 2: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 3: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) + elif self.A == 4: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( + self.get_kind() + OPERAND_KIND, self.BBBB, kind)]) + elif self.A == 5: + l.extend([(OPERAND_REGISTER, self.C), (OPERAND_REGISTER, self.D), ( + OPERAND_REGISTER, self.E), (OPERAND_REGISTER, self.F), ( + OPERAND_REGISTER, self.G), (self.get_kind() + OPERAND_KIND, + self.BBBB, kind)]) + + return l + + def get_length(self): + return 6 + + def get_ref_kind(self): + return self.BBBB + + def get_raw(self): + return pack("=HHH", (self.A << 12) | (self.G << 8) | self.OP, self.BBBB, + (self.F << 12) | (self.E << 8) | (self.D << 4) | self.C) + + +class Instruction3rmi(Instruction): + """ + This class represents all instructions which have the 3rmi format + """ + + def __init__(self, cm, buff): + super(Instruction3rmi, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=H", buff[2:4])[0] + self.CCCC = unpack("=H", buff[4:6])[0] + + self.NNNN = self.CCCC + self.AA - 1 + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.CCCC == self.NNNN: + buff += "v%d, %s" % (self.CCCC, kind) + else: + buff += "v%d ... v%d, %s" % (self.CCCC, self.NNNN, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.CCCC == self.NNNN: + return [(OPERAND_REGISTER, self.CCCC), + (self.get_kind() + OPERAND_KIND, self.BBBB, kind)] + else: + l = [] + for i in range(self.CCCC, self.NNNN): + l.append((OPERAND_REGISTER, i)) + + l.append((self.get_kind() + OPERAND_KIND, self.BBBB, kind)) + return l + + def get_ref_kind(self): + return self.BBBB + + def get_raw(self): + return pack("=HHH", (self.AA << 8) | self.OP, self.BBBB, self.CCCC) + + +class Instruction3rms(Instruction): + """ + This class represents all instructions which have the 3rms format + """ + + def __init__(self, cm, buff): + super(Instruction3rms, self).__init__() + self.cm = cm + + i16 = unpack("=H", buff[0:2])[0] + self.OP = i16 & 0xff + self.AA = (i16 >> 8) & 0xff + + self.BBBB = unpack("=H", buff[2:4])[0] + self.CCCC = unpack("=H", buff[4:6])[0] + + self.NNNN = self.CCCC + self.AA - 1 + + def get_length(self): + return 6 + + def get_output(self, idx=-1): + buff = "" + + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.CCCC == self.NNNN: + buff += "v%d, %s" % (self.CCCC, kind) + else: + buff += "v%d ... v%d, %s" % (self.CCCC, self.NNNN, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBB) + + if self.CCCC == self.NNNN: + return [(OPERAND_REGISTER, self.CCCC), + (self.get_kind() + OPERAND_KIND, self.BBBB, kind)] + else: + l = [] + for i in range(self.CCCC, self.NNNN): + l.append((OPERAND_REGISTER, i)) + + l.append((self.get_kind() + OPERAND_KIND, self.BBBB, kind)) + return l + + def get_ref_kind(self): + return self.BBBB + + def get_raw(self): + return pack("=HHH", (self.AA << 8) | self.OP, self.BBBB, self.CCCC) + + +class Instruction41c(Instruction): + """ + This class represents all instructions which have the 41c format + """ + + def __init__(self, cm, buff): + super(Instruction41c, self).__init__() + self.cm = cm + + self.OP = unpack("=H", buff[0:2])[0] + self.BBBBBBBB = unpack("=I", buff[2:6])[0] + + self.AAAA = unpack("=H", buff[6:8])[0] + + def get_length(self): + return 8 + + def get_output(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + + buff = "" + buff += "v%d, %s" % (self.AAAA, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + return [(OPERAND_REGISTER, self.AAAA), + (self.get_kind() + OPERAND_KIND, self.BBBBBBBB, kind)] + + def get_ref_kind(self): + return self.BBBBBBBB + + def get_raw(self): + return pack("=HIH", self.OP, self.BBBBBBBB, self.AAAA) + + +class Instruction40sc(Instruction): + """ + This class represents all instructions which have the 40sc format + """ + + def __init__(self, cm, buff): + super(Instruction40sc, self).__init__() + self.cm = cm + + self.OP = unpack("=H", buff[0:2])[0] + self.BBBBBBBB = unpack("=I", buff[2:6])[0] + self.AAAA = unpack("=H", buff[6:8])[0] + + def get_length(self): + return 8 + + def get_output(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + + buff = "" + buff += "%d, %s" % (self.AAAA, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + return [(OPERAND_LITERAL, self.AAAA), + (self.get_kind() + OPERAND_KIND, self.BBBBBBBB, kind)] + + def get_ref_kind(self): + return self.BBBBBBBB + + def get_raw(self): + return pack("=HIH", self.OP, self.BBBBBBBB, self.AAAA) + + +class Instruction52c(Instruction): + """ + This class represents all instructions which have the 52c format + """ + + def __init__(self, cm, buff): + super(Instruction52c, self).__init__() + self.cm = cm + + self.OP = unpack("=H", buff[0:2])[0] + self.CCCCCCCC = unpack("=I", buff[2:6])[0] + self.AAAA = unpack("=H", buff[6:8])[0] + self.BBBB = unpack("=H", buff[8:10])[0] + + def get_length(self): + return 10 + + def get_output(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.CCCCCCCC) + + buff = "" + buff += "v%d, v%d, %s" % (self.AAAA, self.BBBB, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.CCCCCCCC) + return [(OPERAND_LITERAL, self.AAAA), (OPERAND_LITERAL, self.BBBB), + (self.get_kind() + OPERAND_KIND, self.CCCCCCCC, kind)] + + def get_ref_kind(self): + return self.CCCCCCCC + + def get_raw(self): + return pack("=HIHH", self.OP, self.CCCCCCCC, self.AAAA, self.BBBB) + + +class Instruction5rc(Instruction): + """ + This class represents all instructions which have the 5rc format + """ + + def __init__(self, cm, buff): + super(Instruction5rc, self).__init__() + self.cm = cm + + self.OP = unpack("=H", buff[0:2])[0] + self.BBBBBBBB = unpack("=I", buff[2:6])[0] + self.AAAA = unpack("=H", buff[6:8])[0] + self.CCCC = unpack("=H", buff[8:10])[0] + + self.NNNN = self.CCCC + self.AAAA - 1 + + def get_length(self): + return 10 + + def get_output(self, idx=-1): + buff = "" + + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + + if self.CCCC == self.NNNN: + buff += "v%d, %s" % (self.CCCC, kind) + else: + buff += "v%d ... v%d, %s" % (self.CCCC, self.NNNN, kind) + return buff + + def get_operands(self, idx=-1): + kind = get_kind(self.cm, self.get_kind(), self.BBBBBBBB) + + if self.CCCC == self.NNNN: + return [(OPERAND_REGISTER, self.CCCC), + (self.get_kind() + OPERAND_KIND, self.BBBB, kind)] + else: + l = [] + for i in range(self.CCCC, self.NNNN): + l.append((OPERAND_REGISTER, i)) + + l.append((self.get_kind() + OPERAND_KIND, self.BBBB, kind)) + return l + + def get_ref_kind(self): + return self.BBBBBBBB + + def get_raw(self): + return pack("=HIHH", self.OP, self.BBBBBBBB, self.AAAA, self.CCCC) + + +DALVIK_OPCODES_FORMAT = { + 0x00: [Instruction10x, ["nop"]], + 0x01: [Instruction12x, ["move"]], + 0x02: [Instruction22x, ["move/from16"]], + 0x03: [Instruction32x, ["move/16"]], + 0x04: [Instruction12x, ["move-wide"]], + 0x05: [Instruction22x, ["move-wide/from16"]], + 0x06: [Instruction32x, ["move-wide/16"]], + 0x07: [Instruction12x, ["move-object"]], + 0x08: [Instruction22x, ["move-object/from16"]], + 0x09: [Instruction32x, ["move-object/16"]], + 0x0a: [Instruction11x, ["move-result"]], + 0x0b: [Instruction11x, ["move-result-wide"]], + 0x0c: [Instruction11x, ["move-result-object"]], + 0x0d: [Instruction11x, ["move-exception"]], + 0x0e: [Instruction10x, ["return-void"]], + 0x0f: [Instruction11x, ["return"]], + 0x10: [Instruction11x, ["return-wide"]], + 0x11: [Instruction11x, ["return-object"]], + 0x12: [Instruction11n, ["const/4"]], + 0x13: [Instruction21s, ["const/16"]], + 0x14: [Instruction31i, ["const"]], + 0x15: [Instruction21h, ["const/high16"]], + 0x16: [Instruction21s, ["const-wide/16"]], + 0x17: [Instruction31i, ["const-wide/32"]], + 0x18: [Instruction51l, ["const-wide"]], + 0x19: [Instruction21h, ["const-wide/high16"]], + 0x1a: [Instruction21c, ["const-string", KIND_STRING]], + 0x1b: [Instruction31c, ["const-string/jumbo", KIND_STRING]], + 0x1c: [Instruction21c, ["const-class", KIND_TYPE]], + 0x1d: [Instruction11x, ["monitor-enter"]], + 0x1e: [Instruction11x, ["monitor-exit"]], + 0x1f: [Instruction21c, ["check-cast", KIND_TYPE]], + 0x20: [Instruction22c, ["instance-of", KIND_TYPE]], + 0x21: [Instruction12x, ["array-length"]], + 0x22: [Instruction21c, ["new-instance", KIND_TYPE]], + 0x23: [Instruction22c, ["new-array", KIND_TYPE]], + 0x24: [Instruction35c, ["filled-new-array", KIND_TYPE]], + 0x25: [Instruction3rc, ["filled-new-array/range", KIND_TYPE]], + 0x26: [Instruction31t, ["fill-array-data"]], + 0x27: [Instruction11x, ["throw"]], + 0x28: [Instruction10t, ["goto"]], + 0x29: [Instruction20t, ["goto/16"]], + 0x2a: [Instruction30t, ["goto/32"]], + 0x2b: [Instruction31t, ["packed-switch"]], + 0x2c: [Instruction31t, ["sparse-switch"]], + 0x2d: [Instruction23x, ["cmpl-float"]], + 0x2e: [Instruction23x, ["cmpg-float"]], + 0x2f: [Instruction23x, ["cmpl-double"]], + 0x30: [Instruction23x, ["cmpg-double"]], + 0x31: [Instruction23x, ["cmp-long"]], + 0x32: [Instruction22t, ["if-eq"]], + 0x33: [Instruction22t, ["if-ne"]], + 0x34: [Instruction22t, ["if-lt"]], + 0x35: [Instruction22t, ["if-ge"]], + 0x36: [Instruction22t, ["if-gt"]], + 0x37: [Instruction22t, ["if-le"]], + 0x38: [Instruction21t, ["if-eqz"]], + 0x39: [Instruction21t, ["if-nez"]], + 0x3a: [Instruction21t, ["if-ltz"]], + 0x3b: [Instruction21t, ["if-gez"]], + 0x3c: [Instruction21t, ["if-gtz"]], + 0x3d: [Instruction21t, ["if-lez"]], + # unused + 0x3e: [Instruction10x, ["nop"]], + 0x3f: [Instruction10x, ["nop"]], + 0x40: [Instruction10x, ["nop"]], + 0x41: [Instruction10x, ["nop"]], + 0x42: [Instruction10x, ["nop"]], + 0x43: [Instruction10x, ["nop"]], + 0x44: [Instruction23x, ["aget"]], + 0x45: [Instruction23x, ["aget-wide"]], + 0x46: [Instruction23x, ["aget-object"]], + 0x47: [Instruction23x, ["aget-boolean"]], + 0x48: [Instruction23x, ["aget-byte"]], + 0x49: [Instruction23x, ["aget-char"]], + 0x4a: [Instruction23x, ["aget-short"]], + 0x4b: [Instruction23x, ["aput"]], + 0x4c: [Instruction23x, ["aput-wide"]], + 0x4d: [Instruction23x, ["aput-object"]], + 0x4e: [Instruction23x, ["aput-boolean"]], + 0x4f: [Instruction23x, ["aput-byte"]], + 0x50: [Instruction23x, ["aput-char"]], + 0x51: [Instruction23x, ["aput-short"]], + 0x52: [Instruction22c, ["iget", KIND_FIELD]], + 0x53: [Instruction22c, ["iget-wide", KIND_FIELD]], + 0x54: [Instruction22c, ["iget-object", KIND_FIELD]], + 0x55: [Instruction22c, ["iget-boolean", KIND_FIELD]], + 0x56: [Instruction22c, ["iget-byte", KIND_FIELD]], + 0x57: [Instruction22c, ["iget-char", KIND_FIELD]], + 0x58: [Instruction22c, ["iget-short", KIND_FIELD]], + 0x59: [Instruction22c, ["iput", KIND_FIELD]], + 0x5a: [Instruction22c, ["iput-wide", KIND_FIELD]], + 0x5b: [Instruction22c, ["iput-object", KIND_FIELD]], + 0x5c: [Instruction22c, ["iput-boolean", KIND_FIELD]], + 0x5d: [Instruction22c, ["iput-byte", KIND_FIELD]], + 0x5e: [Instruction22c, ["iput-char", KIND_FIELD]], + 0x5f: [Instruction22c, ["iput-short", KIND_FIELD]], + 0x60: [Instruction21c, ["sget", KIND_FIELD]], + 0x61: [Instruction21c, ["sget-wide", KIND_FIELD]], + 0x62: [Instruction21c, ["sget-object", KIND_FIELD]], + 0x63: [Instruction21c, ["sget-boolean", KIND_FIELD]], + 0x64: [Instruction21c, ["sget-byte", KIND_FIELD]], + 0x65: [Instruction21c, ["sget-char", KIND_FIELD]], + 0x66: [Instruction21c, ["sget-short", KIND_FIELD]], + 0x67: [Instruction21c, ["sput", KIND_FIELD]], + 0x68: [Instruction21c, ["sput-wide", KIND_FIELD]], + 0x69: [Instruction21c, ["sput-object", KIND_FIELD]], + 0x6a: [Instruction21c, ["sput-boolean", KIND_FIELD]], + 0x6b: [Instruction21c, ["sput-byte", KIND_FIELD]], + 0x6c: [Instruction21c, ["sput-char", KIND_FIELD]], + 0x6d: [Instruction21c, ["sput-short", KIND_FIELD]], + 0x6e: [Instruction35c, ["invoke-virtual", KIND_METH]], + 0x6f: [Instruction35c, ["invoke-super", KIND_METH]], + 0x70: [Instruction35c, ["invoke-direct", KIND_METH]], + 0x71: [Instruction35c, ["invoke-static", KIND_METH]], + 0x72: [Instruction35c, ["invoke-interface", KIND_METH]], + # unused + 0x73: [Instruction10x, ["nop"]], + 0x74: [Instruction3rc, ["invoke-virtual/range", KIND_METH]], + 0x75: [Instruction3rc, ["invoke-super/range", KIND_METH]], + 0x76: [Instruction3rc, ["invoke-direct/range", KIND_METH]], + 0x77: [Instruction3rc, ["invoke-static/range", KIND_METH]], + 0x78: [Instruction3rc, ["invoke-interface/range", KIND_METH]], + # unused + 0x79: [Instruction10x, ["nop"]], + 0x7a: [Instruction10x, ["nop"]], + 0x7b: [Instruction12x, ["neg-int"]], + 0x7c: [Instruction12x, ["not-int"]], + 0x7d: [Instruction12x, ["neg-long"]], + 0x7e: [Instruction12x, ["not-long"]], + 0x7f: [Instruction12x, ["neg-float"]], + 0x80: [Instruction12x, ["neg-double"]], + 0x81: [Instruction12x, ["int-to-long"]], + 0x82: [Instruction12x, ["int-to-float"]], + 0x83: [Instruction12x, ["int-to-double"]], + 0x84: [Instruction12x, ["long-to-int"]], + 0x85: [Instruction12x, ["long-to-float"]], + 0x86: [Instruction12x, ["long-to-double"]], + 0x87: [Instruction12x, ["float-to-int"]], + 0x88: [Instruction12x, ["float-to-long"]], + 0x89: [Instruction12x, ["float-to-double"]], + 0x8a: [Instruction12x, ["double-to-int"]], + 0x8b: [Instruction12x, ["double-to-long"]], + 0x8c: [Instruction12x, ["double-to-float"]], + 0x8d: [Instruction12x, ["int-to-byte"]], + 0x8e: [Instruction12x, ["int-to-char"]], + 0x8f: [Instruction12x, ["int-to-short"]], + 0x90: [Instruction23x, ["add-int"]], + 0x91: [Instruction23x, ["sub-int"]], + 0x92: [Instruction23x, ["mul-int"]], + 0x93: [Instruction23x, ["div-int"]], + 0x94: [Instruction23x, ["rem-int"]], + 0x95: [Instruction23x, ["and-int"]], + 0x96: [Instruction23x, ["or-int"]], + 0x97: [Instruction23x, ["xor-int"]], + 0x98: [Instruction23x, ["shl-int"]], + 0x99: [Instruction23x, ["shr-int"]], + 0x9a: [Instruction23x, ["ushr-int"]], + 0x9b: [Instruction23x, ["add-long"]], + 0x9c: [Instruction23x, ["sub-long"]], + 0x9d: [Instruction23x, ["mul-long"]], + 0x9e: [Instruction23x, ["div-long"]], + 0x9f: [Instruction23x, ["rem-long"]], + 0xa0: [Instruction23x, ["and-long"]], + 0xa1: [Instruction23x, ["or-long"]], + 0xa2: [Instruction23x, ["xor-long"]], + 0xa3: [Instruction23x, ["shl-long"]], + 0xa4: [Instruction23x, ["shr-long"]], + 0xa5: [Instruction23x, ["ushr-long"]], + 0xa6: [Instruction23x, ["add-float"]], + 0xa7: [Instruction23x, ["sub-float"]], + 0xa8: [Instruction23x, ["mul-float"]], + 0xa9: [Instruction23x, ["div-float"]], + 0xaa: [Instruction23x, ["rem-float"]], + 0xab: [Instruction23x, ["add-double"]], + 0xac: [Instruction23x, ["sub-double"]], + 0xad: [Instruction23x, ["mul-double"]], + 0xae: [Instruction23x, ["div-double"]], + 0xaf: [Instruction23x, ["rem-double"]], + 0xb0: [Instruction12x, ["add-int/2addr"]], + 0xb1: [Instruction12x, ["sub-int/2addr"]], + 0xb2: [Instruction12x, ["mul-int/2addr"]], + 0xb3: [Instruction12x, ["div-int/2addr"]], + 0xb4: [Instruction12x, ["rem-int/2addr"]], + 0xb5: [Instruction12x, ["and-int/2addr"]], + 0xb6: [Instruction12x, ["or-int/2addr"]], + 0xb7: [Instruction12x, ["xor-int/2addr"]], + 0xb8: [Instruction12x, ["shl-int/2addr"]], + 0xb9: [Instruction12x, ["shr-int/2addr"]], + 0xba: [Instruction12x, ["ushr-int/2addr"]], + 0xbb: [Instruction12x, ["add-long/2addr"]], + 0xbc: [Instruction12x, ["sub-long/2addr"]], + 0xbd: [Instruction12x, ["mul-long/2addr"]], + 0xbe: [Instruction12x, ["div-long/2addr"]], + 0xbf: [Instruction12x, ["rem-long/2addr"]], + 0xc0: [Instruction12x, ["and-long/2addr"]], + 0xc1: [Instruction12x, ["or-long/2addr"]], + 0xc2: [Instruction12x, ["xor-long/2addr"]], + 0xc3: [Instruction12x, ["shl-long/2addr"]], + 0xc4: [Instruction12x, ["shr-long/2addr"]], + 0xc5: [Instruction12x, ["ushr-long/2addr"]], + 0xc6: [Instruction12x, ["add-float/2addr"]], + 0xc7: [Instruction12x, ["sub-float/2addr"]], + 0xc8: [Instruction12x, ["mul-float/2addr"]], + 0xc9: [Instruction12x, ["div-float/2addr"]], + 0xca: [Instruction12x, ["rem-float/2addr"]], + 0xcb: [Instruction12x, ["add-double/2addr"]], + 0xcc: [Instruction12x, ["sub-double/2addr"]], + 0xcd: [Instruction12x, ["mul-double/2addr"]], + 0xce: [Instruction12x, ["div-double/2addr"]], + 0xcf: [Instruction12x, ["rem-double/2addr"]], + 0xd0: [Instruction22s, ["add-int/lit16"]], + 0xd1: [Instruction22s, ["rsub-int"]], + 0xd2: [Instruction22s, ["mul-int/lit16"]], + 0xd3: [Instruction22s, ["div-int/lit16"]], + 0xd4: [Instruction22s, ["rem-int/lit16"]], + 0xd5: [Instruction22s, ["and-int/lit16"]], + 0xd6: [Instruction22s, ["or-int/lit16"]], + 0xd7: [Instruction22s, ["xor-int/lit16"]], + 0xd8: [Instruction22b, ["add-int/lit8"]], + 0xd9: [Instruction22b, ["rsub-int/lit8"]], + 0xda: [Instruction22b, ["mul-int/lit8"]], + 0xdb: [Instruction22b, ["div-int/lit8"]], + 0xdc: [Instruction22b, ["rem-int/lit8"]], + 0xdd: [Instruction22b, ["and-int/lit8"]], + 0xde: [Instruction22b, ["or-int/lit8"]], + 0xdf: [Instruction22b, ["xor-int/lit8"]], + 0xe0: [Instruction22b, ["shl-int/lit8"]], + 0xe1: [Instruction22b, ["shr-int/lit8"]], + 0xe2: [Instruction22b, ["ushr-int/lit8"]], + # expanded opcodes + 0xe3: [Instruction22c, ["iget-volatile", KIND_FIELD]], + 0xe4: [Instruction22c, ["iput-volatile", KIND_FIELD]], + 0xe5: [Instruction21c, ["sget-volatile", KIND_FIELD]], + 0xe6: [Instruction21c, ["sput-volatile", KIND_FIELD]], + 0xe7: [Instruction22c, ["iget-object-volatile", KIND_FIELD]], + 0xe8: [Instruction22c, ["iget-wide-volatile", KIND_FIELD]], + 0xe9: [Instruction22c, ["iput-wide-volatile", KIND_FIELD]], + 0xea: [Instruction21c, ["sget-wide-volatile", KIND_FIELD]], + 0xeb: [Instruction21c, ["sput-wide-volatile", KIND_FIELD]], + 0xec: [Instruction10x, ["breakpoint"]], + 0xed: [Instruction20bc, ["throw-verification-error", VARIES]], + 0xee: [Instruction35mi, ["execute-inline", INLINE_METHOD]], + 0xef: [Instruction3rmi, ["execute-inline/range", INLINE_METHOD]], + 0xf0: [Instruction35c, ["invoke-object-init/range", KIND_METH]], + 0xf1: [Instruction10x, ["return-void-barrier"]], + 0xf2: [Instruction22cs, ["iget-quick", FIELD_OFFSET]], + 0xf3: [Instruction22cs, ["iget-wide-quick", FIELD_OFFSET]], + 0xf4: [Instruction22cs, ["iget-object-quick", FIELD_OFFSET]], + 0xf5: [Instruction22cs, ["iput-quick", FIELD_OFFSET]], + 0xf6: [Instruction22cs, ["iput-wide-quick", FIELD_OFFSET]], + 0xf7: [Instruction22cs, ["iput-object-quick", FIELD_OFFSET]], + 0xf8: [Instruction35ms, ["invoke-virtual-quick", VTABLE_OFFSET]], + 0xf9: [Instruction3rms, ["invoke-virtual-quick/range", VTABLE_OFFSET]], + 0xfa: [Instruction35ms, ["invoke-super-quick", VTABLE_OFFSET]], + 0xfb: [Instruction3rms, ["invoke-super-quick/range", VTABLE_OFFSET]], + 0xfc: [Instruction22c, ["iput-object-volatile", KIND_FIELD]], + 0xfd: [Instruction21c, ["sget-object-volatile", KIND_FIELD]], + 0xfe: [Instruction21c, ["sput-object-volatile", KIND_FIELD]], +} + +DALVIK_OPCODES_PAYLOAD = { + 0x0100: [PackedSwitch], + 0x0200: [SparseSwitch], + 0x0300: [FillArrayData], +} + +INLINE_METHODS = [ + ["Lorg/apache/harmony/dalvik/NativeTestTarget;", "emptyInlineMethod", "()V" + ], + ["Ljava/lang/String;", "charAt", "(I)C"], + ["Ljava/lang/String;", "compareTo", "(Ljava/lang/String;)I"], + ["Ljava/lang/String;", "equals", "(Ljava/lang/Object;)Z"], + ["Ljava/lang/String;", "fastIndexOf", "(II)I"], + ["Ljava/lang/String;", "isEmpty", "()Z"], + ["Ljava/lang/String;", "length", "()I"], + ["Ljava/lang/Math;", "abs", "(I)I"], + ["Ljava/lang/Math;", "abs", "(J)J"], + ["Ljava/lang/Math;", "abs", "(F)F"], + ["Ljava/lang/Math;", "abs", "(D)D"], + ["Ljava/lang/Math;", "min", "(II)I"], + ["Ljava/lang/Math;", "max", "(II)I"], + ["Ljava/lang/Math;", "sqrt", "(D)D"], + ["Ljava/lang/Math;", "cos", "(D)D"], + ["Ljava/lang/Math;", "sin", "(D)D"], + ["Ljava/lang/Float;", "floatToIntBits", "(F)I"], + ["Ljava/lang/Float;", "floatToRawIntBits", "(F)I"], + ["Ljava/lang/Float;", "intBitsToFloat", "(I)F"], + ["Ljava/lang/Double;", "doubleToLongBits", "(D)J"], + ["Ljava/lang/Double;", "doubleToRawLongBits", "(D)J"], + ["Ljava/lang/Double;", "longBitsToDouble", "(J)D"], +] + +DALVIK_OPCODES_EXTENDED_WIDTH = { + 0x00ff: [Instruction41c, ["const-class/jumbo", KIND_TYPE]], + 0x01ff: [Instruction41c, ["check-cast/jumbo", KIND_TYPE]], + 0x02ff: [Instruction52c, ["instance-of/jumbo", KIND_TYPE]], + 0x03ff: [Instruction41c, ["new-instance/jumbo", KIND_TYPE]], + 0x04ff: [Instruction52c, ["new-array/jumbo", KIND_TYPE]], + 0x05ff: [Instruction5rc, ["filled-new-array/jumbo", KIND_TYPE]], + 0x06ff: [Instruction52c, ["iget/jumbo", KIND_FIELD]], + 0x07ff: [Instruction52c, ["iget-wide/jumbo", KIND_FIELD]], + 0x08ff: [Instruction52c, ["iget-object/jumbo", KIND_FIELD]], + 0x09ff: [Instruction52c, ["iget-boolean/jumbo", KIND_FIELD]], + 0x0aff: [Instruction52c, ["iget-byte/jumbo", KIND_FIELD]], + 0x0bff: [Instruction52c, ["iget-char/jumbo", KIND_FIELD]], + 0x0cff: [Instruction52c, ["iget-short/jumbo", KIND_FIELD]], + 0x0dff: [Instruction52c, ["iput/jumbo", KIND_FIELD]], + 0x0eff: [Instruction52c, ["iput-wide/jumbo", KIND_FIELD]], + 0x0fff: [Instruction52c, ["iput-object/jumbo", KIND_FIELD]], + 0x10ff: [Instruction52c, ["iput-boolean/jumbo", KIND_FIELD]], + 0x11ff: [Instruction52c, ["iput-byte/jumbo", KIND_FIELD]], + 0x12ff: [Instruction52c, ["iput-char/jumbo", KIND_FIELD]], + 0x13ff: [Instruction52c, ["iput-short/jumbo", KIND_FIELD]], + 0x14ff: [Instruction41c, ["sget/jumbo", KIND_FIELD]], + 0x15ff: [Instruction41c, ["sget-wide/jumbo", KIND_FIELD]], + 0x16ff: [Instruction41c, ["sget-object/jumbo", KIND_FIELD]], + 0x17ff: [Instruction41c, ["sget-boolean/jumbo", KIND_FIELD]], + 0x18ff: [Instruction41c, ["sget-byte/jumbo", KIND_FIELD]], + 0x19ff: [Instruction41c, ["sget-char/jumbo", KIND_FIELD]], + 0x1aff: [Instruction41c, ["sget-short/jumbo", KIND_FIELD]], + 0x1bff: [Instruction41c, ["sput/jumbo", KIND_FIELD]], + 0x1cff: [Instruction41c, ["sput-wide/jumbo", KIND_FIELD]], + 0x1dff: [Instruction41c, ["sput-object/jumbo", KIND_FIELD]], + 0x1eff: [Instruction41c, ["sput-boolean/jumbo", KIND_FIELD]], + 0x1fff: [Instruction41c, ["sput-byte/jumbo", KIND_FIELD]], + 0x20ff: [Instruction41c, ["sput-char/jumbo", KIND_FIELD]], + 0x21ff: [Instruction41c, ["sput-short/jumbo", KIND_FIELD]], + 0x22ff: [Instruction5rc, ["invoke-virtual/jumbo", KIND_METH]], + 0x23ff: [Instruction5rc, ["invoke-super/jumbo", KIND_METH]], + 0x24ff: [Instruction5rc, ["invoke-direct/jumbo", KIND_METH]], + 0x25ff: [Instruction5rc, ["invoke-static/jumbo", KIND_METH]], + 0x26ff: [Instruction5rc, ["invoke-interface/jumbo", KIND_METH]], +} + +DALVIK_OPCODES_OPTIMIZED = { + 0xf2ff: [Instruction5rc, ["invoke-object-init/jumbo", KIND_METH]], + 0xf3ff: [Instruction52c, ["iget-volatile/jumbo", KIND_FIELD]], + 0xf4ff: [Instruction52c, ["iget-wide-volatile/jumbo", KIND_FIELD]], + 0xf5ff: [Instruction52c, ["iget-object-volatile/jumbo ", KIND_FIELD]], + 0xf6ff: [Instruction52c, ["iput-volatile/jumbo", KIND_FIELD]], + 0xf7ff: [Instruction52c, ["iput-wide-volatile/jumbo", KIND_FIELD]], + 0xf8ff: [Instruction52c, ["iput-object-volatile/jumbo", KIND_FIELD]], + 0xf9ff: [Instruction41c, ["sget-volatile/jumbo", KIND_FIELD]], + 0xfaff: [Instruction41c, ["sget-wide-volatile/jumbo", KIND_FIELD]], + 0xfbff: [Instruction41c, ["sget-object-volatile/jumbo", KIND_FIELD]], + 0xfcff: [Instruction41c, ["sput-volatile/jumbo", KIND_FIELD]], + 0xfdff: [Instruction41c, ["sput-wide-volatile/jumbo", KIND_FIELD]], + 0xfeff: [Instruction41c, ["sput-object-volatile/jumbo", KIND_FIELD]], + 0xffff: [Instruction40sc, ["throw-verification-error/jumbo", VARIES]], +} + + +class Unresolved(Instruction): + def __init__(self, cm, data): + self.cm = cm + self.data = data + + def get_name(self): + return "unresolved" + + def get_operands(self, idx=-1): + return [(OPERAND_KIND + KIND_STRING, -1, + "AG:OP: invalid opcode " + repr(self.data))] + + def get_op_value(self): + return -1 + + def get_output(self, idx=-1): + return repr(self.data) + + def get_length(self): + return len(self.data) + + def get_raw(self): + return self.data + + +def get_instruction(cm, op_value, buff, odex=False): + try: + if not odex and (0xe3 <= op_value <= 0xfe): + return InstructionInvalid(cm, buff) + try: + return DALVIK_OPCODES_FORMAT[op_value][0](cm, buff) + except KeyError: + return InstructionInvalid(cm, buff) + except Exception as e: + # FIXME too broad exception + return Unresolved(cm, buff) + + +def get_extented_instruction(cm, op_value, buff): + try: + return DALVIK_OPCODES_EXTENDED_WIDTH[op_value][0](cm, buff) + except struct.error: + raise InvalidInstruction("Invalid Instruction for 0x%x:%s" % (op_value, repr(buff))) + + +def get_optimized_instruction(cm, op_value, buff): + try: + return DALVIK_OPCODES_OPTIMIZED[op_value][0](cm, buff) + except struct.error: + raise InvalidInstruction("Invalid Instruction for 0x%x:%s" % (op_value, repr(buff))) + + +def get_instruction_payload(op_value, buff): + try: + return DALVIK_OPCODES_PAYLOAD[op_value][0](buff) + except struct.error: + raise InvalidInstruction("Invalid Instruction for 0x%x:%s" % (op_value, repr(buff))) + + +class LinearSweepAlgorithm(object): + """ + This class is used to disassemble a method. The algorithm used by this class is linear sweep. + """ + + def get_instructions(self, cm, size, insn, idx): + """ + :param cm: a ClassManager object + :type cm: :class:`ClassManager` object + :param size: the total size of the buffer + :type size: int + :param insn: a raw buffer where are the instructions + :type insn: string + :param idx: a start address in the buffer + :type idx: int + + :rtype: a generator of :class:`Instruction` objects + """ + self.odex = cm.get_odex_format() + + max_idx = size * calcsize('=H') + if max_idx > len(insn): + max_idx = len(insn) + + # Get instructions + while idx < max_idx: + obj = None + classic_instruction = True + + op_value = insn[idx] + + # print "%x %x" % (op_value, idx) + + # payload instructions or extented/optimized instructions + if (op_value == 0x00 or op_value == 0xff) and ((idx + 2) < max_idx): + op_value = unpack('=H', insn[idx:idx + 2])[0] + + # payload instructions ? + if op_value in DALVIK_OPCODES_PAYLOAD: + try: + obj = get_instruction_payload(op_value, insn[idx:]) + classic_instruction = False + except struct.error: + log.warning("error while decoding instruction ...") + + elif op_value in DALVIK_OPCODES_EXTENDED_WIDTH: + try: + obj = get_extented_instruction(cm, op_value, insn[idx:]) + classic_instruction = False + except struct.error as why: + log.warning("error while decoding instruction ..." + + why.__str__()) + + # optimized instructions ? + elif self.odex and (op_value in DALVIK_OPCODES_OPTIMIZED): + obj = get_optimized_instruction(cm, op_value, insn[idx:]) + classic_instruction = False + + # classical instructions + if classic_instruction: + op_value = insn[idx] + obj = get_instruction(cm, op_value, insn[idx:], self.odex) + + # emit instruction + yield obj + idx = idx + obj.get_length() + + +class DCode(object): + """ + This class represents the instructions of a method + + :param class_manager: the ClassManager + :type class_manager: :class:`ClassManager` object + :param offset: the offset of the buffer + :type offset: int + :param size: the total size of the buffer + :type size: int + :param buff: a raw buffer where are the instructions + :type buff: string + """ + + def __init__(self, class_manager, offset, size, buff): + self.CM = class_manager + self.insn = buff + self.offset = offset + self.size = size + + self.notes = {} + self.cached_instructions = None + + self.idx = 0 + + def get_insn(self): + """ + Get the insn buffer + + :rtype: string + """ + return self.insn + + def set_insn(self, insn): + """ + Set a new raw buffer to disassemble + + :param insn: the buffer + :type insn: string + """ + self.insn = insn + self.size = len(self.insn) + + def set_idx(self, idx): + """ + Set the start address of the buffer + + :param idx: the index + :type idx: int + """ + self.idx = idx + + def is_cached_instructions(self): + if self.cached_instructions is not None: + return True + return False + + def set_instructions(self, instructions): + """ + Set the instructions + + :param instructions: the list of instructions + :type instructions: a list of :class:`Instruction` + """ + self.cached_instructions = instructions + + def get_instructions(self): + """ + Get the instructions + + :rtype: a generator of each :class:`Instruction` (or a cached list of instructions if you have setup instructions) + """ + # it is possible to a cache for instructions (avoid a new disasm) + if self.cached_instructions is None: + lsa = LinearSweepAlgorithm() + ins = lsa.get_instructions(self.CM, self.size, self.insn, + self.idx) + self.cached_instructions = list(ins) + + for i in self.cached_instructions: + yield i + + def reload(self): + self.cached_instructions = None + + def add_inote(self, msg, idx, off=None): + """ + Add a message to a specific instruction by using (default) the index of the address if specified + + :param msg: the message + :type msg: string + :param idx: index of the instruction (the position in the list of the instruction) + :type idx: int + :param off: address of the instruction + :type off: int + """ + if off is not None: + idx = self.off_to_pos(off) + + if idx not in self.notes: + self.notes[idx] = [] + + self.notes[idx].append(msg) + + def get_instruction(self, idx, off=None): + """ + Get a particular instruction by using (default) the index of the address if specified + + :param idx: index of the instruction (the position in the list of the instruction) + :type idx: int + :param off: address of the instruction + :type off: int + + :rtype: an :class:`Instruction` object + """ + if off is not None: + idx = self.off_to_pos(off) + if self.cached_instructions is None: + self.get_instructions() + return self.cached_instructions[idx] + + def off_to_pos(self, off): + """ + Get the position of an instruction by using the address + + :param off: address of the instruction + :type off: int + + :rtype: int + """ + idx = 0 + nb = 0 + for i in self.get_instructions(): + if idx == off: + return nb + nb += 1 + idx += i.get_length() + return -1 + + def get_ins_off(self, off): + """ + Get a particular instruction by using the address + + :param off: address of the instruction + :type off: int + + :rtype: an :class:`Instruction` object + """ + idx = 0 + for i in self.get_instructions(): + if idx == off: + return i + idx += i.get_length() + return None + + def show(self): + """ + Display (with a pretty print) this object + """ + off = 0 + for n, i in enumerate(self.get_instructions()): + print("{:8d} (0x{:08x}) {:30} {}".format(n, off, i.get_name(), i.get_output(self.idx))) + off += i.get_length() + + def get_raw(self): + """ + Return the raw buffer of this object + + :rtype: bytearray + """ + buff = bytearray() + for i in self.get_instructions(): + buff += i.get_raw() + return buff + + def get_length(self): + """ + Return the length of this object + + :rtype: int + """ + return len(self.get_raw()) + + +class TryItem(object): + """ + This class represents the try_item format + + :param buff: a raw buffer where are the try_item format + :type buff: string + :param cm: the ClassManager + :type cm: :class:`ClassManager` object + """ + + def __init__(self, buff, cm): + self.offset = buff.get_idx() + + self.CM = cm + + self.start_addr = unpack("=I", buff.read(4))[0] + self.insn_count = unpack("=H", buff.read(2))[0] + self.handler_off = unpack("=H", buff.read(2))[0] + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def get_start_addr(self): + """ + Get the start address of the block of code covered by this entry. The address is a count of 16-bit code units to the start of the first covered instruction. + + :rtype: int + """ + return self.start_addr + + def get_insn_count(self): + """ + Get the number of 16-bit code units covered by this entry + + :rtype: int + """ + return self.insn_count + + def get_handler_off(self): + """ + Get the offset in bytes from the start of the associated :class:`EncodedCatchHandlerList` to the :class:`EncodedCatchHandler` for this entry. + + :rtype: int + """ + return self.handler_off + + def get_raw(self): + return pack("=I", self.start_addr) + pack("=H", self.insn_count) + pack( + "=H", self.handler_off) + + def get_length(self): + return len(self.get_raw()) + + +class DalvikCode(object): + """ + This class represents the instructions of a method + + :param buff: a raw buffer where are the instructions + :type buff: string + :param cm: the ClassManager + :type cm: :class:`ClassManager` object + """ + + def __init__(self, buff, cm): + self.CM = cm + self.offset = buff.get_idx() + + self.registers_size = unpack("=H", buff.read(2))[0] + self.ins_size = unpack("=H", buff.read(2))[0] + self.outs_size = unpack("=H", buff.read(2))[0] + self.tries_size = unpack("=H", buff.read(2))[0] + self.debug_info_off = unpack("=I", buff.read(4))[0] + self.insns_size = unpack("=I", buff.read(4))[0] + + ushort = calcsize('=H') + + self.code = DCode(self.CM, buff.get_idx(), self.insns_size, buff.read( + self.insns_size * ushort)) + + if self.insns_size % 2 == 1 and self.tries_size > 0: + self.padding = unpack("=H", buff.read(2))[0] + + self.tries = [] + self.handlers = None + if self.tries_size > 0: + for i in range(0, self.tries_size): + self.tries.append(TryItem(buff, self.CM)) + + self.handlers = EncodedCatchHandlerList(buff, self.CM) + + def get_registers_size(self): + """ + Get the number of registers used by this code + + :rtype: int + """ + return self.registers_size + + def get_ins_size(self): + """ + Get the number of words of incoming arguments to the method that this code is for + + :rtype: int + """ + return self.ins_size + + def get_outs_size(self): + """ + Get the number of words of outgoing argument space required by this code for method invocation + + :rtype: int + """ + return self.outs_size + + def get_tries_size(self): + """ + Get the number of :class:`TryItem` for this instance + + :rtype: int + """ + return self.tries_size + + def get_debug_info_off(self): + """ + Get the offset from the start of the file to the debug info (line numbers + local variable info) sequence for this code, or 0 if there simply is no information + + :rtype: int + """ + return self.debug_info_off + + def get_insns_size(self): + """ + Get the size of the instructions list, in 16-bit code units + + :rtype: int + """ + return self.insns_size + + def get_handlers(self): + """ + Get the bytes representing a list of lists of catch types and associated handler addresses. + + :rtype: :class:`EncodedCatchHandlerList` + """ + return self.handlers + + def get_tries(self): + """ + Get the array indicating where in the code exceptions are caught and how to handle them + + :rtype: a list of :class:`TryItem` objects + """ + return self.tries + + def get_debug(self): + """ + Return the associated debug object + + :rtype: :class:`DebugInfoItem` + """ + return self.CM.get_debug_off(self.debug_info_off) + + def get_bc(self): + """ + Return the associated code object + + :rtype: :class:`DCode` + """ + return self.code + + def set_idx(self, idx): + self.code.set_idx(idx) + + def reload(self): + self.code.reload() + + def get_length(self): + return self.insns_size + + def _begin_show(self): + log.debug("registers_size: %d" % self.registers_size) + log.debug("ins_size: %d" % self.ins_size) + log.debug("outs_size: %d" % self.outs_size) + log.debug("tries_size: %d" % self.tries_size) + log.debug("debug_info_off: %d" % self.debug_info_off) + log.debug("insns_size: %d" % self.insns_size) + + bytecode._PrintBanner() + + def show(self): + self._begin_show() + self.code.show() + self._end_show() + + def _end_show(self): + bytecode._PrintBanner() + + def get_obj(self): + return [self.code, self.tries, self.handlers] + + def get_raw(self): + """ + Get the reconstructed code as bytearray + + :rtype: bytearray + """ + code_raw = self.code.get_raw() + self.insns_size = (len(code_raw) // 2) + (len(code_raw) % 2) + + buff = bytearray() + buff += pack("=H", self.registers_size) + \ + pack("=H", self.ins_size) + \ + pack("=H", self.outs_size) + \ + pack("=H", self.tries_size) + \ + pack("=I", self.debug_info_off) + \ + pack("=I", self.insns_size) + \ + code_raw + + if self.tries_size > 0: + if (self.insns_size % 2 == 1): + buff += pack("=H", self.padding) + + for i in self.tries: + buff += i.get_raw() + buff += self.handlers.get_raw() + + return buff + + def add_inote(self, msg, idx, off=None): + """ + Add a message to a specific instruction by using (default) the index of the address if specified + + :param msg: the message + :type msg: string + :param idx: index of the instruction (the position in the list of the instruction) + :type idx: int + :param off: address of the instruction + :type off: int + """ + if self.code: + return self.code.add_inote(msg, idx, off) + + def get_instruction(self, idx, off=None): + if self.code: + return self.code.get_instruction(idx, off) + + def get_size(self): + length = 0 + length += len(pack("=H", self.registers_size) + \ + pack("=H", self.ins_size) + \ + pack("=H", self.outs_size) + \ + pack("=H", self.tries_size) + \ + pack("=I", self.debug_info_off) + \ + pack("=I", self.insns_size)) + length += self.code.get_length() + + if self.insns_size % 2 == 1 and self.tries_size > 0: + length += len(pack("=H", self.padding)) + + if self.tries_size > 0: + for i in self.tries: + length += i.get_length() + + length += self.handlers.get_length() + + return length + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + +class CodeItem(object): + def __init__(self, size, buff, cm): + self.CM = cm + + self.offset = buff.get_idx() + + self.code = [] + self.__code_off = {} + + for i in range(0, size): + # As we read the DalvikCode items from the map, there might be + # padding bytes in between. + # We know, that the alignment is 4 bytes. + off = buff.get_idx() + if off % 4 != 0: + buff.set_idx(off + (4 - (off % 4))) + + x = DalvikCode(buff, cm) + self.code.append(x) + self.__code_off[x.get_off()] = x + + def set_off(self, off): + self.offset = off + + def get_off(self): + return self.offset + + def get_code(self, off): + try: + return self.__code_off[off] + except KeyError: + return None + + def reload(self): + for i in self.code: + i.reload() + + def show(self): + # FIXME workaround for showing the MAP_ITEMS + # if m_a is none, we use get_raw. + # Otherwise the real code is printed... + bytecode._PrintDefault("CODE_ITEM\n") + bytecode._PrintDefault(binascii.hexlify(self.get_raw()).decode("ASCII")) + bytecode._PrintDefault("\n") + + def get_obj(self): + return [i for i in self.code] + + def get_raw(self): + buff = bytearray() + for c in self.code: + buff += c.get_raw() + return buff + + def get_length(self): + length = 0 + for i in self.code: + length += i.get_size() + return length + + +class MapItem(object): + def __init__(self, buff, cm): + """ + Implementation of a map_item, which occours in a map_list + + https://source.android.com/devices/tech/dalvik/dex-format#map-item + """ + self.CM = cm + self.buff = buff + + self.off = buff.get_idx() + + self.type = unpack("=H", buff.read(2))[0] + self.unused = unpack("=H", buff.read(2))[0] + self.size = unpack("=I", buff.read(4))[0] + self.offset = unpack("=I", buff.read(4))[0] + + self.item = None + + def get_off(self): + """Gets the offset of the map item itself inside the DEX file""" + return self.off + + def get_offset(self): + """Gets the offset of the item of the map item""" + return self.offset + + def get_type(self): + return self.type + + def get_size(self): + return self.size + + def parse(self): + log.debug("Starting parsing map_item '%s'" % TYPE_MAP_ITEM[self.type]) + started_at = time.time() + + buff = self.buff + buff.set_idx(self.offset) + cm = self.CM + + if TYPE_MAP_ITEM[self.type] == "TYPE_STRING_ID_ITEM": + self.item = [StringIdItem(buff, cm) for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_CODE_ITEM": + self.item = CodeItem(self.size, buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_TYPE_ID_ITEM": + self.item = TypeHIdItem(self.size, buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_PROTO_ID_ITEM": + self.item = ProtoHIdItem(self.size, buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_FIELD_ID_ITEM": + self.item = FieldHIdItem(self.size, buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_METHOD_ID_ITEM": + self.item = MethodHIdItem(self.size, buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_CLASS_DEF_ITEM": + self.item = ClassHDefItem(self.size, buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_HEADER_ITEM": + self.item = HeaderItem(self.size, buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_ANNOTATION_ITEM": + self.item = [AnnotationItem(buff, cm) for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_ANNOTATION_SET_ITEM": + self.item = [AnnotationSetItem(buff, cm) + for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_ANNOTATIONS_DIRECTORY_ITEM": + self.item = [AnnotationsDirectoryItem(buff, cm) + for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_ANNOTATION_SET_REF_LIST": + self.item = [AnnotationSetRefList(buff, cm) + for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_TYPE_LIST": + self.item = [TypeList(buff, cm) for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_STRING_DATA_ITEM": + self.item = [StringDataItem(buff, cm) for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_DEBUG_INFO_ITEM": + self.item = DebugInfoItemEmpty(buff, cm) + + elif TYPE_MAP_ITEM[self.type] == "TYPE_ENCODED_ARRAY_ITEM": + self.item = [EncodedArrayItem(buff, cm) + for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_CLASS_DATA_ITEM": + self.item = [ClassDataItem(buff, cm) for i in range(0, self.size)] + + elif TYPE_MAP_ITEM[self.type] == "TYPE_MAP_LIST": + pass # It's me I think !!! + + else: + log.warning("Map item %d @ 0x%x(%d) is unknown" % + (self.type, buff.get_idx(), buff.get_idx())) + + diff = time.time() - started_at + minutes, seconds = diff // 60, diff % 60 + log.debug("End of parsing map_item '{}'. Required time {:.0f}:{:07.4f}".format(TYPE_MAP_ITEM[self.type], minutes, seconds)) + + def reload(self): + if self.item is not None: + if isinstance(self.item, list): + for i in self.item: + i.reload() + else: + self.item.reload() + + def show(self): + bytecode._Print("\tMAP_TYPE_ITEM", TYPE_MAP_ITEM[self.type]) + + if self.item is not None: + if isinstance(self.item, list): + for i in self.item: + i.show() + else: + self.item.show() + + def get_obj(self): + return self.item + + def get_raw(self): + if isinstance(self.item, list): + self.offset = self.item[0].get_off() + else: + self.offset = self.item.get_off() + + return pack("=HHII", self.type, self.unused, self.size, self.offset) + + def get_length(self): + return calcsize("=HHII") + + def get_item(self): + return self.item + + def set_item(self, item): + self.item = item + + +class OffObj(object): + def __init__(self, o): + """ + .. deprecated:: 3.3.5 + Will be removed! + """ + warnings.warn("deprecated, this class will be removed!", DeprecationWarning) + self.off = o + + +class ClassManager(object): + """ + This class is used to access to all elements (strings, type, proto ...) of the dex format + based on their offset or index. + """ + + def __init__(self, vm, config): + """ + :param DalvikVMFormat vm: the VM to create a ClassManager for + :param dict config: a configuration dictionary + """ + self.vm = vm + self.buff = vm + + self.decompiler_ob = None + + self.__manage_item = {} + self.__manage_item_off = [] + + self.__strings_off = {} + self.__typelists_off = {} + self.__classdata_off = {} + + self.__obj_offset = {} + self.__item_offset = {} + + self.__cached_proto = {} + + self.recode_ascii_string = config["RECODE_ASCII_STRING"] + self.recode_ascii_string_meth = None + if config["RECODE_ASCII_STRING_METH"]: + self.recode_ascii_string_meth = config["RECODE_ASCII_STRING_METH"] + + self.hook_strings = {} + + if self.vm: + self.odex_format = self.vm.get_format_type() == "ODEX" + + def get_ascii_string(self, s): + try: + return s.decode("ascii") + except UnicodeDecodeError: + d = "" + for i in s: + if i < 128: + d += i + else: + d += "%x" % i + return d + + def get_odex_format(self): + """Returns True if the underlying VM is ODEX""" + return self.odex_format + + def get_obj_by_offset(self, offset): + """ + Returnes a object from as given offset inside the DEX file + """ + return self.__obj_offset[offset] + + def get_item_by_offset(self, offset): + return self.__item_offset[offset] + + def get_string_by_offset(self, offset): + return self.__strings_off[offset] + + def get_lazy_analysis(self): + """ + .. deprecated:: 3.3.5 + do not use this function anymore! + """ + warnings.warn("deprecated, this method always returns False!", DeprecationWarning) + return False + + def set_decompiler(self, decompiler): + self.decompiler_ob = decompiler + + def get_engine(self): + """ + .. deprecated:: 3.3.5 + do not use this function anymore! + """ + warnings.warn("deprecated, this method always returns None!", DeprecationWarning) + return None + + def get_all_engine(self): + """ + .. deprecated:: 3.3.5 + do not use this function anymore! + """ + warnings.warn("deprecated, this method always returns None!", DeprecationWarning) + return None + + def add_type_item(self, type_item, c_item, item): + self.__manage_item[type_item] = item + + self.__obj_offset[c_item.get_off()] = c_item + self.__item_offset[c_item.get_offset()] = item + + if item is None: + pass + elif isinstance(item, list): + for i in item: + goff = i.offset + self.__manage_item_off.append(goff) + + self.__obj_offset[i.get_off()] = i + + if type_item == "TYPE_STRING_DATA_ITEM": + self.__strings_off[goff] = i + elif type_item == "TYPE_TYPE_LIST": + self.__typelists_off[goff] = i + elif type_item == "TYPE_CLASS_DATA_ITEM": + self.__classdata_off[goff] = i + else: + self.__manage_item_off.append(c_item.get_offset()) + + def get_code(self, idx): + try: + return self.__manage_item["TYPE_CODE_ITEM"].get_code(idx) + except KeyError: + return None + + def get_class_data_item(self, off): + i = self.__classdata_off.get(off) + if i is None: + log.warning("unknown class data item @ 0x%x" % off) + + return i + + def get_encoded_array_item(self, off): + for i in self.__manage_item["TYPE_ENCODED_ARRAY_ITEM"]: + if i.get_off() == off: + return i + + def get_string(self, idx): + """ + Return a string from the string table at index `idx` + + :param int idx: index in the string section + """ + if idx in self.hook_strings: + return self.hook_strings[idx] + + try: + off = self.__manage_item["TYPE_STRING_ID_ITEM"][idx].get_string_data_off() + except IndexError: + log.warning("unknown string item @ %d" % idx) + return "AG:IS: invalid string" + + try: + if self.recode_ascii_string: + if self.recode_ascii_string_meth: + return self.recode_ascii_string_meth( + self.__strings_off[off].get()) + return self.get_ascii_string(self.__strings_off[off].get()) + return self.__strings_off[off].get() + except KeyError: + log.warning("unknown string item @ 0x%x(%d)" % (off, idx)) + return "AG:IS: invalid string" + + def get_raw_string(self, idx): + """ + Return the (unprocessed) string from the string table at index `idx`. + + :param int idx: the index in the string section + """ + try: + off = self.__manage_item["TYPE_STRING_ID_ITEM"][idx].get_string_data_off() + except IndexError: + log.warning("unknown string item @ %d" % idx) + return "AG:IS: invalid string" + + try: + return self.__strings_off[off].get() + except KeyError: + log.warning("unknown string item @ 0x%x(%d)" % (off, idx)) + return "AG:IS: invalid string" + + def get_type_list(self, off): + if off == 0: + return [] + + i = self.__typelists_off[off] + return [type_.get_string() for type_ in i.get_list()] + + def get_type(self, idx): + """ + Return the resolved type name based on the index + + :param int idx: + :return: the type name + :rtype: str + """ + _type = self.__manage_item["TYPE_TYPE_ID_ITEM"].get(idx) + if _type == -1: + return "AG:ITI: invalid type" + return self.get_string(_type) + + def get_type_ref(self, idx): + return self.__manage_item["TYPE_TYPE_ID_ITEM"].get(idx) + + def get_proto(self, idx): + proto = self.__cached_proto.get(idx) + if not proto: + proto = self.__manage_item["TYPE_PROTO_ID_ITEM"].get(idx) + self.__cached_proto[idx] = proto + + return [proto.get_parameters_off_value(), + proto.get_return_type_idx_value()] + + def get_field(self, idx): + field = self.__manage_item["TYPE_FIELD_ID_ITEM"].get(idx) + return [field.get_class_name(), field.get_type(), field.get_name()] + + def get_field_ref(self, idx): + return self.__manage_item["TYPE_FIELD_ID_ITEM"].get(idx) + + def get_method(self, idx): + method = self.__manage_item["TYPE_METHOD_ID_ITEM"].get(idx) + return method.get_list() + + def get_method_ref(self, idx): + return self.__manage_item["TYPE_METHOD_ID_ITEM"].get(idx) + + def set_hook_class_name(self, class_def, value): + python_export = True + _type = self.__manage_item["TYPE_TYPE_ID_ITEM"].get( + class_def.get_class_idx()) + self.set_hook_string(_type, value) + + try: + self.vm._delete_python_export_class(class_def) + except AttributeError: + python_export = False + + class_def.reload() + + # FIXME + self.__manage_item["TYPE_METHOD_ID_ITEM"].reload() + + for i in class_def.get_methods(): + i.reload() + + for i in class_def.get_fields(): + i.reload() + + if python_export: + self.vm._create_python_export_class(class_def) + + def set_hook_method_name(self, encoded_method, value): + python_export = True + + method = self.__manage_item["TYPE_METHOD_ID_ITEM"].get( + encoded_method.get_method_idx()) + self.set_hook_string(method.get_name_idx(), value) + + class_def = self.__manage_item["TYPE_CLASS_DEF_ITEM"].get_class_idx( + method.get_class_idx()) + if class_def is not None: + try: + name = bytecode.FormatNameToPython(encoded_method.get_name()) + except AttributeError: + name += "_" + bytecode.FormatDescriptorToPython( + encoded_method.get_descriptor()) + + log.debug("try deleting old name in python...") + try: + delattr(class_def.M, name) + log.debug("success with regular name") + except AttributeError: + log.debug("WARNING: fail with regular name") + # python_export = False + + try: + name = bytecode.FormatNameToPython(encoded_method.get_name( + ) + '_' + encoded_method.proto.replace(' ', '').replace( + '(', '').replace('[', '').replace(')', '').replace( + '/', '_').replace(';', '')) + except AttributeError: + name += "_" + bytecode.FormatDescriptorToPython( + encoded_method.get_descriptor()) + + try: + delattr(class_def.M, name) + log.debug("success with name containing prototype") + except AttributeError: + log.debug("WARNING: fail with name containing prototype") + python_export = False + + if python_export: + name = bytecode.FormatNameToPython(value) + setattr(class_def.M, name, encoded_method) + log.debug("new name in python: created: %s." % name) + else: + log.debug("skipping creating new name in python") + + method.reload() + + def set_hook_field_name(self, encoded_field, value): + python_export = True + + field = self.__manage_item["TYPE_FIELD_ID_ITEM"].get( + encoded_field.get_field_idx()) + self.set_hook_string(field.get_name_idx(), value) + + class_def = self.__manage_item["TYPE_CLASS_DEF_ITEM"].get_class_idx( + field.get_class_idx()) + if class_def is not None: + try: + name = bytecode.FormatNameToPython(encoded_field.get_name()) + except AttributeError: + name += "_" + bytecode.FormatDescriptorToPython( + encoded_field.get_descriptor()) + + try: + delattr(class_def.F, name) + except AttributeError: + python_export = False + + if python_export: + name = bytecode.FormatNameToPython(value) + setattr(class_def.F, name, encoded_field) + + field.reload() + + def set_hook_string(self, idx, value): + self.hook_strings[idx] = value + + def get_next_offset_item(self, idx): + for i in self.__manage_item_off: + if i > idx: + return i + return idx + + def get_debug_off(self, off): + self.buff.set_idx(off) + + return DebugInfoItem(self.buff, self) + + +class MapList(object): + """ + This class can parse the "map_list" of the dex format + + https://source.android.com/devices/tech/dalvik/dex-format#map-list + """ + + def __init__(self, cm, off, buff): + self.CM = cm + + buff.set_idx(off) + + self.offset = off + + self.size = unpack("=I", buff.read(4))[0] + + self.map_item = [] + for i in range(0, self.size): + idx = buff.get_idx() + + mi = MapItem(buff, self.CM) + self.map_item.append(mi) + + buff.set_idx(idx + mi.get_length()) + + # TYPE_STRING_DATA_ITEM will be at the beginning of ordered + # We want to parse this first, as other map items depend on it. + ordered = sorted(self.map_item, + key=lambda mi: TYPE_MAP_ITEM[mi.get_type()] != "TYPE_STRING_DATA_ITEM") + # TODO: There could be some speedup if the parsing needs to be done only + # once. + # The idea is to parse all items in the correct order, which is possible + # as all items construct an acyclic graph of dependencies. + # + # We know, that we do not need to parse header_item and map_list (again) + # Then the following order would probably work: + # * string_data_item + # * string_id_item + # * type_id_item + # * type_list + # * field_id_item + # * proto_id_item + # * method_id_item + # * debug_info_item + # * code_item + # * method_handle_item + # * call_site_id_item + # * class_data_item + # * encoded_array_item + # * annotation_item + # * annotation_set_item + # * annotation_set_ref_item + # * annotations_directory_item + # * class_def_item + + for mi in ordered: + mi.parse() + + c_item = mi.get_item() + if c_item is None: + mi.set_item(self) + c_item = mi.get_item() + + self.CM.add_type_item(TYPE_MAP_ITEM[mi.get_type()], mi, c_item) + + log.debug("Reloading all map_items to fix references") + started_at = time.time() + for i in self.map_item: + log.debug("Reloading '%s'" % TYPE_MAP_ITEM[i.get_type()]) + i.reload() + diff = time.time() - started_at + minutes, seconds = diff // 60, diff % 60 + log.debug("End of reloading '{}'. Required time {:.0f}:{:07.4f}".format(TYPE_MAP_ITEM[i.get_type()], minutes, seconds)) + + def reload(self): + pass + + def get_off(self): + return self.offset + + def set_off(self, off): + self.offset = off + + def get_item_type(self, ttype): + """ + Get a particular item type + + :param ttype: a string which represents the desired type + + :rtype: None or the item object + """ + for i in self.map_item: + if TYPE_MAP_ITEM[i.get_type()] == ttype: + return i.get_item() + return None + + def show(self): + """ + Print with a pretty display the MapList object + """ + bytecode._Print("MAP_LIST SIZE", self.size) + for i in self.map_item: + if i.item != self: + # FIXME this does not work for CodeItems! + # as we do not have the method analysis here... + i.show() + + def get_obj(self): + return [x.get_obj() for x in self.map_item] + + def get_raw(self): + return pack("=I", self.size) + b''.join(x.get_raw() + for x in self.map_item) + + def get_class_manager(self): + return self.CM + + def get_length(self): + return len(self.get_raw()) + + +class DalvikVMFormat(bytecode.BuffHandle): + """ + This class can parse a classes.dex file of an Android application (APK). + + :param buff: a string which represents the classes.dex file + :param decompiler: associate a decompiler object to display the java source code + :type buff: string + :type decompiler: object + + example:: + + d = DalvikVMFormat( read("classes.dex") ) + """ + + def __init__(self, buff, decompiler=None, config=None, using_api=None): + # to allow to pass apk object ==> we do not need to pass additionally target version + if isinstance(buff, APK): + self.api_version = buff.get_target_sdk_version() + buff = buff.get_dex() # getting dex from APK file + elif using_api: + self.api_version = using_api + else: + self.api_version = CONF["DEFAULT_API"] + + # TODO: can using_api be added to config parameter? + super(DalvikVMFormat, self).__init__(buff) + + self.config = config + if not self.config: + self.config = { + "RECODE_ASCII_STRING": CONF["RECODE_ASCII_STRING"], + "RECODE_ASCII_STRING_METH": CONF["RECODE_ASCII_STRING_METH"], + } + + self.CM = ClassManager(self, self.config) + self.CM.set_decompiler(decompiler) + + self._preload(buff) + self._load(buff) + + def _preload(self, buff): + pass + + def _load(self, buff): + self.__header = HeaderItem(0, self, ClassManager(None, self.config)) + + if self.__header.map_off == 0: + log.warning("no map list ...") + else: + self.map_list = MapList(self.CM, self.__header.map_off, self) + + self.classes = self.map_list.get_item_type("TYPE_CLASS_DEF_ITEM") + self.methods = self.map_list.get_item_type("TYPE_METHOD_ID_ITEM") + self.fields = self.map_list.get_item_type("TYPE_FIELD_ID_ITEM") + self.codes = self.map_list.get_item_type("TYPE_CODE_ITEM") + self.strings = self.map_list.get_item_type("TYPE_STRING_DATA_ITEM") + self.debug = self.map_list.get_item_type("TYPE_DEBUG_INFO_ITEM") + self.header = self.map_list.get_item_type("TYPE_HEADER_ITEM") + + self._flush() + + def _flush(self): + """ + Flush all caches + Might be used after classes, methods or fields are added. + """ + self.classes_names = None + self.__cache_methods = None + self.__cached_methods_idx = None + self.__cache_fields = None + + # cache methods and fields as well, otherwise the decompiler is quite slow + self.__cache_all_methods = None + self.__cache_all_fields = None + + + def get_vmanalysis(self): + """ + .. deprecated:: 3.1.0 + The :class:`~androguard.core.analysis.analysis.Analysis` is not + loaded anymore into :class:`DalvikVMFormat` in order to avoid + cyclic dependencies. + :class:`~androguard.core.analysis.analysis.Analysis` extends now + :class:`DalvikVMFormat`. + This Method does nothing anymore! + + The Analysis Object should contain all the information required, + inclduing the DalvikVMFormats. + """ + warnings.warn("deprecated, this method does nothing!", DeprecationWarning) + + def set_vmanalysis(self, analysis): + """ + .. deprecated:: 3.1.0 + The :class:`~androguard.core.analysis.analysis.Analysis` is not + loaded anymore into :class:`DalvikVMFormat` in order to avoid + cyclic dependencies. + :class:`~androguard.core.analysis.analysis.Analysis` extends now + :class:`DalvikVMFormat`. + This Method does nothing anymore! + + The Analysis Object should contain all the information required, + inclduing the DalvikVMFormats. + """ + warnings.warn("deprecated, this method does nothing!", DeprecationWarning) + + def get_api_version(self): + """ + This method returns api version that should be used for loading api + specific resources. + + :rtype: int + """ + return self.api_version + + def get_classes_def_item(self): + """ + This function returns the class def item + + :rtype: :class:`ClassHDefItem` object + """ + return self.classes + + def get_methods_id_item(self): + """ + This function returns the method id item + + :rtype: :class:`MethodHIdItem` object + """ + return self.methods + + def get_fields_id_item(self): + """ + This function returns the field id item + + :rtype: :class:`FieldHIdItem` object + """ + return self.fields + + def get_codes_item(self): + """ + This function returns the code item + + :rtype: :class:`CodeItem` object + """ + return self.codes + + def get_string_data_item(self): + """ + This function returns the string data item + + :rtype: :class:`StringDataItem` object + """ + return self.strings + + def get_debug_info_item(self): + """ + This function returns the debug info item + + :rtype: :class:`DebugInfoItem` object + """ + return self.debug + + def get_header_item(self): + """ + This function returns the header item + + :rtype: :class:`HeaderItem` object + """ + return self.header + + def get_class_manager(self): + """ + This function returns a ClassManager object which allow you to get + access to all index references (strings, methods, fields, ....) + + :rtype: :class:`ClassManager` object + """ + return self.CM + + def show(self): + """ + Show the all information in the object + """ + self.map_list.show() + + def save(self): + """ + Return the dex (with the modifications) into raw format (fix checksums) + (beta: do not use !) + + :rtype: string + """ + l = [] + h = {} + s = {} + h_r = {} + + idx = 0 + for i in self.map_list.get_obj(): + length = 0 + + if isinstance(i, list): + for j in i: + if isinstance(j, AnnotationsDirectoryItem): + if idx % 4 != 0: + idx = idx + (4 - (idx % 4)) + + l.append(j) + + c_length = j.get_length() + if isinstance(j, StringDataItem): + c_length += 1 + h[j] = idx + length + h_r[idx + length] = j + s[idx + length] = c_length + + length += c_length + # log.debug("SAVE" + str(j) + " @ 0x%x" % (idx+length)) + + log.debug("SAVE " + str(i[0]) + " @0x%x (%x)" % (idx, length)) + + else: + if isinstance(i, MapList): + if idx % 4 != 0: + idx = idx + (4 - (idx % 4)) + + l.append(i) + h[i] = idx + h_r[idx] = i + + length = i.get_length() + + s[idx] = length + + log.debug("SAVE " + str(i) + " @0x%x (%x)" % (idx, length)) + + idx += length + + self.header.file_size = idx + + for i in l: + idx = h[i] + i.set_off(idx) + if isinstance(i, CodeItem): + last_idx = idx + for j in i.get_obj(): + j.set_off(last_idx) + # j.set_debug_info_off(0) + last_idx += j.get_size() + + last_idx = 0 + buff = bytearray() + for i in l: + idx = h[i] + + if idx != last_idx: + log.debug("Adjust alignment @%x with 00 %x" % (idx, idx - last_idx)) + buff += bytearray([0] * (idx - last_idx)) + + buff += i.get_raw() + if isinstance(i, StringDataItem): + buff += b"\x00" + last_idx = idx + s[idx] + + log.debug("GLOBAL SIZE %d" % len(buff)) + + return self.fix_checksums(buff) + + def fix_checksums(self, buff): + """ + Fix a dex format buffer by setting all checksums + + :rtype: string + """ + import zlib + import hashlib + + signature = hashlib.sha1(buff[32:]).digest() + + buff = buff[:12] + signature + buff[32:] + checksum = zlib.adler32(buff[12:]) + buff = buff[:8] + pack("=i", checksum) + buff[12:] + + log.debug("NEW SIGNATURE %s" % repr(signature)) + log.debug("NEW CHECKSUM %x" % checksum) + + return buff + + def get_cm_field(self, idx): + """ + Get a specific field by using an index + + :param idx: index of the field + :type idx: int + """ + return self.CM.get_field(idx) + + def get_cm_method(self, idx): + """ + Get a specific method by using an index + + :param idx: index of the method + :type idx: int + """ + return self.CM.get_method(idx) + + def get_cm_string(self, idx): + """ + Get a specific string by using an index + + :param idx: index of the string + :type idx: int + """ + return self.CM.get_raw_string(idx) + + def get_cm_type(self, idx): + """ + Get a specific type by using an index + + :param idx: index of the type + :type idx: int + """ + return self.CM.get_type(idx) + + def get_classes_names(self, update=False): + """ + Return the names of classes + + :param update: True indicates to recompute the list. + Maybe needed after using a MyClass.set_name(). + :rtype: a list of string + """ + if self.classes_names is None or update: + self.classes_names = [i.get_name() for i in self.classes.class_def] + return self.classes_names + + def get_classes(self): + """ + Return all classes + + :rtype: a list of :class:`ClassDefItem` objects + """ + return self.classes.class_def + + def get_class(self, name): + """ + Return a specific class + + :param name: the name of the class + + :rtype: a :class:`ClassDefItem` object + """ + for i in self.classes.class_def: + if i.get_name() == name: + return i + return None + + def get_method(self, name): + """ + Return a list all methods which corresponds to the regexp + + :param name: the name of the method (a python regexp) + + :rtype: a list with all :class:`EncodedMethod` objects + """ + # TODO could use a generator here + prog = re.compile(name) + l = [] + for i in self.classes.class_def: + for j in i.get_methods(): + if prog.match(j.get_name()): + l.append(j) + return l + + def get_field(self, name): + """ + Return a list all fields which corresponds to the regexp + + :param name: the name of the field (a python regexp) + + :rtype: a list with all :class:`EncodedField` objects + """ + # TODO could use a generator here + prog = re.compile(name) + l = [] + for i in self.classes.class_def: + for j in i.get_fields(): + if prog.match(j.get_name()): + l.append(j) + return l + + def get_all_fields(self): + """ + Return a list of field items + + :rtype: a list of :class:`FieldIdItem` objects + """ + try: + return self.fields.gets() + except AttributeError: + return [] + + def get_fields(self): + """ + Return all field objects + + :rtype: a list of :class:`EncodedField` objects + """ + if self.__cache_all_fields is None: + self.__cache_all_fields = [] + for i in self.classes.class_def: + for j in i.get_fields(): + self.__cache_all_fields.append(j) + return self.__cache_all_fields + + def get_methods(self): + """ + Return all method objects + + :rtype: a list of :class:`EncodedMethod` objects + """ + if self.__cache_all_methods is None: + self.__cache_all_methods = [] + for i in self.classes.class_def: + for j in i.get_methods(): + self.__cache_all_methods.append(j) + return self.__cache_all_methods + + def get_len_methods(self): + """ + Return the number of methods + + :rtype: int + """ + return len(self.get_methods()) + + def get_method_by_idx(self, idx): + """ + Return a specific method by using an index + :param idx: the index of the method + :type idx: int + + :rtype: None or an :class:`EncodedMethod` object + """ + if self.__cached_methods_idx is None: + self.__cached_methods_idx = {} + for i in self.classes.class_def: + for j in i.get_methods(): + self.__cached_methods_idx[j.get_method_idx()] = j + + try: + return self.__cached_methods_idx[idx] + except KeyError: + return None + + def get_method_descriptor(self, class_name, method_name, descriptor): + """ + Return the specific method + + :param class_name: the class name of the method + :type class_name: string + :param method_name: the name of the method + :type method_name: string + :param descriptor: the descriptor of the method + :type descriptor: string + + :rtype: None or a :class:`EncodedMethod` object + """ + key = class_name + method_name + descriptor + + if self.__cache_methods is None: + self.__cache_methods = {} + for i in self.classes.class_def: + for j in i.get_methods(): + self.__cache_methods[j.get_class_name() + j.get_name() + + j.get_descriptor()] = j + + return self.__cache_methods.get(key) + + def get_methods_descriptor(self, class_name, method_name): + """ + Return the specific methods of the class + + :param class_name: the class name of the method + :type class_name: string + :param method_name: the name of the method + :type method_name: string + + :rtype: None or a :class:`EncodedMethod` object + """ + l = [] + for i in self.classes.class_def: + if i.get_name() == class_name: + for j in i.get_methods(): + if j.get_name() == method_name: + l.append(j) + + return l + + def get_methods_class(self, class_name): + """ + Return all methods of a specific class + + :param class_name: the class name + :type class_name: string + + :rtype: a list with :class:`EncodedMethod` objects + """ + l = [] + for i in self.classes.class_def: + for j in i.get_methods(): + if class_name == j.get_class_name(): + l.append(j) + + return l + + def get_fields_class(self, class_name): + """ + Return all fields of a specific class + + :param class_name: the class name + :type class_name: string + + :rtype: a list with :class:`EncodedField` objects + """ + l = [] + for i in self.classes.class_def: + for j in i.get_fields(): + if class_name == j.get_class_name(): + l.append(j) + + return l + + def get_field_descriptor(self, class_name, field_name, descriptor): + """ + Return the specific field + + :param class_name: the class name of the field + :type class_name: string + :param field_name: the name of the field + :type field_name: string + :param descriptor: the descriptor of the field + :type descriptor: string + + :rtype: None or a :class:`EncodedField` object + """ + + key = class_name + field_name + descriptor + + if self.__cache_fields is None: + self.__cache_fields = {} + for i in self.classes.class_def: + for j in i.get_fields(): + self.__cache_fields[j.get_class_name() + j.get_name() + + j.get_descriptor()] = j + + return self.__cache_fields.get(key) + + def get_strings_unicode(self): + """ + Return all strings + + This method will return pure UTF-16 strings. This is the "exact" same string as used in Java. + Those strings can be problematic for python, as they can contain surrogates as well as "broken" + surrogate pairs, ie single high or low surrogates. + Such a string can for example not be printed. + To avoid such problems, there is an escape mechanism to detect such lonely surrogates + and escape them in the string. Of course, this results in a different string than in the Java Source! + + Use `get_strings()` as a general purpose and `get_strings_unicode()` if you require the exact string + from the Java Source. + You can always escape the string from `get_strings_unicode()` using the function + :meth:`androguard.core.bytecodes.mutf8.patch_string` + + :rtype: a list with all strings used in the format (types, names ...) + """ + for i in self.strings: + yield i.get_unicode() + + def get_strings(self): + """ + Return all strings + + The strings will have escaped surrogates, if only a single high or low surrogate is found. + Complete surrogates are put together into the representing 32bit character. + + :rtype: a list with all strings used in the format (types, names ...) + """ + return [i.get() for i in self.strings] + + def get_regex_strings(self, regular_expressions): + """ + Return all target strings matched the regex + + :param regular_expressions: the python regex + :type regular_expressions: string + + :rtype: a list of strings matching the regex expression + """ + str_list = [] + if regular_expressions.count is None: + return None + for i in self.get_strings(): + if re.match(regular_expressions, i): + str_list.append(i) + return str_list + + def get_format_type(self): + """ + Return the type + + :rtype: a string + """ + return "DEX" + + def create_python_export(self): + """ + Export classes/methods/fields' names in the python namespace + """ + setattr(self, "C", ExportObject()) + + for _class in self.get_classes(): + self._create_python_export_class(_class) + + def _delete_python_export_class(self, _class): + self._create_python_export_class(_class, True) + + def _create_python_export_class(self, _class, delete=False): + if _class is not None: + ### Class + name = bytecode.FormatClassToPython(_class.get_name()) + if delete: + delattr(self.C, name) + return + else: + setattr(self.C, name, _class) + setattr(_class, "M", ExportObject()) + setattr(_class, "F", ExportObject()) + + self._create_python_export_methods(_class, delete) + self._create_python_export_fields(_class, delete) + + def _create_python_export_methods(self, _class, delete): + m = {} + for method in _class.get_methods(): + if method.get_name() not in m: + m[method.get_name()] = [] + m[method.get_name()].append(method) + setattr(method, "XF", ExportObject()) + setattr(method, "XT", ExportObject()) + + for i in m: + if len(m[i]) == 1: + j = m[i][0] + name = bytecode.FormatNameToPython(j.get_name()) + setattr(_class.M, name, j) + else: + for j in m[i]: + name = ( + bytecode.FormatNameToPython(j.get_name()) + "_" + + bytecode.FormatDescriptorToPython(j.get_descriptor())) + setattr(_class.M, name, j) + + def _create_python_export_fields(self, _class, delete): + f = {} + for field in _class.get_fields(): + if field.get_name() not in f: + f[field.get_name()] = [] + f[field.get_name()].append(field) + setattr(field, "XR", ExportObject()) + setattr(field, "XW", ExportObject()) + + for i in f: + if len(f[i]) == 1: + j = f[i][0] + name = bytecode.FormatNameToPython(j.get_name()) + setattr(_class.F, name, j) + else: + for j in f[i]: + name = bytecode.FormatNameToPython(j.get_name( + )) + "_" + bytecode.FormatDescriptorToPython( + j.get_descriptor()) + setattr(_class.F, name, j) + + def get_BRANCH_DVM_OPCODES(self): + return BRANCH_DVM_OPCODES + + def get_determineNext(self): + return determineNext + + def get_determineException(self): + return determineException + + def set_decompiler(self, decompiler): + self.CM.set_decompiler(decompiler) + + def disassemble(self, offset, size): + """ + Disassembles a given offset in the DEX file + + :param offset: offset to disassemble in the file (from the beginning of the file) + :type offset: int + :param size: + :type size: + """ + for i in DCode( + self.CM, offset, size, + self.get_buff()[offset:offset + size]).get_instructions(): + yield i + + def _get_class_hierarchy(self): + ids = {} + present = {} + r_ids = {} + to_add = {} + els = [] + + for current_class in self.get_classes(): + s_name = current_class.get_superclassname()[1:-1] + c_name = current_class.get_name()[1:-1] + + if s_name not in ids: + ids[s_name] = len(ids) + 1 + r_ids[ids[s_name]] = s_name + + if c_name not in ids: + ids[c_name] = len(ids) + 1 + + els.append([ids[c_name], ids[s_name], c_name]) + present[ids[c_name]] = True + + for i in els: + if i[1] not in present: + to_add[i[1]] = r_ids[i[1]] + + for i in to_add: + els.append([i, 0, to_add[i]]) + + treeMap = {} + Root = bytecode.Node(0, "Root") + treeMap[Root.id] = Root + for element in els: + nodeId, parentId, title = element + if not nodeId in treeMap: + treeMap[nodeId] = bytecode.Node(nodeId, title) + else: + treeMap[nodeId].id = nodeId + treeMap[nodeId].title = title + + if not parentId in treeMap: + treeMap[parentId] = bytecode.Node(0, '') + treeMap[parentId].children.append(treeMap[nodeId]) + + return Root + + def print_classes_hierarchy(self): + + def print_map(node, l, lvl=0): + for n in node.children: + if lvl == 0: + l.append("%s" % n.title) + else: + l.append("%s %s" % ('\t' * lvl, n.title)) + if len(n.children) > 0: + print_map(n, l, lvl + 1) + + l = [] + print_map(self._get_class_hierarchy(), l) + return l + + def list_classes_hierarchy(self): + + def print_map(node, l): + if node.title not in l: + l[node.title] = [] + + for n in node.children: + if len(n.children) > 0: + w = {n.title: []} + l[node.title].append(w) + + print_map(n, w) + else: + l[node.title].append(n.title) + + l = {} + print_map(self._get_class_hierarchy(), l) + + return l + + def get_format(self): + objs = self.map_list.get_obj() + + h = {} + index = {} + self._get_objs(h, index, objs) + + return h, index + + def _get_objs(self, h, index, objs): + for i in objs: + if isinstance(i, list): + self._get_objs(h, index, i) + else: + try: + if i is not None: + h[i] = {} + index[i] = i.offset + except AttributeError: + pass + + try: + if not isinstance(i, MapList): + next_objs = i.get_obj() + if isinstance(next_objs, list): + self._get_objs(h[i], index, next_objs) + except AttributeError: + pass + + def colorize_operands(self, operands, colors): + for operand in operands: + if operand[0] == OPERAND_REGISTER: + yield "%sv%d%s" % (colors["registers"], operand[1], + colors["normal"]) + + elif operand[0] == OPERAND_LITERAL: + yield "%s%d%s" % (colors["literal"], operand[1], + colors["normal"]) + + elif operand[0] == OPERAND_RAW: + yield "%s%s%s" % (colors["raw"], operand[1], colors["normal"]) + + elif operand[0] == OPERAND_OFFSET: + yield "%s%d%s" % (colors["offset"], operand[1], colors["normal"] + ) + + elif operand[0] & OPERAND_KIND: + if operand[0] == (OPERAND_KIND + KIND_STRING): + yield "%s%s%s" % (colors["string"], operand[2], + colors["normal"]) + elif operand[0] == (OPERAND_KIND + KIND_METH): + yield "%s%s%s" % (colors["meth"], operand[2], + colors["normal"]) + elif operand[0] == (OPERAND_KIND + KIND_FIELD): + yield "%s%s%s" % (colors["field"], operand[2], + colors["normal"]) + elif operand[0] == (OPERAND_KIND + KIND_TYPE): + yield "%s%s%s" % (colors["type"], operand[2], + colors["normal"]) + else: + yield "%s" % repr(operands[2]) + else: + yield "%s" % repr(operands[1]) + + def get_operand_html(self, operand, registers_colors, colors, escape_fct, + wrap_fct): + if operand[0] == OPERAND_REGISTER: + return "v%s" % ( + registers_colors[operand[1]], operand[1]) + + elif operand[0] == OPERAND_LITERAL: + return "0x%x" % (colors["literal"], + operand[1]) + + elif operand[0] == OPERAND_RAW: + if len(operand[1]) > 32: + wrapped = wrap_fct(operand[1], 32) + wrapped_adjust = "
" + "
".join( + escape_fct(repr(i)[1:-1]) for i in wrapped) + return "%s" % (colors["raw"], + wrapped_adjust) + + return "%s" % ( + colors["raw"], escape_fct(repr(operand[1])[1:-1])) + + elif operand[0] == OPERAND_OFFSET: + return "0x%x" % ( + colors["offset"], operand[1]) + + elif operand[0] & OPERAND_KIND: + if operand[0] == (OPERAND_KIND + KIND_STRING): + if len(operand[2]) > 32: + wrapped = wrap_fct(operand[2], 32) + wrapped_adjust = "
" + "
".join(escape_fct(i) + for i in wrapped) + return "%s" % (colors["string"], + wrapped_adjust) + + return "%s" % (colors["string"], + escape_fct(operand[2])) + elif operand[0] == (OPERAND_KIND + KIND_METH): + return "%s" % (colors["method"], + escape_fct(operand[2])) + elif operand[0] == (OPERAND_KIND + KIND_FIELD): + return "%s" % (colors["field"], + escape_fct(operand[2])) + elif operand[0] == (OPERAND_KIND + KIND_TYPE): + return "%s" % (colors["type"], + escape_fct(operand[2])) + + return escape_fct(str(operand[2])) + + return escape_fct(str(operand[1])) + + +class OdexHeaderItem(object): + """ + This class can parse the odex header + + :param buff: a Buff object string which represents the odex dependencies + """ + + def __init__(self, buff): + buff.set_idx(8) + + self.dex_offset = unpack("=I", buff.read(4))[0] + self.dex_length = unpack("=I", buff.read(4))[0] + self.deps_offset = unpack("=I", buff.read(4))[0] + self.deps_length = unpack("=I", buff.read(4))[0] + self.aux_offset = unpack("=I", buff.read(4))[0] + self.aux_length = unpack("=I", buff.read(4))[0] + self.flags = unpack("=I", buff.read(4))[0] + self.padding = unpack("=I", buff.read(4))[0] + + def show(self): + print("dex_offset:%x dex_length:%x deps_offset:%x deps_length:%x aux_offset:%x aux_length:%x flags:%x" % ( + self.dex_offset, self.dex_length, self.deps_offset, + self.deps_length, self.aux_offset, self.aux_length, self.flags)) + + def get_raw(self): + return pack("=I", self.dex_offset) + \ + pack("=I", self.dex_length) + \ + pack("=I", self.deps_offset) + \ + pack("=I", self.deps_length) + \ + pack("=I", self.aux_offset) + \ + pack("=I", self.aux_length) + \ + pack("=I", self.flags) + \ + pack("=I", self.padding) + + +class OdexDependencies(object): + """ + This class can parse the odex dependencies + + :param buff: a Buff object string which represents the odex dependencies + """ + + def __init__(self, buff): + self.modification_time = unpack("=I", buff.read(4))[0] + self.crc = unpack("=I", buff.read(4))[0] + self.dalvik_build = unpack("=I", buff.read(4))[0] + self.dependency_count = unpack("=I", buff.read(4))[0] + self.dependencies = [] + self.dependency_checksums = [] + + for i in range(0, self.dependency_count): + string_length = unpack("=I", buff.read(4))[0] + name_dependency = buff.read(string_length) + self.dependencies.append(name_dependency) + self.dependency_checksums.append(buff.read(20)) + + def get_dependencies(self): + """ + Return the list of dependencies + + :rtype: a list of strings + """ + return self.dependencies + + def get_raw(self): + dependencies = "" + + for idx, value in enumerate(self.dependencies): + dependencies += pack("=I", len(value)) + \ + pack("=%ds" % len(value), value) + \ + pack("=20s", self.dependency_checksums[idx]) + + return pack("=I", self.modification_time) + \ + pack("=I", self.crc) + \ + pack("=I", self.dalvik_build) + \ + pack("=I", self.dependency_count) + \ + dependencies + + +class DalvikOdexVMFormat(DalvikVMFormat): + """ + This class can parse an odex file + + :param buff: a string which represents the odex file + :param decompiler: associate a decompiler object to display the java source code + :type buff: string + :type decompiler: object + + :Example: + DalvikOdexVMFormat( read("classes.odex") ) + """ + + def _preload(self, buff): + self.orig_buff = buff + self.magic = buff[:8] + if self.magic in (ODEX_FILE_MAGIC_35, ODEX_FILE_MAGIC_36, ODEX_FILE_MAGIC_37): + self.odex_header = OdexHeaderItem(self) + + self.set_idx(self.odex_header.deps_offset) + self.dependencies = OdexDependencies(self) + + self.padding = buff[self.odex_header.deps_offset + + self.odex_header.deps_length:] + + self.set_idx(self.odex_header.dex_offset) + self.set_buff(self.read(self.odex_header.dex_length)) + self.set_idx(0) + + def save(self): + """ + Do not use ! + """ + dex_raw = super(DalvikOdexVMFormat, self).save() + return self.magic + self.odex_header.get_raw( + ) + dex_raw + self.dependencies.get_raw() + self.padding + + def get_buff(self): + return self.magic + self.odex_header.get_raw() + super( + DalvikOdexVMFormat, + self).get_buff() + self.dependencies.get_raw() + self.padding + + def get_dependencies(self): + """ + Return the odex dependencies object + + :rtype: an OdexDependencies object + """ + return self.dependencies + + def get_format_type(self): + """ + Return the type + + :rtype: a string + """ + return "ODEX" + + +def get_params_info(nb, proto): + i_buffer = "# Parameters:\n" + + ret = proto.split(')') + params = ret[0][1:].split() + if params: + i_buffer += "# - local registers: v%d...v%d\n" % (0, + nb - len(params) - 1) + j = 0 + for i in range(nb - len(params), nb): + i_buffer += "# - v%d:%s\n" % (i, get_type(params[j])) + j += 1 + else: + i_buffer += "# local registers: v%d...v%d\n" % (0, nb - 1) + + i_buffer += "#\n# - return:%s\n\n" % get_type(ret[1]) + + return i_buffer + + +def get_bytecodes_method(dex_object, ana_object, method): + mx = ana_object.get_method(method) + return get_bytecodes_methodx(method, mx) + + +def get_bytecodes_methodx(method, mx): + basic_blocks = mx.basic_blocks.gets() + i_buffer = "" + + idx = 0 + nb = 0 + + i_buffer += "# %s->%s%s [access_flags=%s]\n#\n" % ( + method.get_class_name(), method.get_name(), method.get_descriptor(), + method.get_access_flags_string()) + if method.code is not None: + i_buffer += get_params_info(method.code.get_registers_size(), + method.get_descriptor()) + + for i in basic_blocks: + bb_buffer = "" + ins_buffer = "" + + bb_buffer += "%s : " % i.name + + # TODO using the generator object as a list again is not ideal... + instructions = list(i.get_instructions()) + for ins in instructions: + ins_buffer += "\t%-8d(%08x) " % (nb, idx) + ins_buffer += "%-20s %s" % (ins.get_name(), ins.get_output(idx)) + + op_value = ins.get_op_value() + if ins == instructions[-1] and i.childs != []: + # packed/sparse-switch + if (op_value == 0x2b or op_value == 0x2c) and len(i.childs) > 1: + values = i.get_special_ins(idx).get_values() + bb_buffer += "[ D:%s " % i.childs[0][2].name + bb_buffer += ' '.join( + "%d:%s" % (values[j], i.childs[j + 1][2].name) + for j in range(0, len(i.childs) - 1)) + " ]" + else: + # if len(i.childs) == 2: + # i_buffer += "%s[ %s%s " % (branch_false_color, i.childs[0][2].name, branch_true_color)) + # print_fct(' '.join("%s" % c[2].name for c in i.childs[1:]) + " ]%s" % normal_color) + # else: + bb_buffer += "[ " + ' '.join("%s" % c[2].name for c in i.childs) + " ]" + + idx += ins.get_length() + nb += 1 + + ins_buffer += "\n" + + if i.get_exception_analysis() is not None: + ins_buffer += "\t%s\n" % (i.exception_analysis.show_buff()) + + i_buffer += bb_buffer + "\n" + ins_buffer + "\n" + + return i_buffer + + +class ExportObject(object): + """ + Wrapper object for ipython exports + """ + pass + + +class ConstString(Instruction21c): + """ + Simulate a const-string instruction. + """ + + def __init__(self, orig_ins, value): + self.OP = orig_ins.OP + self.AA = orig_ins.AA + self.BBBB = orig_ins.BBBB + self.cm = orig_ins.cm + self.value = value + + def get_raw_string(self): + return self.value + + def get_operands(self, idx=-1): + return [(0, 1), (257, 2113, "'%s'" % self.value)] + + +class FakeNop(Instruction10x): + """Simulate a nop instruction.""" + + def __init__(self, length): + self.OP = 0x00 + self.length = length + + def get_length(self): + return self.length diff --git a/androguard/core/bytecodes/dvm_types.py b/androguard/core/bytecodes/dvm_types.py new file mode 100644 index 0000000..1a5531d --- /dev/null +++ b/androguard/core/bytecodes/dvm_types.py @@ -0,0 +1,58 @@ +# This file contains dictionaries used in the Dalvik Format. + +# https://source.android.com/devices/tech/dalvik/dex-format#type-codes +TYPE_MAP_ITEM = { + 0x0: "TYPE_HEADER_ITEM", + 0x1: "TYPE_STRING_ID_ITEM", + 0x2: "TYPE_TYPE_ID_ITEM", + 0x3: "TYPE_PROTO_ID_ITEM", + 0x4: "TYPE_FIELD_ID_ITEM", + 0x5: "TYPE_METHOD_ID_ITEM", + 0x6: "TYPE_CLASS_DEF_ITEM", + 0x1000: "TYPE_MAP_LIST", + 0x1001: "TYPE_TYPE_LIST", + 0x1002: "TYPE_ANNOTATION_SET_REF_LIST", + 0x1003: "TYPE_ANNOTATION_SET_ITEM", + 0x2000: "TYPE_CLASS_DATA_ITEM", + 0x2001: "TYPE_CODE_ITEM", + 0x2002: "TYPE_STRING_DATA_ITEM", + 0x2003: "TYPE_DEBUG_INFO_ITEM", + 0x2004: "TYPE_ANNOTATION_ITEM", + 0x2005: "TYPE_ENCODED_ARRAY_ITEM", + 0x2006: "TYPE_ANNOTATIONS_DIRECTORY_ITEM", +} + +# https://source.android.com/devices/tech/dalvik/dex-format#access-flags +ACCESS_FLAGS = { + 0x1: 'public', + 0x2: 'private', + 0x4: 'protected', + 0x8: 'static', + 0x10: 'final', + 0x20: 'synchronized', + 0x40: 'bridge', + 0x80: 'varargs', + 0x100: 'native', + 0x200: 'interface', + 0x400: 'abstract', + 0x800: 'strictfp', + 0x1000: 'synthetic', + 0x4000: 'enum', + 0x8000: 'unused', + 0x10000: 'constructor', + 0x20000: 'synchronized', +} + +# https://source.android.com/devices/tech/dalvik/dex-format#typedescriptor +TYPE_DESCRIPTOR = { + 'V': 'void', + 'Z': 'boolean', + 'B': 'byte', + 'S': 'short', + 'C': 'char', + 'I': 'int', + 'J': 'long', + 'F': 'float', + 'D': 'double', +} + diff --git a/androguard/core/bytecodes/mutf8.py b/androguard/core/bytecodes/mutf8.py new file mode 100644 index 0000000..9b14a40 --- /dev/null +++ b/androguard/core/bytecodes/mutf8.py @@ -0,0 +1,127 @@ +import builtins +from builtins import str +import struct + + +def chr(val): + """ + Patched Version of builtins.chr, to work with narrow python builds + In those versions, the function unichr does not work with inputs >0x10000 + + This seems to be a problem usually on older windows builds. + + :param val: integer value of character + :return: character + """ + try: + return builtins.chr(val) + except ValueError as e: + if "(narrow Python build)" in str(e): + return struct.pack('i', val).decode('utf-32') + else: + raise e + + +def decode(b): + """ + Decode bytes as MUTF-8 + See https://docs.oracle.com/javase/6/docs/api/java/io/DataInput.html#modified-utf-8 + for more information + + Surrogates will be returned as two 16 bit characters. + + :param b: bytes to decode + :rtype: unicode (py2), str (py3) of 16bit chars + :raises: UnicodeDecodeError if string is not decodable + """ + res = u"" + + b = iter(bytearray(b)) + + for x in b: + if x >> 7 == 0: + # Single char: + res += chr(x & 0x7f) + elif x >> 5 == 0b110: + # 2 byte Multichar + b2 = next(b) + if b2 >> 6 != 0b10: + raise UnicodeDecodeError("Second byte of 2 byte sequence does not looks right.") + + res += chr((x & 0x1f) << 6 | b2 & 0x3f) + elif x >> 4 == 0b1110: + # 3 byte Multichar + b2 = next(b) + b3 = next(b) + if b2 >> 6 != 0b10: + raise UnicodeDecodeError("Second byte of 3 byte sequence does not looks right.") + if b3 >> 6 != 0b10: + raise UnicodeDecodeError("Third byte of 3 byte sequence does not looks right.") + + res += chr((x & 0xf) << 12 | (b2 & 0x3f) << 6 | b3 & 0x3f) + else: + raise UnicodeDecodeError("Could not decode byte") + + return res + + +class PeekIterator: + """ + A quick'n'dirty variant of an Iterator that has a special function + peek, which will return the next object but not consume it. + """ + idx = 0 + + def __init__(self, s): + self.s = s + + def __iter__(self): + return self + + def __next__(self): + if self.idx == len(self.s): + raise StopIteration() + self.idx = self.idx + 1 + return self.s[self.idx - 1] + + def next(self): + # py2 compliance + return self.__next__() + + def peek(self): + if self.idx == len(self.s): + return None + return self.s[self.idx] + + +def patch_string(s): + """ + Reorganize a String in such a way that surrogates are printable + and lonely surrogates are escaped. + + :param s: input string + :return: string with escaped lonely surrogates and 32bit surrogates + """ + res = u'' + it = PeekIterator(s) + for c in it: + if (ord(c) >> 10) == 0b110110: + # High surrogate + # Check for the next + n = it.peek() + if n and (ord(n) >> 10) == 0b110111: + # Next is a low surrogate! Merge them together + res += chr(((ord(c) & 0x3ff) << 10 | (ord(n) & 0x3ff)) + 0x10000) + # Skip next char, as we already consumed it + next(it) + else: + # Lonely high surrogate + res += u"\\u{:04x}".format(ord(c)) + elif (ord(c) >> 10) == 0b110111: + # Lonely low surrogate + res += u"\\u{:04x}".format(ord(c)) + else: + # Looks like a normal char... + res += c + return res + diff --git a/androguard/core/resources/__init__.py b/androguard/core/resources/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/androguard/core/resources/public.json b/androguard/core/resources/public.json new file mode 100644 index 0000000..9fb8b90 --- /dev/null +++ b/androguard/core/resources/public.json @@ -0,0 +1,2510 @@ +{ + "attr": { + "theme": 16842752, + "label": 16842753, + "icon": 16842754, + "name": 16842755, + "manageSpaceActivity": 16842756, + "allowClearUserData": 16842757, + "permission": 16842758, + "readPermission": 16842759, + "writePermission": 16842760, + "protectionLevel": 16842761, + "permissionGroup": 16842762, + "sharedUserId": 16842763, + "hasCode": 16842764, + "persistent": 16842765, + "enabled": 16842766, + "debuggable": 16842767, + "exported": 16842768, + "process": 16842769, + "taskAffinity": 16842770, + "multiprocess": 16842771, + "finishOnTaskLaunch": 16842772, + "clearTaskOnLaunch": 16842773, + "stateNotNeeded": 16842774, + "excludeFromRecents": 16842775, + "authorities": 16842776, + "syncable": 16842777, + "initOrder": 16842778, + "grantUriPermissions": 16842779, + "priority": 16842780, + "launchMode": 16842781, + "screenOrientation": 16842782, + "configChanges": 16842783, + "description": 16842784, + "targetPackage": 16842785, + "handleProfiling": 16842786, + "functionalTest": 16842787, + "value": 16842788, + "resource": 16842789, + "mimeType": 16842790, + "scheme": 16842791, + "host": 16842792, + "port": 16842793, + "path": 16842794, + "pathPrefix": 16842795, + "pathPattern": 16842796, + "action": 16842797, + "data": 16842798, + "targetClass": 16842799, + "colorForeground": 16842800, + "colorBackground": 16842801, + "backgroundDimAmount": 16842802, + "disabledAlpha": 16842803, + "textAppearance": 16842804, + "textAppearanceInverse": 16842805, + "textColorPrimary": 16842806, + "textColorPrimaryDisableOnly": 16842807, + "textColorSecondary": 16842808, + "textColorPrimaryInverse": 16842809, + "textColorSecondaryInverse": 16842810, + "textColorPrimaryNoDisable": 16842811, + "textColorSecondaryNoDisable": 16842812, + "textColorPrimaryInverseNoDisable": 16842813, + "textColorSecondaryInverseNoDisable": 16842814, + "textColorHintInverse": 16842815, + "textAppearanceLarge": 16842816, + "textAppearanceMedium": 16842817, + "textAppearanceSmall": 16842818, + "textAppearanceLargeInverse": 16842819, + "textAppearanceMediumInverse": 16842820, + "textAppearanceSmallInverse": 16842821, + "textCheckMark": 16842822, + "textCheckMarkInverse": 16842823, + "buttonStyle": 16842824, + "buttonStyleSmall": 16842825, + "buttonStyleInset": 16842826, + "buttonStyleToggle": 16842827, + "galleryItemBackground": 16842828, + "listPreferredItemHeight": 16842829, + "expandableListPreferredItemPaddingLeft": 16842830, + "expandableListPreferredChildPaddingLeft": 16842831, + "expandableListPreferredItemIndicatorLeft": 16842832, + "expandableListPreferredItemIndicatorRight": 16842833, + "expandableListPreferredChildIndicatorLeft": 16842834, + "expandableListPreferredChildIndicatorRight": 16842835, + "windowBackground": 16842836, + "windowFrame": 16842837, + "windowNoTitle": 16842838, + "windowIsFloating": 16842839, + "windowIsTranslucent": 16842840, + "windowContentOverlay": 16842841, + "windowTitleSize": 16842842, + "windowTitleStyle": 16842843, + "windowTitleBackgroundStyle": 16842844, + "alertDialogStyle": 16842845, + "panelBackground": 16842846, + "panelFullBackground": 16842847, + "panelColorForeground": 16842848, + "panelColorBackground": 16842849, + "panelTextAppearance": 16842850, + "scrollbarSize": 16842851, + "scrollbarThumbHorizontal": 16842852, + "scrollbarThumbVertical": 16842853, + "scrollbarTrackHorizontal": 16842854, + "scrollbarTrackVertical": 16842855, + "scrollbarAlwaysDrawHorizontalTrack": 16842856, + "scrollbarAlwaysDrawVerticalTrack": 16842857, + "absListViewStyle": 16842858, + "autoCompleteTextViewStyle": 16842859, + "checkboxStyle": 16842860, + "dropDownListViewStyle": 16842861, + "editTextStyle": 16842862, + "expandableListViewStyle": 16842863, + "galleryStyle": 16842864, + "gridViewStyle": 16842865, + "imageButtonStyle": 16842866, + "imageWellStyle": 16842867, + "listViewStyle": 16842868, + "listViewWhiteStyle": 16842869, + "popupWindowStyle": 16842870, + "progressBarStyle": 16842871, + "progressBarStyleHorizontal": 16842872, + "progressBarStyleSmall": 16842873, + "progressBarStyleLarge": 16842874, + "seekBarStyle": 16842875, + "ratingBarStyle": 16842876, + "ratingBarStyleSmall": 16842877, + "radioButtonStyle": 16842878, + "scrollbarStyle": 16842879, + "scrollViewStyle": 16842880, + "spinnerStyle": 16842881, + "starStyle": 16842882, + "tabWidgetStyle": 16842883, + "textViewStyle": 16842884, + "webViewStyle": 16842885, + "dropDownItemStyle": 16842886, + "spinnerDropDownItemStyle": 16842887, + "dropDownHintAppearance": 16842888, + "spinnerItemStyle": 16842889, + "mapViewStyle": 16842890, + "preferenceScreenStyle": 16842891, + "preferenceCategoryStyle": 16842892, + "preferenceInformationStyle": 16842893, + "preferenceStyle": 16842894, + "checkBoxPreferenceStyle": 16842895, + "yesNoPreferenceStyle": 16842896, + "dialogPreferenceStyle": 16842897, + "editTextPreferenceStyle": 16842898, + "ringtonePreferenceStyle": 16842899, + "preferenceLayoutChild": 16842900, + "textSize": 16842901, + "typeface": 16842902, + "textStyle": 16842903, + "textColor": 16842904, + "textColorHighlight": 16842905, + "textColorHint": 16842906, + "textColorLink": 16842907, + "state_focused": 16842908, + "state_window_focused": 16842909, + "state_enabled": 16842910, + "state_checkable": 16842911, + "state_checked": 16842912, + "state_selected": 16842913, + "state_active": 16842914, + "state_single": 16842915, + "state_first": 16842916, + "state_middle": 16842917, + "state_last": 16842918, + "state_pressed": 16842919, + "state_expanded": 16842920, + "state_empty": 16842921, + "state_above_anchor": 16842922, + "ellipsize": 16842923, + "x": 16842924, + "y": 16842925, + "windowAnimationStyle": 16842926, + "gravity": 16842927, + "autoLink": 16842928, + "linksClickable": 16842929, + "entries": 16842930, + "layout_gravity": 16842931, + "windowEnterAnimation": 16842932, + "windowExitAnimation": 16842933, + "windowShowAnimation": 16842934, + "windowHideAnimation": 16842935, + "activityOpenEnterAnimation": 16842936, + "activityOpenExitAnimation": 16842937, + "activityCloseEnterAnimation": 16842938, + "activityCloseExitAnimation": 16842939, + "taskOpenEnterAnimation": 16842940, + "taskOpenExitAnimation": 16842941, + "taskCloseEnterAnimation": 16842942, + "taskCloseExitAnimation": 16842943, + "taskToFrontEnterAnimation": 16842944, + "taskToFrontExitAnimation": 16842945, + "taskToBackEnterAnimation": 16842946, + "taskToBackExitAnimation": 16842947, + "orientation": 16842948, + "keycode": 16842949, + "fullDark": 16842950, + "topDark": 16842951, + "centerDark": 16842952, + "bottomDark": 16842953, + "fullBright": 16842954, + "topBright": 16842955, + "centerBright": 16842956, + "bottomBright": 16842957, + "bottomMedium": 16842958, + "centerMedium": 16842959, + "id": 16842960, + "tag": 16842961, + "scrollX": 16842962, + "scrollY": 16842963, + "background": 16842964, + "padding": 16842965, + "paddingLeft": 16842966, + "paddingTop": 16842967, + "paddingRight": 16842968, + "paddingBottom": 16842969, + "focusable": 16842970, + "focusableInTouchMode": 16842971, + "visibility": 16842972, + "fitsSystemWindows": 16842973, + "scrollbars": 16842974, + "fadingEdge": 16842975, + "fadingEdgeLength": 16842976, + "nextFocusLeft": 16842977, + "nextFocusRight": 16842978, + "nextFocusUp": 16842979, + "nextFocusDown": 16842980, + "clickable": 16842981, + "longClickable": 16842982, + "saveEnabled": 16842983, + "drawingCacheQuality": 16842984, + "duplicateParentState": 16842985, + "clipChildren": 16842986, + "clipToPadding": 16842987, + "layoutAnimation": 16842988, + "animationCache": 16842989, + "persistentDrawingCache": 16842990, + "alwaysDrawnWithCache": 16842991, + "addStatesFromChildren": 16842992, + "descendantFocusability": 16842993, + "layout": 16842994, + "inflatedId": 16842995, + "layout_width": 16842996, + "layout_height": 16842997, + "layout_margin": 16842998, + "layout_marginLeft": 16842999, + "layout_marginTop": 16843000, + "layout_marginRight": 16843001, + "layout_marginBottom": 16843002, + "listSelector": 16843003, + "drawSelectorOnTop": 16843004, + "stackFromBottom": 16843005, + "scrollingCache": 16843006, + "textFilterEnabled": 16843007, + "transcriptMode": 16843008, + "cacheColorHint": 16843009, + "dial": 16843010, + "hand_hour": 16843011, + "hand_minute": 16843012, + "format": 16843013, + "checked": 16843014, + "button": 16843015, + "checkMark": 16843016, + "foreground": 16843017, + "measureAllChildren": 16843018, + "groupIndicator": 16843019, + "childIndicator": 16843020, + "indicatorLeft": 16843021, + "indicatorRight": 16843022, + "childIndicatorLeft": 16843023, + "childIndicatorRight": 16843024, + "childDivider": 16843025, + "animationDuration": 16843026, + "spacing": 16843027, + "horizontalSpacing": 16843028, + "verticalSpacing": 16843029, + "stretchMode": 16843030, + "columnWidth": 16843031, + "numColumns": 16843032, + "src": 16843033, + "antialias": 16843034, + "filter": 16843035, + "dither": 16843036, + "scaleType": 16843037, + "adjustViewBounds": 16843038, + "maxWidth": 16843039, + "maxHeight": 16843040, + "tint": 16843041, + "baselineAlignBottom": 16843042, + "cropToPadding": 16843043, + "textOn": 16843044, + "textOff": 16843045, + "baselineAligned": 16843046, + "baselineAlignedChildIndex": 16843047, + "weightSum": 16843048, + "divider": 16843049, + "dividerHeight": 16843050, + "choiceMode": 16843051, + "itemTextAppearance": 16843052, + "horizontalDivider": 16843053, + "verticalDivider": 16843054, + "headerBackground": 16843055, + "itemBackground": 16843056, + "itemIconDisabledAlpha": 16843057, + "rowHeight": 16843058, + "maxRows": 16843059, + "maxItemsPerRow": 16843060, + "moreIcon": 16843061, + "max": 16843062, + "progress": 16843063, + "secondaryProgress": 16843064, + "indeterminate": 16843065, + "indeterminateOnly": 16843066, + "indeterminateDrawable": 16843067, + "progressDrawable": 16843068, + "indeterminateDuration": 16843069, + "indeterminateBehavior": 16843070, + "minWidth": 16843071, + "minHeight": 16843072, + "interpolator": 16843073, + "thumb": 16843074, + "thumbOffset": 16843075, + "numStars": 16843076, + "rating": 16843077, + "stepSize": 16843078, + "isIndicator": 16843079, + "checkedButton": 16843080, + "stretchColumns": 16843081, + "shrinkColumns": 16843082, + "collapseColumns": 16843083, + "layout_column": 16843084, + "layout_span": 16843085, + "bufferType": 16843086, + "text": 16843087, + "hint": 16843088, + "textScaleX": 16843089, + "cursorVisible": 16843090, + "maxLines": 16843091, + "lines": 16843092, + "height": 16843093, + "minLines": 16843094, + "maxEms": 16843095, + "ems": 16843096, + "width": 16843097, + "minEms": 16843098, + "scrollHorizontally": 16843099, + "password": 16843100, + "singleLine": 16843101, + "selectAllOnFocus": 16843102, + "includeFontPadding": 16843103, + "maxLength": 16843104, + "shadowColor": 16843105, + "shadowDx": 16843106, + "shadowDy": 16843107, + "shadowRadius": 16843108, + "numeric": 16843109, + "digits": 16843110, + "phoneNumber": 16843111, + "inputMethod": 16843112, + "capitalize": 16843113, + "autoText": 16843114, + "editable": 16843115, + "freezesText": 16843116, + "drawableTop": 16843117, + "drawableBottom": 16843118, + "drawableLeft": 16843119, + "drawableRight": 16843120, + "drawablePadding": 16843121, + "completionHint": 16843122, + "completionHintView": 16843123, + "completionThreshold": 16843124, + "dropDownSelector": 16843125, + "popupBackground": 16843126, + "inAnimation": 16843127, + "outAnimation": 16843128, + "flipInterval": 16843129, + "fillViewport": 16843130, + "prompt": 16843131, + "startYear": 16843132, + "endYear": 16843133, + "mode": 16843134, + "layout_x": 16843135, + "layout_y": 16843136, + "layout_weight": 16843137, + "layout_toLeftOf": 16843138, + "layout_toRightOf": 16843139, + "layout_above": 16843140, + "layout_below": 16843141, + "layout_alignBaseline": 16843142, + "layout_alignLeft": 16843143, + "layout_alignTop": 16843144, + "layout_alignRight": 16843145, + "layout_alignBottom": 16843146, + "layout_alignParentLeft": 16843147, + "layout_alignParentTop": 16843148, + "layout_alignParentRight": 16843149, + "layout_alignParentBottom": 16843150, + "layout_centerInParent": 16843151, + "layout_centerHorizontal": 16843152, + "layout_centerVertical": 16843153, + "layout_alignWithParentIfMissing": 16843154, + "layout_scale": 16843155, + "visible": 16843156, + "variablePadding": 16843157, + "constantSize": 16843158, + "oneshot": 16843159, + "duration": 16843160, + "drawable": 16843161, + "shape": 16843162, + "innerRadiusRatio": 16843163, + "thicknessRatio": 16843164, + "startColor": 16843165, + "endColor": 16843166, + "useLevel": 16843167, + "angle": 16843168, + "type": 16843169, + "centerX": 16843170, + "centerY": 16843171, + "gradientRadius": 16843172, + "color": 16843173, + "dashWidth": 16843174, + "dashGap": 16843175, + "radius": 16843176, + "topLeftRadius": 16843177, + "topRightRadius": 16843178, + "bottomLeftRadius": 16843179, + "bottomRightRadius": 16843180, + "left": 16843181, + "top": 16843182, + "right": 16843183, + "bottom": 16843184, + "minLevel": 16843185, + "maxLevel": 16843186, + "fromDegrees": 16843187, + "toDegrees": 16843188, + "pivotX": 16843189, + "pivotY": 16843190, + "insetLeft": 16843191, + "insetRight": 16843192, + "insetTop": 16843193, + "insetBottom": 16843194, + "shareInterpolator": 16843195, + "fillBefore": 16843196, + "fillAfter": 16843197, + "startOffset": 16843198, + "repeatCount": 16843199, + "repeatMode": 16843200, + "zAdjustment": 16843201, + "fromXScale": 16843202, + "toXScale": 16843203, + "fromYScale": 16843204, + "toYScale": 16843205, + "fromXDelta": 16843206, + "toXDelta": 16843207, + "fromYDelta": 16843208, + "toYDelta": 16843209, + "fromAlpha": 16843210, + "toAlpha": 16843211, + "delay": 16843212, + "animation": 16843213, + "animationOrder": 16843214, + "columnDelay": 16843215, + "rowDelay": 16843216, + "direction": 16843217, + "directionPriority": 16843218, + "factor": 16843219, + "cycles": 16843220, + "searchMode": 16843221, + "searchSuggestAuthority": 16843222, + "searchSuggestPath": 16843223, + "searchSuggestSelection": 16843224, + "searchSuggestIntentAction": 16843225, + "searchSuggestIntentData": 16843226, + "queryActionMsg": 16843227, + "suggestActionMsg": 16843228, + "suggestActionMsgColumn": 16843229, + "menuCategory": 16843230, + "orderInCategory": 16843231, + "checkableBehavior": 16843232, + "title": 16843233, + "titleCondensed": 16843234, + "alphabeticShortcut": 16843235, + "numericShortcut": 16843236, + "checkable": 16843237, + "selectable": 16843238, + "orderingFromXml": 16843239, + "key": 16843240, + "summary": 16843241, + "order": 16843242, + "widgetLayout": 16843243, + "dependency": 16843244, + "defaultValue": 16843245, + "shouldDisableView": 16843246, + "summaryOn": 16843247, + "summaryOff": 16843248, + "disableDependentsState": 16843249, + "dialogTitle": 16843250, + "dialogMessage": 16843251, + "dialogIcon": 16843252, + "positiveButtonText": 16843253, + "negativeButtonText": 16843254, + "dialogLayout": 16843255, + "entryValues": 16843256, + "ringtoneType": 16843257, + "showDefault": 16843258, + "showSilent": 16843259, + "scaleWidth": 16843260, + "scaleHeight": 16843261, + "scaleGravity": 16843262, + "ignoreGravity": 16843263, + "foregroundGravity": 16843264, + "tileMode": 16843265, + "targetActivity": 16843266, + "alwaysRetainTaskState": 16843267, + "allowTaskReparenting": 16843268, + "searchButtonText": 16843269, + "colorForegroundInverse": 16843270, + "textAppearanceButton": 16843271, + "listSeparatorTextViewStyle": 16843272, + "streamType": 16843273, + "clipOrientation": 16843274, + "centerColor": 16843275, + "minSdkVersion": 16843276, + "windowFullscreen": 16843277, + "unselectedAlpha": 16843278, + "progressBarStyleSmallTitle": 16843279, + "ratingBarStyleIndicator": 16843280, + "apiKey": 16843281, + "textColorTertiary": 16843282, + "textColorTertiaryInverse": 16843283, + "listDivider": 16843284, + "soundEffectsEnabled": 16843285, + "keepScreenOn": 16843286, + "lineSpacingExtra": 16843287, + "lineSpacingMultiplier": 16843288, + "listChoiceIndicatorSingle": 16843289, + "listChoiceIndicatorMultiple": 16843290, + "versionCode": 16843291, + "versionName": 16843292, + "marqueeRepeatLimit": 16843293, + "windowNoDisplay": 16843294, + "backgroundDimEnabled": 16843295, + "inputType": 16843296, + "isDefault": 16843297, + "windowDisablePreview": 16843298, + "privateImeOptions": 16843299, + "editorExtras": 16843300, + "settingsActivity": 16843301, + "fastScrollEnabled": 16843302, + "reqTouchScreen": 16843303, + "reqKeyboardType": 16843304, + "reqHardKeyboard": 16843305, + "reqNavigation": 16843306, + "windowSoftInputMode": 16843307, + "imeFullscreenBackground": 16843308, + "noHistory": 16843309, + "headerDividersEnabled": 16843310, + "footerDividersEnabled": 16843311, + "candidatesTextStyleSpans": 16843312, + "smoothScrollbar": 16843313, + "reqFiveWayNav": 16843314, + "keyBackground": 16843315, + "keyTextSize": 16843316, + "labelTextSize": 16843317, + "keyTextColor": 16843318, + "keyPreviewLayout": 16843319, + "keyPreviewOffset": 16843320, + "keyPreviewHeight": 16843321, + "verticalCorrection": 16843322, + "popupLayout": 16843323, + "state_long_pressable": 16843324, + "keyWidth": 16843325, + "keyHeight": 16843326, + "horizontalGap": 16843327, + "verticalGap": 16843328, + "rowEdgeFlags": 16843329, + "codes": 16843330, + "popupKeyboard": 16843331, + "popupCharacters": 16843332, + "keyEdgeFlags": 16843333, + "isModifier": 16843334, + "isSticky": 16843335, + "isRepeatable": 16843336, + "iconPreview": 16843337, + "keyOutputText": 16843338, + "keyLabel": 16843339, + "keyIcon": 16843340, + "keyboardMode": 16843341, + "isScrollContainer": 16843342, + "fillEnabled": 16843343, + "updatePeriodMillis": 16843344, + "initialLayout": 16843345, + "voiceSearchMode": 16843346, + "voiceLanguageModel": 16843347, + "voicePromptText": 16843348, + "voiceLanguage": 16843349, + "voiceMaxResults": 16843350, + "bottomOffset": 16843351, + "topOffset": 16843352, + "allowSingleTap": 16843353, + "handle": 16843354, + "content": 16843355, + "animateOnClick": 16843356, + "configure": 16843357, + "hapticFeedbackEnabled": 16843358, + "innerRadius": 16843359, + "thickness": 16843360, + "sharedUserLabel": 16843361, + "dropDownWidth": 16843362, + "dropDownAnchor": 16843363, + "imeOptions": 16843364, + "imeActionLabel": 16843365, + "imeActionId": 16843366, + "imeExtractEnterAnimation": 16843368, + "imeExtractExitAnimation": 16843369, + "tension": 16843370, + "extraTension": 16843371, + "anyDensity": 16843372, + "searchSuggestThreshold": 16843373, + "includeInGlobalSearch": 16843374, + "onClick": 16843375, + "targetSdkVersion": 16843376, + "maxSdkVersion": 16843377, + "testOnly": 16843378, + "contentDescription": 16843379, + "gestureStrokeWidth": 16843380, + "gestureColor": 16843381, + "uncertainGestureColor": 16843382, + "fadeOffset": 16843383, + "fadeDuration": 16843384, + "gestureStrokeType": 16843385, + "gestureStrokeLengthThreshold": 16843386, + "gestureStrokeSquarenessThreshold": 16843387, + "gestureStrokeAngleThreshold": 16843388, + "eventsInterceptionEnabled": 16843389, + "fadeEnabled": 16843390, + "backupAgent": 16843391, + "allowBackup": 16843392, + "glEsVersion": 16843393, + "queryAfterZeroResults": 16843394, + "dropDownHeight": 16843395, + "smallScreens": 16843396, + "normalScreens": 16843397, + "largeScreens": 16843398, + "progressBarStyleInverse": 16843399, + "progressBarStyleSmallInverse": 16843400, + "progressBarStyleLargeInverse": 16843401, + "searchSettingsDescription": 16843402, + "textColorPrimaryInverseDisableOnly": 16843403, + "autoUrlDetect": 16843404, + "resizeable": 16843405, + "required": 16843406, + "accountType": 16843407, + "contentAuthority": 16843408, + "userVisible": 16843409, + "windowShowWallpaper": 16843410, + "wallpaperOpenEnterAnimation": 16843411, + "wallpaperOpenExitAnimation": 16843412, + "wallpaperCloseEnterAnimation": 16843413, + "wallpaperCloseExitAnimation": 16843414, + "wallpaperIntraOpenEnterAnimation": 16843415, + "wallpaperIntraOpenExitAnimation": 16843416, + "wallpaperIntraCloseEnterAnimation": 16843417, + "wallpaperIntraCloseExitAnimation": 16843418, + "supportsUploading": 16843419, + "killAfterRestore": 16843420, + "restoreNeedsApplication": 16843421, + "smallIcon": 16843422, + "accountPreferences": 16843423, + "textAppearanceSearchResultSubtitle": 16843424, + "textAppearanceSearchResultTitle": 16843425, + "summaryColumn": 16843426, + "detailColumn": 16843427, + "detailSocialSummary": 16843428, + "thumbnail": 16843429, + "detachWallpaper": 16843430, + "finishOnCloseSystemDialogs": 16843431, + "scrollbarFadeDuration": 16843432, + "scrollbarDefaultDelayBeforeFade": 16843433, + "fadeScrollbars": 16843434, + "colorBackgroundCacheHint": 16843435, + "dropDownHorizontalOffset": 16843436, + "dropDownVerticalOffset": 16843437, + "quickContactBadgeStyleWindowSmall": 16843438, + "quickContactBadgeStyleWindowMedium": 16843439, + "quickContactBadgeStyleWindowLarge": 16843440, + "quickContactBadgeStyleSmallWindowSmall": 16843441, + "quickContactBadgeStyleSmallWindowMedium": 16843442, + "quickContactBadgeStyleSmallWindowLarge": 16843443, + "author": 16843444, + "autoStart": 16843445, + "expandableListViewWhiteStyle": 16843446, + "installLocation": 16843447, + "vmSafeMode": 16843448, + "webTextViewStyle": 16843449, + "restoreAnyVersion": 16843450, + "tabStripLeft": 16843451, + "tabStripRight": 16843452, + "tabStripEnabled": 16843453, + "logo": 16843454, + "xlargeScreens": 16843455, + "immersive": 16843456, + "overScrollMode": 16843457, + "overScrollHeader": 16843458, + "overScrollFooter": 16843459, + "filterTouchesWhenObscured": 16843460, + "textSelectHandleLeft": 16843461, + "textSelectHandleRight": 16843462, + "textSelectHandle": 16843463, + "textSelectHandleWindowStyle": 16843464, + "popupAnimationStyle": 16843465, + "screenSize": 16843466, + "screenDensity": 16843467, + "allContactsName": 16843468, + "windowActionBar": 16843469, + "actionBarStyle": 16843470, + "navigationMode": 16843471, + "displayOptions": 16843472, + "subtitle": 16843473, + "customNavigationLayout": 16843474, + "hardwareAccelerated": 16843475, + "measureWithLargestChild": 16843476, + "animateFirstView": 16843477, + "dropDownSpinnerStyle": 16843478, + "actionDropDownStyle": 16843479, + "actionButtonStyle": 16843480, + "showAsAction": 16843481, + "previewImage": 16843482, + "actionModeBackground": 16843483, + "actionModeCloseDrawable": 16843484, + "windowActionModeOverlay": 16843485, + "valueFrom": 16843486, + "valueTo": 16843487, + "valueType": 16843488, + "propertyName": 16843489, + "ordering": 16843490, + "fragment": 16843491, + "windowActionBarOverlay": 16843492, + "fragmentOpenEnterAnimation": 16843493, + "fragmentOpenExitAnimation": 16843494, + "fragmentCloseEnterAnimation": 16843495, + "fragmentCloseExitAnimation": 16843496, + "fragmentFadeEnterAnimation": 16843497, + "fragmentFadeExitAnimation": 16843498, + "actionBarSize": 16843499, + "imeSubtypeLocale": 16843500, + "imeSubtypeMode": 16843501, + "imeSubtypeExtraValue": 16843502, + "splitMotionEvents": 16843503, + "listChoiceBackgroundIndicator": 16843504, + "spinnerMode": 16843505, + "animateLayoutChanges": 16843506, + "actionBarTabStyle": 16843507, + "actionBarTabBarStyle": 16843508, + "actionBarTabTextStyle": 16843509, + "actionOverflowButtonStyle": 16843510, + "actionModeCloseButtonStyle": 16843511, + "titleTextStyle": 16843512, + "subtitleTextStyle": 16843513, + "iconifiedByDefault": 16843514, + "actionLayout": 16843515, + "actionViewClass": 16843516, + "activatedBackgroundIndicator": 16843517, + "state_activated": 16843518, + "listPopupWindowStyle": 16843519, + "popupMenuStyle": 16843520, + "textAppearanceLargePopupMenu": 16843521, + "textAppearanceSmallPopupMenu": 16843522, + "breadCrumbTitle": 16843523, + "breadCrumbShortTitle": 16843524, + "listDividerAlertDialog": 16843525, + "textColorAlertDialogListItem": 16843526, + "loopViews": 16843527, + "dialogTheme": 16843528, + "alertDialogTheme": 16843529, + "dividerVertical": 16843530, + "homeAsUpIndicator": 16843531, + "enterFadeDuration": 16843532, + "exitFadeDuration": 16843533, + "selectableItemBackground": 16843534, + "autoAdvanceViewId": 16843535, + "useIntrinsicSizeAsMinimum": 16843536, + "actionModeCutDrawable": 16843537, + "actionModeCopyDrawable": 16843538, + "actionModePasteDrawable": 16843539, + "textEditPasteWindowLayout": 16843540, + "textEditNoPasteWindowLayout": 16843541, + "textIsSelectable": 16843542, + "windowEnableSplitTouch": 16843543, + "indeterminateProgressStyle": 16843544, + "progressBarPadding": 16843545, + "animationResolution": 16843546, + "state_accelerated": 16843547, + "baseline": 16843548, + "homeLayout": 16843549, + "opacity": 16843550, + "alpha": 16843551, + "transformPivotX": 16843552, + "transformPivotY": 16843553, + "translationX": 16843554, + "translationY": 16843555, + "scaleX": 16843556, + "scaleY": 16843557, + "rotation": 16843558, + "rotationX": 16843559, + "rotationY": 16843560, + "showDividers": 16843561, + "dividerPadding": 16843562, + "borderlessButtonStyle": 16843563, + "dividerHorizontal": 16843564, + "itemPadding": 16843565, + "buttonBarStyle": 16843566, + "buttonBarButtonStyle": 16843567, + "segmentedButtonStyle": 16843568, + "staticWallpaperPreview": 16843569, + "allowParallelSyncs": 16843570, + "isAlwaysSyncable": 16843571, + "verticalScrollbarPosition": 16843572, + "fastScrollAlwaysVisible": 16843573, + "fastScrollThumbDrawable": 16843574, + "fastScrollPreviewBackgroundLeft": 16843575, + "fastScrollPreviewBackgroundRight": 16843576, + "fastScrollTrackDrawable": 16843577, + "fastScrollOverlayPosition": 16843578, + "customTokens": 16843579, + "nextFocusForward": 16843580, + "firstDayOfWeek": 16843581, + "showWeekNumber": 16843582, + "minDate": 16843583, + "maxDate": 16843584, + "shownWeekCount": 16843585, + "selectedWeekBackgroundColor": 16843586, + "focusedMonthDateColor": 16843587, + "unfocusedMonthDateColor": 16843588, + "weekNumberColor": 16843589, + "weekSeparatorLineColor": 16843590, + "selectedDateVerticalBar": 16843591, + "weekDayTextAppearance": 16843592, + "dateTextAppearance": 16843593, + "solidColor": 16843594, + "spinnersShown": 16843595, + "calendarViewShown": 16843596, + "state_multiline": 16843597, + "detailsElementBackground": 16843598, + "textColorHighlightInverse": 16843599, + "textColorLinkInverse": 16843600, + "editTextColor": 16843601, + "editTextBackground": 16843602, + "horizontalScrollViewStyle": 16843603, + "layerType": 16843604, + "alertDialogIcon": 16843605, + "windowMinWidthMajor": 16843606, + "windowMinWidthMinor": 16843607, + "queryHint": 16843608, + "fastScrollTextColor": 16843609, + "largeHeap": 16843610, + "windowCloseOnTouchOutside": 16843611, + "datePickerStyle": 16843612, + "calendarViewStyle": 16843613, + "textEditSidePasteWindowLayout": 16843614, + "textEditSideNoPasteWindowLayout": 16843615, + "actionMenuTextAppearance": 16843616, + "actionMenuTextColor": 16843617, + "textCursorDrawable": 16843618, + "resizeMode": 16843619, + "requiresSmallestWidthDp": 16843620, + "compatibleWidthLimitDp": 16843621, + "largestWidthLimitDp": 16843622, + "state_hovered": 16843623, + "state_drag_can_accept": 16843624, + "state_drag_hovered": 16843625, + "stopWithTask": 16843626, + "switchTextOn": 16843627, + "switchTextOff": 16843628, + "switchPreferenceStyle": 16843629, + "switchTextAppearance": 16843630, + "track": 16843631, + "switchMinWidth": 16843632, + "switchPadding": 16843633, + "thumbTextPadding": 16843634, + "textSuggestionsWindowStyle": 16843635, + "textEditSuggestionItemLayout": 16843636, + "rowCount": 16843637, + "rowOrderPreserved": 16843638, + "columnCount": 16843639, + "columnOrderPreserved": 16843640, + "useDefaultMargins": 16843641, + "alignmentMode": 16843642, + "layout_row": 16843643, + "layout_rowSpan": 16843644, + "layout_columnSpan": 16843645, + "actionModeSelectAllDrawable": 16843646, + "isAuxiliary": 16843647, + "accessibilityEventTypes": 16843648, + "packageNames": 16843649, + "accessibilityFeedbackType": 16843650, + "notificationTimeout": 16843651, + "accessibilityFlags": 16843652, + "canRetrieveWindowContent": 16843653, + "listPreferredItemHeightLarge": 16843654, + "listPreferredItemHeightSmall": 16843655, + "actionBarSplitStyle": 16843656, + "actionProviderClass": 16843657, + "backgroundStacked": 16843658, + "backgroundSplit": 16843659, + "textAllCaps": 16843660, + "colorPressedHighlight": 16843661, + "colorLongPressedHighlight": 16843662, + "colorFocusedHighlight": 16843663, + "colorActivatedHighlight": 16843664, + "colorMultiSelectHighlight": 16843665, + "drawableStart": 16843666, + "drawableEnd": 16843667, + "actionModeStyle": 16843668, + "minResizeWidth": 16843669, + "minResizeHeight": 16843670, + "actionBarWidgetTheme": 16843671, + "uiOptions": 16843672, + "subtypeLocale": 16843673, + "subtypeExtraValue": 16843674, + "actionBarDivider": 16843675, + "actionBarItemBackground": 16843676, + "actionModeSplitBackground": 16843677, + "textAppearanceListItem": 16843678, + "textAppearanceListItemSmall": 16843679, + "targetDescriptions": 16843680, + "directionDescriptions": 16843681, + "overridesImplicitlyEnabledSubtype": 16843682, + "listPreferredItemPaddingLeft": 16843683, + "listPreferredItemPaddingRight": 16843684, + "requiresFadingEdge": 16843685, + "publicKey": 16843686, + "parentActivityName": 16843687, + "isolatedProcess": 16843689, + "importantForAccessibility": 16843690, + "keyboardLayout": 16843691, + "fontFamily": 16843692, + "mediaRouteButtonStyle": 16843693, + "mediaRouteTypes": 16843694, + "supportsRtl": 16843695, + "textDirection": 16843696, + "textAlignment": 16843697, + "layoutDirection": 16843698, + "paddingStart": 16843699, + "paddingEnd": 16843700, + "layout_marginStart": 16843701, + "layout_marginEnd": 16843702, + "layout_toStartOf": 16843703, + "layout_toEndOf": 16843704, + "layout_alignStart": 16843705, + "layout_alignEnd": 16843706, + "layout_alignParentStart": 16843707, + "layout_alignParentEnd": 16843708, + "listPreferredItemPaddingStart": 16843709, + "listPreferredItemPaddingEnd": 16843710, + "singleUser": 16843711, + "presentationTheme": 16843712, + "subtypeId": 16843713, + "initialKeyguardLayout": 16843714, + "widgetCategory": 16843716, + "permissionGroupFlags": 16843717, + "labelFor": 16843718, + "permissionFlags": 16843719, + "checkedTextViewStyle": 16843720, + "showOnLockScreen": 16843721, + "format12Hour": 16843722, + "format24Hour": 16843723, + "timeZone": 16843724, + "mipMap": 16843725, + "mirrorForRtl": 16843726, + "windowOverscan": 16843727, + "requiredForAllUsers": 16843728, + "indicatorStart": 16843729, + "indicatorEnd": 16843730, + "childIndicatorStart": 16843731, + "childIndicatorEnd": 16843732, + "restrictedAccountType": 16843733, + "requiredAccountType": 16843734, + "canRequestTouchExplorationMode": 16843735, + "canRequestEnhancedWebAccessibility": 16843736, + "canRequestFilterKeyEvents": 16843737, + "layoutMode": 16843738, + "keySet": 16843739, + "targetId": 16843740, + "fromScene": 16843741, + "toScene": 16843742, + "transition": 16843743, + "transitionOrdering": 16843744, + "fadingMode": 16843745, + "startDelay": 16843746, + "ssp": 16843747, + "sspPrefix": 16843748, + "sspPattern": 16843749, + "addPrintersActivity": 16843750, + "vendor": 16843751, + "category": 16843752, + "isAsciiCapable": 16843753, + "autoMirrored": 16843754, + "supportsSwitchingToNextInputMethod": 16843755, + "requireDeviceUnlock": 16843756, + "apduServiceBanner": 16843757, + "accessibilityLiveRegion": 16843758, + "windowTranslucentStatus": 16843759, + "windowTranslucentNavigation": 16843760, + "advancedPrintOptionsActivity": 16843761, + "banner": 16843762, + "windowSwipeToDismiss": 16843763, + "isGame": 16843764, + "allowEmbedded": 16843765, + "setupActivity": 16843766, + "fastScrollStyle": 16843767, + "windowContentTransitions": 16843768, + "windowContentTransitionManager": 16843769, + "translationZ": 16843770, + "tintMode": 16843771, + "controlX1": 16843772, + "controlY1": 16843773, + "controlX2": 16843774, + "controlY2": 16843775, + "transitionName": 16843776, + "transitionGroup": 16843777, + "viewportWidth": 16843778, + "viewportHeight": 16843779, + "fillColor": 16843780, + "pathData": 16843781, + "strokeColor": 16843782, + "strokeWidth": 16843783, + "trimPathStart": 16843784, + "trimPathEnd": 16843785, + "trimPathOffset": 16843786, + "strokeLineCap": 16843787, + "strokeLineJoin": 16843788, + "strokeMiterLimit": 16843789, + "colorControlNormal": 16843817, + "colorControlActivated": 16843818, + "colorButtonNormal": 16843819, + "colorControlHighlight": 16843820, + "persistableMode": 16843821, + "titleTextAppearance": 16843822, + "subtitleTextAppearance": 16843823, + "slideEdge": 16843824, + "actionBarTheme": 16843825, + "textAppearanceListItemSecondary": 16843826, + "colorPrimary": 16843827, + "colorPrimaryDark": 16843828, + "colorAccent": 16843829, + "nestedScrollingEnabled": 16843830, + "windowEnterTransition": 16843831, + "windowExitTransition": 16843832, + "windowSharedElementEnterTransition": 16843833, + "windowSharedElementExitTransition": 16843834, + "windowAllowReturnTransitionOverlap": 16843835, + "windowAllowEnterTransitionOverlap": 16843836, + "sessionService": 16843837, + "stackViewStyle": 16843838, + "switchStyle": 16843839, + "elevation": 16843840, + "excludeId": 16843841, + "excludeClass": 16843842, + "hideOnContentScroll": 16843843, + "actionOverflowMenuStyle": 16843844, + "documentLaunchMode": 16843845, + "maxRecents": 16843846, + "autoRemoveFromRecents": 16843847, + "stateListAnimator": 16843848, + "toId": 16843849, + "fromId": 16843850, + "reversible": 16843851, + "splitTrack": 16843852, + "targetName": 16843853, + "excludeName": 16843854, + "matchOrder": 16843855, + "windowDrawsSystemBarBackgrounds": 16843856, + "statusBarColor": 16843857, + "navigationBarColor": 16843858, + "contentInsetStart": 16843859, + "contentInsetEnd": 16843860, + "contentInsetLeft": 16843861, + "contentInsetRight": 16843862, + "paddingMode": 16843863, + "layout_rowWeight": 16843864, + "layout_columnWeight": 16843865, + "translateX": 16843866, + "translateY": 16843867, + "selectableItemBackgroundBorderless": 16843868, + "elegantTextHeight": 16843869, + "searchKeyphraseId": 16843870, + "searchKeyphrase": 16843871, + "searchKeyphraseSupportedLocales": 16843872, + "windowTransitionBackgroundFadeDuration": 16843873, + "overlapAnchor": 16843874, + "progressTint": 16843875, + "progressTintMode": 16843876, + "progressBackgroundTint": 16843877, + "progressBackgroundTintMode": 16843878, + "secondaryProgressTint": 16843879, + "secondaryProgressTintMode": 16843880, + "indeterminateTint": 16843881, + "indeterminateTintMode": 16843882, + "backgroundTint": 16843883, + "backgroundTintMode": 16843884, + "foregroundTint": 16843885, + "foregroundTintMode": 16843886, + "buttonTint": 16843887, + "buttonTintMode": 16843888, + "thumbTint": 16843889, + "thumbTintMode": 16843890, + "fullBackupOnly": 16843891, + "propertyXName": 16843892, + "propertyYName": 16843893, + "relinquishTaskIdentity": 16843894, + "tileModeX": 16843895, + "tileModeY": 16843896, + "actionModeShareDrawable": 16843897, + "actionModeFindDrawable": 16843898, + "actionModeWebSearchDrawable": 16843899, + "transitionVisibilityMode": 16843900, + "minimumHorizontalAngle": 16843901, + "minimumVerticalAngle": 16843902, + "maximumAngle": 16843903, + "searchViewStyle": 16843904, + "closeIcon": 16843905, + "goIcon": 16843906, + "searchIcon": 16843907, + "voiceIcon": 16843908, + "commitIcon": 16843909, + "suggestionRowLayout": 16843910, + "queryBackground": 16843911, + "submitBackground": 16843912, + "buttonBarPositiveButtonStyle": 16843913, + "buttonBarNeutralButtonStyle": 16843914, + "buttonBarNegativeButtonStyle": 16843915, + "popupElevation": 16843916, + "actionBarPopupTheme": 16843917, + "multiArch": 16843918, + "touchscreenBlocksFocus": 16843919, + "windowElevation": 16843920, + "launchTaskBehindTargetAnimation": 16843921, + "launchTaskBehindSourceAnimation": 16843922, + "restrictionType": 16843923, + "dayOfWeekBackground": 16843924, + "dayOfWeekTextAppearance": 16843925, + "headerMonthTextAppearance": 16843926, + "headerDayOfMonthTextAppearance": 16843927, + "headerYearTextAppearance": 16843928, + "yearListItemTextAppearance": 16843929, + "yearListSelectorColor": 16843930, + "calendarTextColor": 16843931, + "recognitionService": 16843932, + "timePickerStyle": 16843933, + "timePickerDialogTheme": 16843934, + "headerTimeTextAppearance": 16843935, + "headerAmPmTextAppearance": 16843936, + "numbersTextColor": 16843937, + "numbersBackgroundColor": 16843938, + "numbersSelectorColor": 16843939, + "amPmTextColor": 16843940, + "amPmBackgroundColor": 16843941, + "searchKeyphraseRecognitionFlags": 16843942, + "checkMarkTint": 16843943, + "checkMarkTintMode": 16843944, + "popupTheme": 16843945, + "toolbarStyle": 16843946, + "windowClipToOutline": 16843947, + "datePickerDialogTheme": 16843948, + "showText": 16843949, + "windowReturnTransition": 16843950, + "windowReenterTransition": 16843951, + "windowSharedElementReturnTransition": 16843952, + "windowSharedElementReenterTransition": 16843953, + "resumeWhilePausing": 16843954, + "datePickerMode": 16843955, + "timePickerMode": 16843956, + "inset": 16843957, + "letterSpacing": 16843958, + "fontFeatureSettings": 16843959, + "outlineProvider": 16843960, + "contentAgeHint": 16843961, + "country": 16843962, + "windowSharedElementsUseOverlay": 16843963, + "reparent": 16843964, + "reparentWithOverlay": 16843965, + "ambientShadowAlpha": 16843966, + "spotShadowAlpha": 16843967, + "navigationIcon": 16843968, + "navigationContentDescription": 16843969, + "fragmentExitTransition": 16843970, + "fragmentEnterTransition": 16843971, + "fragmentSharedElementEnterTransition": 16843972, + "fragmentReturnTransition": 16843973, + "fragmentSharedElementReturnTransition": 16843974, + "fragmentReenterTransition": 16843975, + "fragmentAllowEnterTransitionOverlap": 16843976, + "fragmentAllowReturnTransitionOverlap": 16843977, + "patternPathData": 16843978, + "strokeAlpha": 16843979, + "fillAlpha": 16843980, + "windowActivityTransitions": 16843981, + "colorEdgeEffect": 16843982, + "resizeClip": 16843983, + "collapseContentDescription": 16843984, + "accessibilityTraversalBefore": 16843985, + "accessibilityTraversalAfter": 16843986, + "dialogPreferredPadding": 16843987, + "searchHintIcon": 16843988, + "revisionCode": 16843989, + "drawableTint": 16843990, + "drawableTintMode": 16843991, + "fraction": 16843992, + "trackTint": 16843993, + "trackTintMode": 16843994, + "start": 16843995, + "end": 16843996, + "breakStrategy": 16843997, + "hyphenationFrequency": 16843998, + "allowUndo": 16843999, + "windowLightStatusBar": 16844000, + "numbersInnerTextColor": 16844001, + "colorBackgroundFloating": 16844002, + "titleTextColor": 16844003, + "subtitleTextColor": 16844004, + "thumbPosition": 16844005, + "scrollIndicators": 16844006, + "contextClickable": 16844007, + "fingerprintAuthDrawable": 16844008, + "logoDescription": 16844009, + "extractNativeLibs": 16844010, + "fullBackupContent": 16844011, + "usesCleartextTraffic": 16844012, + "lockTaskMode": 16844013, + "autoVerify": 16844014, + "showForAllUsers": 16844015, + "supportsAssist": 16844016, + "supportsLaunchVoiceAssistFromKeyguard": 16844017, + "listMenuViewStyle": 16844018, + "subMenuArrow": 16844019, + "defaultWidth": 16844020, + "defaultHeight": 16844021, + "resizeableActivity": 16844022, + "supportsPictureInPicture": 16844023, + "titleMargin": 16844024, + "titleMarginStart": 16844025, + "titleMarginEnd": 16844026, + "titleMarginTop": 16844027, + "titleMarginBottom": 16844028, + "maxButtonHeight": 16844029, + "buttonGravity": 16844030, + "collapseIcon": 16844031, + "level": 16844032, + "contextPopupMenuStyle": 16844033, + "textAppearancePopupMenuHeader": 16844034, + "windowBackgroundFallback": 16844035, + "defaultToDeviceProtectedStorage": 16844036, + "directBootAware": 16844037, + "preferenceFragmentStyle": 16844038, + "canControlMagnification": 16844039, + "languageTag": 16844040, + "pointerIcon": 16844041, + "tickMark": 16844042, + "tickMarkTint": 16844043, + "tickMarkTintMode": 16844044, + "canPerformGestures": 16844045, + "externalService": 16844046, + "supportsLocalInteraction": 16844047, + "startX": 16844048, + "startY": 16844049, + "endX": 16844050, + "endY": 16844051, + "offset": 16844052, + "use32bitAbi": 16844053, + "bitmap": 16844054, + "hotSpotX": 16844055, + "hotSpotY": 16844056, + "version": 16844057, + "backupInForeground": 16844058, + "countDown": 16844059, + "canRecord": 16844060, + "tunerCount": 16844061, + "fillType": 16844062, + "popupEnterTransition": 16844063, + "popupExitTransition": 16844064, + "forceHasOverlappingRendering": 16844065, + "contentInsetStartWithNavigation": 16844066, + "contentInsetEndWithActions": 16844067, + "numberPickerStyle": 16844068, + "enableVrMode": 16844069, + "hash": 16844070, + "networkSecurityConfig": 16844071, + "shortcutId": 16844072, + "shortcutShortLabel": 16844073, + "shortcutLongLabel": 16844074, + "shortcutDisabledMessage": 16844075, + "roundIcon": 16844076, + "contextUri": 16844077, + "contextDescription": 16844078, + "showMetadataInPreview": 16844079, + "colorSecondary": 16844080, + "visibleToInstantApps": 16844081, + "font": 16844082, + "fontWeight": 16844083, + "tooltipText": 16844084, + "autoSizeTextType": 16844085, + "autoSizeStepGranularity": 16844086, + "autoSizePresetSizes": 16844087, + "autoSizeMinTextSize": 16844088, + "min": 16844089, + "rotationAnimation": 16844090, + "layout_marginHorizontal": 16844091, + "layout_marginVertical": 16844092, + "paddingHorizontal": 16844093, + "paddingVertical": 16844094, + "fontStyle": 16844095, + "keyboardNavigationCluster": 16844096, + "targetProcesses": 16844097, + "nextClusterForward": 16844098, + "colorError": 16844099, + "focusedByDefault": 16844100, + "appCategory": 16844101, + "autoSizeMaxTextSize": 16844102, + "recreateOnConfigChanges": 16844103, + "certDigest": 16844104, + "splitName": 16844105, + "colorMode": 16844106, + "isolatedSplits": 16844107, + "targetSandboxVersion": 16844108, + "canRequestFingerprintGestures": 16844109, + "alphabeticModifiers": 16844110, + "numericModifiers": 16844111, + "fontProviderAuthority": 16844112, + "fontProviderQuery": 16844113, + "primaryContentAlpha": 16844114, + "secondaryContentAlpha": 16844115, + "requiredFeature": 16844116, + "requiredNotFeature": 16844117, + "autofillHints": 16844118, + "fontProviderPackage": 16844119, + "importantForAutofill": 16844120, + "recycleEnabled": 16844121, + "isStatic": 16844122, + "isFeatureSplit": 16844123, + "singleLineTitle": 16844124, + "fontProviderCerts": 16844125, + "iconTint": 16844126, + "iconTintMode": 16844127, + "maxAspectRatio": 16844128, + "iconSpaceReserved": 16844129, + "defaultFocusHighlightEnabled": 16844130, + "persistentWhenFeatureAvailable": 16844131, + "windowSplashscreenContent": 16844132, + "requiredSystemPropertyName": 16844133, + "requiredSystemPropertyValue": 16844134, + "justificationMode": 16844135, + "autofilledHighlight": 16844136, + "showWhenLocked": 16844137, + "turnScreenOn": 16844138, + "classLoader": 16844139, + "windowLightNavigationBar": 16844140, + "navigationBarDividerColor": 16844141 + }, + "id": { + "background": 16908288, + "checkbox": 16908289, + "content": 16908290, + "edit": 16908291, + "empty": 16908292, + "hint": 16908293, + "icon": 16908294, + "icon1": 16908295, + "icon2": 16908296, + "input": 16908297, + "list": 16908298, + "message": 16908299, + "primary": 16908300, + "progress": 16908301, + "selectedIcon": 16908302, + "secondaryProgress": 16908303, + "summary": 16908304, + "tabcontent": 16908305, + "tabhost": 16908306, + "tabs": 16908307, + "text1": 16908308, + "text2": 16908309, + "title": 16908310, + "toggle": 16908311, + "widget_frame": 16908312, + "button1": 16908313, + "button2": 16908314, + "button3": 16908315, + "extractArea": 16908316, + "candidatesArea": 16908317, + "inputArea": 16908318, + "selectAll": 16908319, + "cut": 16908320, + "copy": 16908321, + "paste": 16908322, + "copyUrl": 16908323, + "switchInputMethod": 16908324, + "inputExtractEditText": 16908325, + "keyboardView": 16908326, + "closeButton": 16908327, + "startSelectingText": 16908328, + "stopSelectingText": 16908329, + "addToDictionary": 16908330, + "custom": 16908331, + "home": 16908332, + "selectTextMode": 16908333, + "mask": 16908334, + "statusBarBackground": 16908335, + "navigationBarBackground": 16908336, + "pasteAsPlainText": 16908337, + "undo": 16908338, + "redo": 16908339, + "replaceText": 16908340, + "shareText": 16908341, + "accessibilityActionShowOnScreen": 16908342, + "accessibilityActionScrollToPosition": 16908343, + "accessibilityActionScrollUp": 16908344, + "accessibilityActionScrollLeft": 16908345, + "accessibilityActionScrollDown": 16908346, + "accessibilityActionScrollRight": 16908347, + "accessibilityActionContextClick": 16908348, + "accessibilityActionSetProgress": 16908349, + "icon_frame": 16908350, + "list_container": 16908351, + "switch_widget": 16908352, + "textAssist": 16908353, + "accessibilityActionMoveWindow": 16908354, + "autofill": 16908355 + }, + "style": { + "Animation": 16973824, + "Animation.Activity": 16973825, + "Animation.Dialog": 16973826, + "Animation.Translucent": 16973827, + "Animation.Toast": 16973828, + "Theme": 16973829, + "Theme.NoTitleBar": 16973830, + "Theme.NoTitleBar.Fullscreen": 16973831, + "Theme.Black": 16973832, + "Theme.Black.NoTitleBar": 16973833, + "Theme.Black.NoTitleBar.Fullscreen": 16973834, + "Theme.Dialog": 16973835, + "Theme.Light": 16973836, + "Theme.Light.NoTitleBar": 16973837, + "Theme.Light.NoTitleBar.Fullscreen": 16973838, + "Theme.Translucent": 16973839, + "Theme.Translucent.NoTitleBar": 16973840, + "Theme.Translucent.NoTitleBar.Fullscreen": 16973841, + "Widget": 16973842, + "Widget.AbsListView": 16973843, + "Widget.Button": 16973844, + "Widget.Button.Inset": 16973845, + "Widget.Button.Small": 16973846, + "Widget.Button.Toggle": 16973847, + "Widget.CompoundButton": 16973848, + "Widget.CompoundButton.CheckBox": 16973849, + "Widget.CompoundButton.RadioButton": 16973850, + "Widget.CompoundButton.Star": 16973851, + "Widget.ProgressBar": 16973852, + "Widget.ProgressBar.Large": 16973853, + "Widget.ProgressBar.Small": 16973854, + "Widget.ProgressBar.Horizontal": 16973855, + "Widget.SeekBar": 16973856, + "Widget.RatingBar": 16973857, + "Widget.TextView": 16973858, + "Widget.EditText": 16973859, + "Widget.ExpandableListView": 16973860, + "Widget.ImageWell": 16973861, + "Widget.ImageButton": 16973862, + "Widget.AutoCompleteTextView": 16973863, + "Widget.Spinner": 16973864, + "Widget.TextView.PopupMenu": 16973865, + "Widget.TextView.SpinnerItem": 16973866, + "Widget.DropDownItem": 16973867, + "Widget.DropDownItem.Spinner": 16973868, + "Widget.ScrollView": 16973869, + "Widget.ListView": 16973870, + "Widget.ListView.White": 16973871, + "Widget.ListView.DropDown": 16973872, + "Widget.ListView.Menu": 16973873, + "Widget.GridView": 16973874, + "Widget.WebView": 16973875, + "Widget.TabWidget": 16973876, + "Widget.Gallery": 16973877, + "Widget.PopupWindow": 16973878, + "MediaButton": 16973879, + "MediaButton.Previous": 16973880, + "MediaButton.Next": 16973881, + "MediaButton.Play": 16973882, + "MediaButton.Ffwd": 16973883, + "MediaButton.Rew": 16973884, + "MediaButton.Pause": 16973885, + "TextAppearance": 16973886, + "TextAppearance.Inverse": 16973887, + "TextAppearance.Theme": 16973888, + "TextAppearance.DialogWindowTitle": 16973889, + "TextAppearance.Large": 16973890, + "TextAppearance.Large.Inverse": 16973891, + "TextAppearance.Medium": 16973892, + "TextAppearance.Medium.Inverse": 16973893, + "TextAppearance.Small": 16973894, + "TextAppearance.Small.Inverse": 16973895, + "TextAppearance.Theme.Dialog": 16973896, + "TextAppearance.Widget": 16973897, + "TextAppearance.Widget.Button": 16973898, + "TextAppearance.Widget.IconMenu.Item": 16973899, + "TextAppearance.Widget.EditText": 16973900, + "TextAppearance.Widget.TabWidget": 16973901, + "TextAppearance.Widget.TextView": 16973902, + "TextAppearance.Widget.TextView.PopupMenu": 16973903, + "TextAppearance.Widget.DropDownHint": 16973904, + "TextAppearance.Widget.DropDownItem": 16973905, + "TextAppearance.Widget.TextView.SpinnerItem": 16973906, + "TextAppearance.WindowTitle": 16973907, + "Theme.InputMethod": 16973908, + "Theme.NoDisplay": 16973909, + "Animation.InputMethod": 16973910, + "Widget.KeyboardView": 16973911, + "ButtonBar": 16973912, + "Theme.Panel": 16973913, + "Theme.Light.Panel": 16973914, + "Widget.ProgressBar.Inverse": 16973915, + "Widget.ProgressBar.Large.Inverse": 16973916, + "Widget.ProgressBar.Small.Inverse": 16973917, + "Theme.Wallpaper": 16973918, + "Theme.Wallpaper.NoTitleBar": 16973919, + "Theme.Wallpaper.NoTitleBar.Fullscreen": 16973920, + "Theme.WallpaperSettings": 16973921, + "Theme.Light.WallpaperSettings": 16973922, + "TextAppearance.SearchResult.Title": 16973923, + "TextAppearance.SearchResult.Subtitle": 16973924, + "TextAppearance.StatusBar.Title": 16973925, + "TextAppearance.StatusBar.Icon": 16973926, + "TextAppearance.StatusBar.EventContent": 16973927, + "TextAppearance.StatusBar.EventContent.Title": 16973928, + "Theme.WithActionBar": 16973929, + "Theme.NoTitleBar.OverlayActionModes": 16973930, + "Theme.Holo": 16973931, + "Theme.Holo.NoActionBar": 16973932, + "Theme.Holo.NoActionBar.Fullscreen": 16973933, + "Theme.Holo.Light": 16973934, + "Theme.Holo.Dialog": 16973935, + "Theme.Holo.Dialog.MinWidth": 16973936, + "Theme.Holo.Dialog.NoActionBar": 16973937, + "Theme.Holo.Dialog.NoActionBar.MinWidth": 16973938, + "Theme.Holo.Light.Dialog": 16973939, + "Theme.Holo.Light.Dialog.MinWidth": 16973940, + "Theme.Holo.Light.Dialog.NoActionBar": 16973941, + "Theme.Holo.Light.Dialog.NoActionBar.MinWidth": 16973942, + "Theme.Holo.DialogWhenLarge": 16973943, + "Theme.Holo.DialogWhenLarge.NoActionBar": 16973944, + "Theme.Holo.Light.DialogWhenLarge": 16973945, + "Theme.Holo.Light.DialogWhenLarge.NoActionBar": 16973946, + "Theme.Holo.Panel": 16973947, + "Theme.Holo.Light.Panel": 16973948, + "Theme.Holo.Wallpaper": 16973949, + "Theme.Holo.Wallpaper.NoTitleBar": 16973950, + "Theme.Holo.InputMethod": 16973951, + "TextAppearance.Widget.PopupMenu.Large": 16973952, + "TextAppearance.Widget.PopupMenu.Small": 16973953, + "Widget.ActionBar": 16973954, + "Widget.Spinner.DropDown": 16973955, + "Widget.ActionButton": 16973956, + "Widget.ListPopupWindow": 16973957, + "Widget.PopupMenu": 16973958, + "Widget.ActionButton.Overflow": 16973959, + "Widget.ActionButton.CloseMode": 16973960, + "Widget.FragmentBreadCrumbs": 16973961, + "Widget.Holo": 16973962, + "Widget.Holo.Button": 16973963, + "Widget.Holo.Button.Small": 16973964, + "Widget.Holo.Button.Inset": 16973965, + "Widget.Holo.Button.Toggle": 16973966, + "Widget.Holo.TextView": 16973967, + "Widget.Holo.AutoCompleteTextView": 16973968, + "Widget.Holo.CompoundButton.CheckBox": 16973969, + "Widget.Holo.ListView.DropDown": 16973970, + "Widget.Holo.EditText": 16973971, + "Widget.Holo.ExpandableListView": 16973972, + "Widget.Holo.GridView": 16973973, + "Widget.Holo.ImageButton": 16973974, + "Widget.Holo.ListView": 16973975, + "Widget.Holo.PopupWindow": 16973976, + "Widget.Holo.ProgressBar": 16973977, + "Widget.Holo.ProgressBar.Horizontal": 16973978, + "Widget.Holo.ProgressBar.Small": 16973979, + "Widget.Holo.ProgressBar.Small.Title": 16973980, + "Widget.Holo.ProgressBar.Large": 16973981, + "Widget.Holo.SeekBar": 16973982, + "Widget.Holo.RatingBar": 16973983, + "Widget.Holo.RatingBar.Indicator": 16973984, + "Widget.Holo.RatingBar.Small": 16973985, + "Widget.Holo.CompoundButton.RadioButton": 16973986, + "Widget.Holo.ScrollView": 16973987, + "Widget.Holo.HorizontalScrollView": 16973988, + "Widget.Holo.Spinner": 16973989, + "Widget.Holo.CompoundButton.Star": 16973990, + "Widget.Holo.TabWidget": 16973991, + "Widget.Holo.WebTextView": 16973992, + "Widget.Holo.WebView": 16973993, + "Widget.Holo.DropDownItem": 16973994, + "Widget.Holo.DropDownItem.Spinner": 16973995, + "Widget.Holo.TextView.SpinnerItem": 16973996, + "Widget.Holo.ListPopupWindow": 16973997, + "Widget.Holo.PopupMenu": 16973998, + "Widget.Holo.ActionButton": 16973999, + "Widget.Holo.ActionButton.Overflow": 16974000, + "Widget.Holo.ActionButton.TextButton": 16974001, + "Widget.Holo.ActionMode": 16974002, + "Widget.Holo.ActionButton.CloseMode": 16974003, + "Widget.Holo.ActionBar": 16974004, + "Widget.Holo.Light": 16974005, + "Widget.Holo.Light.Button": 16974006, + "Widget.Holo.Light.Button.Small": 16974007, + "Widget.Holo.Light.Button.Inset": 16974008, + "Widget.Holo.Light.Button.Toggle": 16974009, + "Widget.Holo.Light.TextView": 16974010, + "Widget.Holo.Light.AutoCompleteTextView": 16974011, + "Widget.Holo.Light.CompoundButton.CheckBox": 16974012, + "Widget.Holo.Light.ListView.DropDown": 16974013, + "Widget.Holo.Light.EditText": 16974014, + "Widget.Holo.Light.ExpandableListView": 16974015, + "Widget.Holo.Light.GridView": 16974016, + "Widget.Holo.Light.ImageButton": 16974017, + "Widget.Holo.Light.ListView": 16974018, + "Widget.Holo.Light.PopupWindow": 16974019, + "Widget.Holo.Light.ProgressBar": 16974020, + "Widget.Holo.Light.ProgressBar.Horizontal": 16974021, + "Widget.Holo.Light.ProgressBar.Small": 16974022, + "Widget.Holo.Light.ProgressBar.Small.Title": 16974023, + "Widget.Holo.Light.ProgressBar.Large": 16974024, + "Widget.Holo.Light.ProgressBar.Inverse": 16974025, + "Widget.Holo.Light.ProgressBar.Small.Inverse": 16974026, + "Widget.Holo.Light.ProgressBar.Large.Inverse": 16974027, + "Widget.Holo.Light.SeekBar": 16974028, + "Widget.Holo.Light.RatingBar": 16974029, + "Widget.Holo.Light.RatingBar.Indicator": 16974030, + "Widget.Holo.Light.RatingBar.Small": 16974031, + "Widget.Holo.Light.CompoundButton.RadioButton": 16974032, + "Widget.Holo.Light.ScrollView": 16974033, + "Widget.Holo.Light.HorizontalScrollView": 16974034, + "Widget.Holo.Light.Spinner": 16974035, + "Widget.Holo.Light.CompoundButton.Star": 16974036, + "Widget.Holo.Light.TabWidget": 16974037, + "Widget.Holo.Light.WebTextView": 16974038, + "Widget.Holo.Light.WebView": 16974039, + "Widget.Holo.Light.DropDownItem": 16974040, + "Widget.Holo.Light.DropDownItem.Spinner": 16974041, + "Widget.Holo.Light.TextView.SpinnerItem": 16974042, + "Widget.Holo.Light.ListPopupWindow": 16974043, + "Widget.Holo.Light.PopupMenu": 16974044, + "Widget.Holo.Light.ActionButton": 16974045, + "Widget.Holo.Light.ActionButton.Overflow": 16974046, + "Widget.Holo.Light.ActionMode": 16974047, + "Widget.Holo.Light.ActionButton.CloseMode": 16974048, + "Widget.Holo.Light.ActionBar": 16974049, + "Widget.Holo.Button.Borderless": 16974050, + "Widget.Holo.Tab": 16974051, + "Widget.Holo.Light.Tab": 16974052, + "Holo.ButtonBar": 16974053, + "Holo.Light.ButtonBar": 16974054, + "Holo.ButtonBar.AlertDialog": 16974055, + "Holo.Light.ButtonBar.AlertDialog": 16974056, + "Holo.SegmentedButton": 16974057, + "Holo.Light.SegmentedButton": 16974058, + "Widget.CalendarView": 16974059, + "Widget.Holo.CalendarView": 16974060, + "Widget.Holo.Light.CalendarView": 16974061, + "Widget.DatePicker": 16974062, + "Widget.Holo.DatePicker": 16974063, + "Theme.Holo.Light.NoActionBar": 16974064, + "Theme.Holo.Light.NoActionBar.Fullscreen": 16974065, + "Widget.ActionBar.TabView": 16974066, + "Widget.ActionBar.TabText": 16974067, + "Widget.ActionBar.TabBar": 16974068, + "Widget.Holo.ActionBar.TabView": 16974069, + "Widget.Holo.ActionBar.TabText": 16974070, + "Widget.Holo.ActionBar.TabBar": 16974071, + "Widget.Holo.Light.ActionBar.TabView": 16974072, + "Widget.Holo.Light.ActionBar.TabText": 16974073, + "Widget.Holo.Light.ActionBar.TabBar": 16974074, + "TextAppearance.Holo": 16974075, + "TextAppearance.Holo.Inverse": 16974076, + "TextAppearance.Holo.Large": 16974077, + "TextAppearance.Holo.Large.Inverse": 16974078, + "TextAppearance.Holo.Medium": 16974079, + "TextAppearance.Holo.Medium.Inverse": 16974080, + "TextAppearance.Holo.Small": 16974081, + "TextAppearance.Holo.Small.Inverse": 16974082, + "TextAppearance.Holo.SearchResult.Title": 16974083, + "TextAppearance.Holo.SearchResult.Subtitle": 16974084, + "TextAppearance.Holo.Widget": 16974085, + "TextAppearance.Holo.Widget.Button": 16974086, + "TextAppearance.Holo.Widget.IconMenu.Item": 16974087, + "TextAppearance.Holo.Widget.TabWidget": 16974088, + "TextAppearance.Holo.Widget.TextView": 16974089, + "TextAppearance.Holo.Widget.TextView.PopupMenu": 16974090, + "TextAppearance.Holo.Widget.DropDownHint": 16974091, + "TextAppearance.Holo.Widget.DropDownItem": 16974092, + "TextAppearance.Holo.Widget.TextView.SpinnerItem": 16974093, + "TextAppearance.Holo.Widget.EditText": 16974094, + "TextAppearance.Holo.Widget.PopupMenu": 16974095, + "TextAppearance.Holo.Widget.PopupMenu.Large": 16974096, + "TextAppearance.Holo.Widget.PopupMenu.Small": 16974097, + "TextAppearance.Holo.Widget.ActionBar.Title": 16974098, + "TextAppearance.Holo.Widget.ActionBar.Subtitle": 16974099, + "TextAppearance.Holo.Widget.ActionMode.Title": 16974100, + "TextAppearance.Holo.Widget.ActionMode.Subtitle": 16974101, + "TextAppearance.Holo.WindowTitle": 16974102, + "TextAppearance.Holo.DialogWindowTitle": 16974103, + "TextAppearance.SuggestionHighlight": 16974104, + "Theme.Holo.Light.DarkActionBar": 16974105, + "Widget.Holo.Button.Borderless.Small": 16974106, + "Widget.Holo.Light.Button.Borderless.Small": 16974107, + "TextAppearance.Holo.Widget.ActionBar.Title.Inverse": 16974108, + "TextAppearance.Holo.Widget.ActionBar.Subtitle.Inverse": 16974109, + "TextAppearance.Holo.Widget.ActionMode.Title.Inverse": 16974110, + "TextAppearance.Holo.Widget.ActionMode.Subtitle.Inverse": 16974111, + "TextAppearance.Holo.Widget.ActionBar.Menu": 16974112, + "Widget.Holo.ActionBar.Solid": 16974113, + "Widget.Holo.Light.ActionBar.Solid": 16974114, + "Widget.Holo.Light.ActionBar.Solid.Inverse": 16974115, + "Widget.Holo.Light.ActionBar.TabBar.Inverse": 16974116, + "Widget.Holo.Light.ActionBar.TabView.Inverse": 16974117, + "Widget.Holo.Light.ActionBar.TabText.Inverse": 16974118, + "Widget.Holo.Light.ActionMode.Inverse": 16974119, + "Theme.DeviceDefault": 16974120, + "Theme.DeviceDefault.NoActionBar": 16974121, + "Theme.DeviceDefault.NoActionBar.Fullscreen": 16974122, + "Theme.DeviceDefault.Light": 16974123, + "Theme.DeviceDefault.Light.NoActionBar": 16974124, + "Theme.DeviceDefault.Light.NoActionBar.Fullscreen": 16974125, + "Theme.DeviceDefault.Dialog": 16974126, + "Theme.DeviceDefault.Dialog.MinWidth": 16974127, + "Theme.DeviceDefault.Dialog.NoActionBar": 16974128, + "Theme.DeviceDefault.Dialog.NoActionBar.MinWidth": 16974129, + "Theme.DeviceDefault.Light.Dialog": 16974130, + "Theme.DeviceDefault.Light.Dialog.MinWidth": 16974131, + "Theme.DeviceDefault.Light.Dialog.NoActionBar": 16974132, + "Theme.DeviceDefault.Light.Dialog.NoActionBar.MinWidth": 16974133, + "Theme.DeviceDefault.DialogWhenLarge": 16974134, + "Theme.DeviceDefault.DialogWhenLarge.NoActionBar": 16974135, + "Theme.DeviceDefault.Light.DialogWhenLarge": 16974136, + "Theme.DeviceDefault.Light.DialogWhenLarge.NoActionBar": 16974137, + "Theme.DeviceDefault.Panel": 16974138, + "Theme.DeviceDefault.Light.Panel": 16974139, + "Theme.DeviceDefault.Wallpaper": 16974140, + "Theme.DeviceDefault.Wallpaper.NoTitleBar": 16974141, + "Theme.DeviceDefault.InputMethod": 16974142, + "Theme.DeviceDefault.Light.DarkActionBar": 16974143, + "Widget.DeviceDefault": 16974144, + "Widget.DeviceDefault.Button": 16974145, + "Widget.DeviceDefault.Button.Small": 16974146, + "Widget.DeviceDefault.Button.Inset": 16974147, + "Widget.DeviceDefault.Button.Toggle": 16974148, + "Widget.DeviceDefault.Button.Borderless.Small": 16974149, + "Widget.DeviceDefault.TextView": 16974150, + "Widget.DeviceDefault.AutoCompleteTextView": 16974151, + "Widget.DeviceDefault.CompoundButton.CheckBox": 16974152, + "Widget.DeviceDefault.ListView.DropDown": 16974153, + "Widget.DeviceDefault.EditText": 16974154, + "Widget.DeviceDefault.ExpandableListView": 16974155, + "Widget.DeviceDefault.GridView": 16974156, + "Widget.DeviceDefault.ImageButton": 16974157, + "Widget.DeviceDefault.ListView": 16974158, + "Widget.DeviceDefault.PopupWindow": 16974159, + "Widget.DeviceDefault.ProgressBar": 16974160, + "Widget.DeviceDefault.ProgressBar.Horizontal": 16974161, + "Widget.DeviceDefault.ProgressBar.Small": 16974162, + "Widget.DeviceDefault.ProgressBar.Small.Title": 16974163, + "Widget.DeviceDefault.ProgressBar.Large": 16974164, + "Widget.DeviceDefault.SeekBar": 16974165, + "Widget.DeviceDefault.RatingBar": 16974166, + "Widget.DeviceDefault.RatingBar.Indicator": 16974167, + "Widget.DeviceDefault.RatingBar.Small": 16974168, + "Widget.DeviceDefault.CompoundButton.RadioButton": 16974169, + "Widget.DeviceDefault.ScrollView": 16974170, + "Widget.DeviceDefault.HorizontalScrollView": 16974171, + "Widget.DeviceDefault.Spinner": 16974172, + "Widget.DeviceDefault.CompoundButton.Star": 16974173, + "Widget.DeviceDefault.TabWidget": 16974174, + "Widget.DeviceDefault.WebTextView": 16974175, + "Widget.DeviceDefault.WebView": 16974176, + "Widget.DeviceDefault.DropDownItem": 16974177, + "Widget.DeviceDefault.DropDownItem.Spinner": 16974178, + "Widget.DeviceDefault.TextView.SpinnerItem": 16974179, + "Widget.DeviceDefault.ListPopupWindow": 16974180, + "Widget.DeviceDefault.PopupMenu": 16974181, + "Widget.DeviceDefault.ActionButton": 16974182, + "Widget.DeviceDefault.ActionButton.Overflow": 16974183, + "Widget.DeviceDefault.ActionButton.TextButton": 16974184, + "Widget.DeviceDefault.ActionMode": 16974185, + "Widget.DeviceDefault.ActionButton.CloseMode": 16974186, + "Widget.DeviceDefault.ActionBar": 16974187, + "Widget.DeviceDefault.Button.Borderless": 16974188, + "Widget.DeviceDefault.Tab": 16974189, + "Widget.DeviceDefault.CalendarView": 16974190, + "Widget.DeviceDefault.DatePicker": 16974191, + "Widget.DeviceDefault.ActionBar.TabView": 16974192, + "Widget.DeviceDefault.ActionBar.TabText": 16974193, + "Widget.DeviceDefault.ActionBar.TabBar": 16974194, + "Widget.DeviceDefault.ActionBar.Solid": 16974195, + "Widget.DeviceDefault.Light": 16974196, + "Widget.DeviceDefault.Light.Button": 16974197, + "Widget.DeviceDefault.Light.Button.Small": 16974198, + "Widget.DeviceDefault.Light.Button.Inset": 16974199, + "Widget.DeviceDefault.Light.Button.Toggle": 16974200, + "Widget.DeviceDefault.Light.Button.Borderless.Small": 16974201, + "Widget.DeviceDefault.Light.TextView": 16974202, + "Widget.DeviceDefault.Light.AutoCompleteTextView": 16974203, + "Widget.DeviceDefault.Light.CompoundButton.CheckBox": 16974204, + "Widget.DeviceDefault.Light.ListView.DropDown": 16974205, + "Widget.DeviceDefault.Light.EditText": 16974206, + "Widget.DeviceDefault.Light.ExpandableListView": 16974207, + "Widget.DeviceDefault.Light.GridView": 16974208, + "Widget.DeviceDefault.Light.ImageButton": 16974209, + "Widget.DeviceDefault.Light.ListView": 16974210, + "Widget.DeviceDefault.Light.PopupWindow": 16974211, + "Widget.DeviceDefault.Light.ProgressBar": 16974212, + "Widget.DeviceDefault.Light.ProgressBar.Horizontal": 16974213, + "Widget.DeviceDefault.Light.ProgressBar.Small": 16974214, + "Widget.DeviceDefault.Light.ProgressBar.Small.Title": 16974215, + "Widget.DeviceDefault.Light.ProgressBar.Large": 16974216, + "Widget.DeviceDefault.Light.ProgressBar.Inverse": 16974217, + "Widget.DeviceDefault.Light.ProgressBar.Small.Inverse": 16974218, + "Widget.DeviceDefault.Light.ProgressBar.Large.Inverse": 16974219, + "Widget.DeviceDefault.Light.SeekBar": 16974220, + "Widget.DeviceDefault.Light.RatingBar": 16974221, + "Widget.DeviceDefault.Light.RatingBar.Indicator": 16974222, + "Widget.DeviceDefault.Light.RatingBar.Small": 16974223, + "Widget.DeviceDefault.Light.CompoundButton.RadioButton": 16974224, + "Widget.DeviceDefault.Light.ScrollView": 16974225, + "Widget.DeviceDefault.Light.HorizontalScrollView": 16974226, + "Widget.DeviceDefault.Light.Spinner": 16974227, + "Widget.DeviceDefault.Light.CompoundButton.Star": 16974228, + "Widget.DeviceDefault.Light.TabWidget": 16974229, + "Widget.DeviceDefault.Light.WebTextView": 16974230, + "Widget.DeviceDefault.Light.WebView": 16974231, + "Widget.DeviceDefault.Light.DropDownItem": 16974232, + "Widget.DeviceDefault.Light.DropDownItem.Spinner": 16974233, + "Widget.DeviceDefault.Light.TextView.SpinnerItem": 16974234, + "Widget.DeviceDefault.Light.ListPopupWindow": 16974235, + "Widget.DeviceDefault.Light.PopupMenu": 16974236, + "Widget.DeviceDefault.Light.Tab": 16974237, + "Widget.DeviceDefault.Light.CalendarView": 16974238, + "Widget.DeviceDefault.Light.ActionButton": 16974239, + "Widget.DeviceDefault.Light.ActionButton.Overflow": 16974240, + "Widget.DeviceDefault.Light.ActionMode": 16974241, + "Widget.DeviceDefault.Light.ActionButton.CloseMode": 16974242, + "Widget.DeviceDefault.Light.ActionBar": 16974243, + "Widget.DeviceDefault.Light.ActionBar.TabView": 16974244, + "Widget.DeviceDefault.Light.ActionBar.TabText": 16974245, + "Widget.DeviceDefault.Light.ActionBar.TabBar": 16974246, + "Widget.DeviceDefault.Light.ActionBar.Solid": 16974247, + "Widget.DeviceDefault.Light.ActionBar.Solid.Inverse": 16974248, + "Widget.DeviceDefault.Light.ActionBar.TabBar.Inverse": 16974249, + "Widget.DeviceDefault.Light.ActionBar.TabView.Inverse": 16974250, + "Widget.DeviceDefault.Light.ActionBar.TabText.Inverse": 16974251, + "Widget.DeviceDefault.Light.ActionMode.Inverse": 16974252, + "TextAppearance.DeviceDefault": 16974253, + "TextAppearance.DeviceDefault.Inverse": 16974254, + "TextAppearance.DeviceDefault.Large": 16974255, + "TextAppearance.DeviceDefault.Large.Inverse": 16974256, + "TextAppearance.DeviceDefault.Medium": 16974257, + "TextAppearance.DeviceDefault.Medium.Inverse": 16974258, + "TextAppearance.DeviceDefault.Small": 16974259, + "TextAppearance.DeviceDefault.Small.Inverse": 16974260, + "TextAppearance.DeviceDefault.SearchResult.Title": 16974261, + "TextAppearance.DeviceDefault.SearchResult.Subtitle": 16974262, + "TextAppearance.DeviceDefault.WindowTitle": 16974263, + "TextAppearance.DeviceDefault.DialogWindowTitle": 16974264, + "TextAppearance.DeviceDefault.Widget": 16974265, + "TextAppearance.DeviceDefault.Widget.Button": 16974266, + "TextAppearance.DeviceDefault.Widget.IconMenu.Item": 16974267, + "TextAppearance.DeviceDefault.Widget.TabWidget": 16974268, + "TextAppearance.DeviceDefault.Widget.TextView": 16974269, + "TextAppearance.DeviceDefault.Widget.TextView.PopupMenu": 16974270, + "TextAppearance.DeviceDefault.Widget.DropDownHint": 16974271, + "TextAppearance.DeviceDefault.Widget.DropDownItem": 16974272, + "TextAppearance.DeviceDefault.Widget.TextView.SpinnerItem": 16974273, + "TextAppearance.DeviceDefault.Widget.EditText": 16974274, + "TextAppearance.DeviceDefault.Widget.PopupMenu": 16974275, + "TextAppearance.DeviceDefault.Widget.PopupMenu.Large": 16974276, + "TextAppearance.DeviceDefault.Widget.PopupMenu.Small": 16974277, + "TextAppearance.DeviceDefault.Widget.ActionBar.Title": 16974278, + "TextAppearance.DeviceDefault.Widget.ActionBar.Subtitle": 16974279, + "TextAppearance.DeviceDefault.Widget.ActionMode.Title": 16974280, + "TextAppearance.DeviceDefault.Widget.ActionMode.Subtitle": 16974281, + "TextAppearance.DeviceDefault.Widget.ActionBar.Title.Inverse": 16974282, + "TextAppearance.DeviceDefault.Widget.ActionBar.Subtitle.Inverse": 16974283, + "TextAppearance.DeviceDefault.Widget.ActionMode.Title.Inverse": 16974284, + "TextAppearance.DeviceDefault.Widget.ActionMode.Subtitle.Inverse": 16974285, + "TextAppearance.DeviceDefault.Widget.ActionBar.Menu": 16974286, + "DeviceDefault.ButtonBar": 16974287, + "DeviceDefault.ButtonBar.AlertDialog": 16974288, + "DeviceDefault.SegmentedButton": 16974289, + "DeviceDefault.Light.ButtonBar": 16974290, + "DeviceDefault.Light.ButtonBar.AlertDialog": 16974291, + "DeviceDefault.Light.SegmentedButton": 16974292, + "Widget.Holo.MediaRouteButton": 16974293, + "Widget.Holo.Light.MediaRouteButton": 16974294, + "Widget.DeviceDefault.MediaRouteButton": 16974295, + "Widget.DeviceDefault.Light.MediaRouteButton": 16974296, + "Widget.Holo.CheckedTextView": 16974297, + "Widget.Holo.Light.CheckedTextView": 16974298, + "Widget.DeviceDefault.CheckedTextView": 16974299, + "Widget.DeviceDefault.Light.CheckedTextView": 16974300, + "Theme.Holo.NoActionBar.Overscan": 16974301, + "Theme.Holo.Light.NoActionBar.Overscan": 16974302, + "Theme.DeviceDefault.NoActionBar.Overscan": 16974303, + "Theme.DeviceDefault.Light.NoActionBar.Overscan": 16974304, + "Theme.Holo.NoActionBar.TranslucentDecor": 16974305, + "Theme.Holo.Light.NoActionBar.TranslucentDecor": 16974306, + "Theme.DeviceDefault.NoActionBar.TranslucentDecor": 16974307, + "Theme.DeviceDefault.Light.NoActionBar.TranslucentDecor": 16974308, + "Widget.FastScroll": 16974309, + "Widget.StackView": 16974310, + "Widget.Toolbar": 16974311, + "Widget.Toolbar.Button.Navigation": 16974312, + "Widget.DeviceDefault.FastScroll": 16974313, + "Widget.DeviceDefault.StackView": 16974314, + "Widget.DeviceDefault.Light.FastScroll": 16974315, + "Widget.DeviceDefault.Light.StackView": 16974316, + "TextAppearance.Material": 16974317, + "TextAppearance.Material.Button": 16974318, + "TextAppearance.Material.Body2": 16974319, + "TextAppearance.Material.Body1": 16974320, + "TextAppearance.Material.Caption": 16974321, + "TextAppearance.Material.DialogWindowTitle": 16974322, + "TextAppearance.Material.Display4": 16974323, + "TextAppearance.Material.Display3": 16974324, + "TextAppearance.Material.Display2": 16974325, + "TextAppearance.Material.Display1": 16974326, + "TextAppearance.Material.Headline": 16974327, + "TextAppearance.Material.Inverse": 16974328, + "TextAppearance.Material.Large": 16974329, + "TextAppearance.Material.Large.Inverse": 16974330, + "TextAppearance.Material.Medium": 16974331, + "TextAppearance.Material.Medium.Inverse": 16974332, + "TextAppearance.Material.Menu": 16974333, + "TextAppearance.Material.Notification": 16974334, + "TextAppearance.Material.Notification.Emphasis": 16974335, + "TextAppearance.Material.Notification.Info": 16974336, + "TextAppearance.Material.Notification.Line2": 16974337, + "TextAppearance.Material.Notification.Time": 16974338, + "TextAppearance.Material.Notification.Title": 16974339, + "TextAppearance.Material.SearchResult.Subtitle": 16974340, + "TextAppearance.Material.SearchResult.Title": 16974341, + "TextAppearance.Material.Small": 16974342, + "TextAppearance.Material.Small.Inverse": 16974343, + "TextAppearance.Material.Subhead": 16974344, + "TextAppearance.Material.Title": 16974345, + "TextAppearance.Material.WindowTitle": 16974346, + "TextAppearance.Material.Widget": 16974347, + "TextAppearance.Material.Widget.ActionBar.Menu": 16974348, + "TextAppearance.Material.Widget.ActionBar.Subtitle": 16974349, + "TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse": 16974350, + "TextAppearance.Material.Widget.ActionBar.Title": 16974351, + "TextAppearance.Material.Widget.ActionBar.Title.Inverse": 16974352, + "TextAppearance.Material.Widget.ActionMode.Subtitle": 16974353, + "TextAppearance.Material.Widget.ActionMode.Subtitle.Inverse": 16974354, + "TextAppearance.Material.Widget.ActionMode.Title": 16974355, + "TextAppearance.Material.Widget.ActionMode.Title.Inverse": 16974356, + "TextAppearance.Material.Widget.Button": 16974357, + "TextAppearance.Material.Widget.DropDownHint": 16974358, + "TextAppearance.Material.Widget.DropDownItem": 16974359, + "TextAppearance.Material.Widget.EditText": 16974360, + "TextAppearance.Material.Widget.IconMenu.Item": 16974361, + "TextAppearance.Material.Widget.PopupMenu": 16974362, + "TextAppearance.Material.Widget.PopupMenu.Large": 16974363, + "TextAppearance.Material.Widget.PopupMenu.Small": 16974364, + "TextAppearance.Material.Widget.TabWidget": 16974365, + "TextAppearance.Material.Widget.TextView": 16974366, + "TextAppearance.Material.Widget.TextView.PopupMenu": 16974367, + "TextAppearance.Material.Widget.TextView.SpinnerItem": 16974368, + "TextAppearance.Material.Widget.Toolbar.Subtitle": 16974369, + "TextAppearance.Material.Widget.Toolbar.Title": 16974370, + "Theme.DeviceDefault.Settings": 16974371, + "Theme.Material": 16974372, + "Theme.Material.Dialog": 16974373, + "Theme.Material.Dialog.Alert": 16974374, + "Theme.Material.Dialog.MinWidth": 16974375, + "Theme.Material.Dialog.NoActionBar": 16974376, + "Theme.Material.Dialog.NoActionBar.MinWidth": 16974377, + "Theme.Material.Dialog.Presentation": 16974378, + "Theme.Material.DialogWhenLarge": 16974379, + "Theme.Material.DialogWhenLarge.NoActionBar": 16974380, + "Theme.Material.InputMethod": 16974381, + "Theme.Material.NoActionBar": 16974382, + "Theme.Material.NoActionBar.Fullscreen": 16974383, + "Theme.Material.NoActionBar.Overscan": 16974384, + "Theme.Material.NoActionBar.TranslucentDecor": 16974385, + "Theme.Material.Panel": 16974386, + "Theme.Material.Settings": 16974387, + "Theme.Material.Voice": 16974388, + "Theme.Material.Wallpaper": 16974389, + "Theme.Material.Wallpaper.NoTitleBar": 16974390, + "Theme.Material.Light": 16974391, + "Theme.Material.Light.DarkActionBar": 16974392, + "Theme.Material.Light.Dialog": 16974393, + "Theme.Material.Light.Dialog.Alert": 16974394, + "Theme.Material.Light.Dialog.MinWidth": 16974395, + "Theme.Material.Light.Dialog.NoActionBar": 16974396, + "Theme.Material.Light.Dialog.NoActionBar.MinWidth": 16974397, + "Theme.Material.Light.Dialog.Presentation": 16974398, + "Theme.Material.Light.DialogWhenLarge": 16974399, + "Theme.Material.Light.DialogWhenLarge.NoActionBar": 16974400, + "Theme.Material.Light.NoActionBar": 16974401, + "Theme.Material.Light.NoActionBar.Fullscreen": 16974402, + "Theme.Material.Light.NoActionBar.Overscan": 16974403, + "Theme.Material.Light.NoActionBar.TranslucentDecor": 16974404, + "Theme.Material.Light.Panel": 16974405, + "Theme.Material.Light.Voice": 16974406, + "ThemeOverlay": 16974407, + "ThemeOverlay.Material": 16974408, + "ThemeOverlay.Material.ActionBar": 16974409, + "ThemeOverlay.Material.Light": 16974410, + "ThemeOverlay.Material.Dark": 16974411, + "ThemeOverlay.Material.Dark.ActionBar": 16974412, + "Widget.Material": 16974413, + "Widget.Material.ActionBar": 16974414, + "Widget.Material.ActionBar.Solid": 16974415, + "Widget.Material.ActionBar.TabBar": 16974416, + "Widget.Material.ActionBar.TabText": 16974417, + "Widget.Material.ActionBar.TabView": 16974418, + "Widget.Material.ActionButton": 16974419, + "Widget.Material.ActionButton.CloseMode": 16974420, + "Widget.Material.ActionButton.Overflow": 16974421, + "Widget.Material.ActionMode": 16974422, + "Widget.Material.AutoCompleteTextView": 16974423, + "Widget.Material.Button": 16974424, + "Widget.Material.Button.Borderless": 16974425, + "Widget.Material.Button.Borderless.Colored": 16974426, + "Widget.Material.Button.Borderless.Small": 16974427, + "Widget.Material.Button.Inset": 16974428, + "Widget.Material.Button.Small": 16974429, + "Widget.Material.Button.Toggle": 16974430, + "Widget.Material.ButtonBar": 16974431, + "Widget.Material.ButtonBar.AlertDialog": 16974432, + "Widget.Material.CalendarView": 16974433, + "Widget.Material.CheckedTextView": 16974434, + "Widget.Material.CompoundButton.CheckBox": 16974435, + "Widget.Material.CompoundButton.RadioButton": 16974436, + "Widget.Material.CompoundButton.Star": 16974437, + "Widget.Material.DatePicker": 16974438, + "Widget.Material.DropDownItem": 16974439, + "Widget.Material.DropDownItem.Spinner": 16974440, + "Widget.Material.EditText": 16974441, + "Widget.Material.ExpandableListView": 16974442, + "Widget.Material.FastScroll": 16974443, + "Widget.Material.GridView": 16974444, + "Widget.Material.HorizontalScrollView": 16974445, + "Widget.Material.ImageButton": 16974446, + "Widget.Material.ListPopupWindow": 16974447, + "Widget.Material.ListView": 16974448, + "Widget.Material.ListView.DropDown": 16974449, + "Widget.Material.MediaRouteButton": 16974450, + "Widget.Material.PopupMenu": 16974451, + "Widget.Material.PopupMenu.Overflow": 16974452, + "Widget.Material.PopupWindow": 16974453, + "Widget.Material.ProgressBar": 16974454, + "Widget.Material.ProgressBar.Horizontal": 16974455, + "Widget.Material.ProgressBar.Large": 16974456, + "Widget.Material.ProgressBar.Small": 16974457, + "Widget.Material.ProgressBar.Small.Title": 16974458, + "Widget.Material.RatingBar": 16974459, + "Widget.Material.RatingBar.Indicator": 16974460, + "Widget.Material.RatingBar.Small": 16974461, + "Widget.Material.ScrollView": 16974462, + "Widget.Material.SearchView": 16974463, + "Widget.Material.SeekBar": 16974464, + "Widget.Material.SegmentedButton": 16974465, + "Widget.Material.StackView": 16974466, + "Widget.Material.Spinner": 16974467, + "Widget.Material.Spinner.Underlined": 16974468, + "Widget.Material.Tab": 16974469, + "Widget.Material.TabWidget": 16974470, + "Widget.Material.TextView": 16974471, + "Widget.Material.TextView.SpinnerItem": 16974472, + "Widget.Material.TimePicker": 16974473, + "Widget.Material.Toolbar": 16974474, + "Widget.Material.Toolbar.Button.Navigation": 16974475, + "Widget.Material.WebTextView": 16974476, + "Widget.Material.WebView": 16974477, + "Widget.Material.Light": 16974478, + "Widget.Material.Light.ActionBar": 16974479, + "Widget.Material.Light.ActionBar.Solid": 16974480, + "Widget.Material.Light.ActionBar.TabBar": 16974481, + "Widget.Material.Light.ActionBar.TabText": 16974482, + "Widget.Material.Light.ActionBar.TabView": 16974483, + "Widget.Material.Light.ActionButton": 16974484, + "Widget.Material.Light.ActionButton.CloseMode": 16974485, + "Widget.Material.Light.ActionButton.Overflow": 16974486, + "Widget.Material.Light.ActionMode": 16974487, + "Widget.Material.Light.AutoCompleteTextView": 16974488, + "Widget.Material.Light.Button": 16974489, + "Widget.Material.Light.Button.Borderless": 16974490, + "Widget.Material.Light.Button.Borderless.Colored": 16974491, + "Widget.Material.Light.Button.Borderless.Small": 16974492, + "Widget.Material.Light.Button.Inset": 16974493, + "Widget.Material.Light.Button.Small": 16974494, + "Widget.Material.Light.Button.Toggle": 16974495, + "Widget.Material.Light.ButtonBar": 16974496, + "Widget.Material.Light.ButtonBar.AlertDialog": 16974497, + "Widget.Material.Light.CalendarView": 16974498, + "Widget.Material.Light.CheckedTextView": 16974499, + "Widget.Material.Light.CompoundButton.CheckBox": 16974500, + "Widget.Material.Light.CompoundButton.RadioButton": 16974501, + "Widget.Material.Light.CompoundButton.Star": 16974502, + "Widget.Material.Light.DatePicker": 16974503, + "Widget.Material.Light.DropDownItem": 16974504, + "Widget.Material.Light.DropDownItem.Spinner": 16974505, + "Widget.Material.Light.EditText": 16974506, + "Widget.Material.Light.ExpandableListView": 16974507, + "Widget.Material.Light.FastScroll": 16974508, + "Widget.Material.Light.GridView": 16974509, + "Widget.Material.Light.HorizontalScrollView": 16974510, + "Widget.Material.Light.ImageButton": 16974511, + "Widget.Material.Light.ListPopupWindow": 16974512, + "Widget.Material.Light.ListView": 16974513, + "Widget.Material.Light.ListView.DropDown": 16974514, + "Widget.Material.Light.MediaRouteButton": 16974515, + "Widget.Material.Light.PopupMenu": 16974516, + "Widget.Material.Light.PopupMenu.Overflow": 16974517, + "Widget.Material.Light.PopupWindow": 16974518, + "Widget.Material.Light.ProgressBar": 16974519, + "Widget.Material.Light.ProgressBar.Horizontal": 16974520, + "Widget.Material.Light.ProgressBar.Inverse": 16974521, + "Widget.Material.Light.ProgressBar.Large": 16974522, + "Widget.Material.Light.ProgressBar.Large.Inverse": 16974523, + "Widget.Material.Light.ProgressBar.Small": 16974524, + "Widget.Material.Light.ProgressBar.Small.Inverse": 16974525, + "Widget.Material.Light.ProgressBar.Small.Title": 16974526, + "Widget.Material.Light.RatingBar": 16974527, + "Widget.Material.Light.RatingBar.Indicator": 16974528, + "Widget.Material.Light.RatingBar.Small": 16974529, + "Widget.Material.Light.ScrollView": 16974530, + "Widget.Material.Light.SearchView": 16974531, + "Widget.Material.Light.SeekBar": 16974532, + "Widget.Material.Light.SegmentedButton": 16974533, + "Widget.Material.Light.StackView": 16974534, + "Widget.Material.Light.Spinner": 16974535, + "Widget.Material.Light.Spinner.Underlined": 16974536, + "Widget.Material.Light.Tab": 16974537, + "Widget.Material.Light.TabWidget": 16974538, + "Widget.Material.Light.TextView": 16974539, + "Widget.Material.Light.TextView.SpinnerItem": 16974540, + "Widget.Material.Light.TimePicker": 16974541, + "Widget.Material.Light.WebTextView": 16974542, + "Widget.Material.Light.WebView": 16974543, + "Theme.Leanback.FormWizard": 16974544, + "Theme.DeviceDefault.Dialog.Alert": 16974545, + "Theme.DeviceDefault.Light.Dialog.Alert": 16974546, + "Widget.Material.Button.Colored": 16974547, + "TextAppearance.Material.Widget.Button.Inverse": 16974548, + "Theme.Material.Light.LightStatusBar": 16974549, + "ThemeOverlay.Material.Dialog": 16974550, + "ThemeOverlay.Material.Dialog.Alert": 16974551, + "Theme.Material.Light.DialogWhenLarge.DarkActionBar": 16974552, + "Widget.Material.SeekBar.Discrete": 16974553, + "Widget.Material.CompoundButton.Switch": 16974554, + "Widget.Material.Light.CompoundButton.Switch": 16974555, + "Widget.Material.NumberPicker": 16974556, + "Widget.Material.Light.NumberPicker": 16974557, + "TextAppearance.Material.Widget.Button.Colored": 16974558, + "TextAppearance.Material.Widget.Button.Borderless.Colored": 16974559 + }, + "string": { + "cancel": 17039360, + "copy": 17039361, + "copyUrl": 17039362, + "cut": 17039363, + "defaultVoiceMailAlphaTag": 17039364, + "defaultMsisdnAlphaTag": 17039365, + "emptyPhoneNumber": 17039366, + "httpErrorBadUrl": 17039367, + "httpErrorUnsupportedScheme": 17039368, + "no": 17039369, + "ok": 17039370, + "paste": 17039371, + "search_go": 17039372, + "selectAll": 17039373, + "unknownName": 17039374, + "untitled": 17039375, + "VideoView_error_button": 17039376, + "VideoView_error_text_unknown": 17039377, + "VideoView_error_title": 17039378, + "yes": 17039379, + "dialog_alert_title": 17039380, + "VideoView_error_text_invalid_progressive_playback": 17039381, + "selectTextMode": 17039382, + "status_bar_notification_info_overflow": 17039383, + "fingerprint_icon_content_description": 17039384, + "paste_as_plain_text": 17039385, + "autofill": 17039386 + }, + "dimen": { + "app_icon_size": 17104896, + "thumbnail_height": 17104897, + "thumbnail_width": 17104898, + "dialog_min_width_major": 17104899, + "dialog_min_width_minor": 17104900, + "notification_large_icon_width": 17104901, + "notification_large_icon_height": 17104902 + }, + "color": { + "darker_gray": 17170432, + "primary_text_dark": 17170433, + "primary_text_dark_nodisable": 17170434, + "primary_text_light": 17170435, + "primary_text_light_nodisable": 17170436, + "secondary_text_dark": 17170437, + "secondary_text_dark_nodisable": 17170438, + "secondary_text_light": 17170439, + "secondary_text_light_nodisable": 17170440, + "tab_indicator_text": 17170441, + "widget_edittext_dark": 17170442, + "white": 17170443, + "black": 17170444, + "transparent": 17170445, + "background_dark": 17170446, + "background_light": 17170447, + "tertiary_text_dark": 17170448, + "tertiary_text_light": 17170449, + "holo_blue_light": 17170450, + "holo_blue_dark": 17170451, + "holo_green_light": 17170452, + "holo_green_dark": 17170453, + "holo_red_light": 17170454, + "holo_red_dark": 17170455, + "holo_orange_light": 17170456, + "holo_orange_dark": 17170457, + "holo_purple": 17170458, + "holo_blue_bright": 17170459 + }, + "array": { + "emailAddressTypes": 17235968, + "imProtocols": 17235969, + "organizationTypes": 17235970, + "phoneTypes": 17235971, + "postalAddressTypes": 17235972, + "config_keySystemUuidMapping": 17235973 + }, + "drawable": { + "alert_dark_frame": 17301504, + "alert_light_frame": 17301505, + "arrow_down_float": 17301506, + "arrow_up_float": 17301507, + "btn_default": 17301508, + "btn_default_small": 17301509, + "btn_dropdown": 17301510, + "btn_minus": 17301511, + "btn_plus": 17301512, + "btn_radio": 17301513, + "btn_star": 17301514, + "btn_star_big_off": 17301515, + "btn_star_big_on": 17301516, + "button_onoff_indicator_on": 17301517, + "button_onoff_indicator_off": 17301518, + "checkbox_off_background": 17301519, + "checkbox_on_background": 17301520, + "dialog_frame": 17301521, + "divider_horizontal_bright": 17301522, + "divider_horizontal_textfield": 17301523, + "divider_horizontal_dark": 17301524, + "divider_horizontal_dim_dark": 17301525, + "edit_text": 17301526, + "btn_dialog": 17301527, + "editbox_background": 17301528, + "editbox_background_normal": 17301529, + "editbox_dropdown_dark_frame": 17301530, + "editbox_dropdown_light_frame": 17301531, + "gallery_thumb": 17301532, + "ic_delete": 17301533, + "ic_lock_idle_charging": 17301534, + "ic_lock_idle_lock": 17301535, + "ic_lock_idle_low_battery": 17301536, + "ic_media_ff": 17301537, + "ic_media_next": 17301538, + "ic_media_pause": 17301539, + "ic_media_play": 17301540, + "ic_media_previous": 17301541, + "ic_media_rew": 17301542, + "ic_dialog_alert": 17301543, + "ic_dialog_dialer": 17301544, + "ic_dialog_email": 17301545, + "ic_dialog_map": 17301546, + "ic_input_add": 17301547, + "ic_input_delete": 17301548, + "ic_input_get": 17301549, + "ic_lock_idle_alarm": 17301550, + "ic_lock_lock": 17301551, + "ic_lock_power_off": 17301552, + "ic_lock_silent_mode": 17301553, + "ic_lock_silent_mode_off": 17301554, + "ic_menu_add": 17301555, + "ic_menu_agenda": 17301556, + "ic_menu_always_landscape_portrait": 17301557, + "ic_menu_call": 17301558, + "ic_menu_camera": 17301559, + "ic_menu_close_clear_cancel": 17301560, + "ic_menu_compass": 17301561, + "ic_menu_crop": 17301562, + "ic_menu_day": 17301563, + "ic_menu_delete": 17301564, + "ic_menu_directions": 17301565, + "ic_menu_edit": 17301566, + "ic_menu_gallery": 17301567, + "ic_menu_help": 17301568, + "ic_menu_info_details": 17301569, + "ic_menu_manage": 17301570, + "ic_menu_mapmode": 17301571, + "ic_menu_month": 17301572, + "ic_menu_more": 17301573, + "ic_menu_my_calendar": 17301574, + "ic_menu_mylocation": 17301575, + "ic_menu_myplaces": 17301576, + "ic_menu_preferences": 17301577, + "ic_menu_recent_history": 17301578, + "ic_menu_report_image": 17301579, + "ic_menu_revert": 17301580, + "ic_menu_rotate": 17301581, + "ic_menu_save": 17301582, + "ic_menu_search": 17301583, + "ic_menu_send": 17301584, + "ic_menu_set_as": 17301585, + "ic_menu_share": 17301586, + "ic_menu_slideshow": 17301587, + "ic_menu_today": 17301588, + "ic_menu_upload": 17301589, + "ic_menu_upload_you_tube": 17301590, + "ic_menu_view": 17301591, + "ic_menu_week": 17301592, + "ic_menu_zoom": 17301593, + "ic_notification_clear_all": 17301594, + "ic_notification_overlay": 17301595, + "ic_partial_secure": 17301596, + "ic_popup_disk_full": 17301597, + "ic_popup_reminder": 17301598, + "ic_popup_sync": 17301599, + "ic_search_category_default": 17301600, + "ic_secure": 17301601, + "list_selector_background": 17301602, + "menu_frame": 17301603, + "menu_full_frame": 17301604, + "menuitem_background": 17301605, + "picture_frame": 17301606, + "presence_away": 17301607, + "presence_busy": 17301608, + "presence_invisible": 17301609, + "presence_offline": 17301610, + "presence_online": 17301611, + "progress_horizontal": 17301612, + "progress_indeterminate_horizontal": 17301613, + "radiobutton_off_background": 17301614, + "radiobutton_on_background": 17301615, + "spinner_background": 17301616, + "spinner_dropdown_background": 17301617, + "star_big_on": 17301618, + "star_big_off": 17301619, + "star_on": 17301620, + "star_off": 17301621, + "stat_notify_call_mute": 17301622, + "stat_notify_chat": 17301623, + "stat_notify_error": 17301624, + "stat_notify_more": 17301625, + "stat_notify_sdcard": 17301626, + "stat_notify_sdcard_usb": 17301627, + "stat_notify_sync": 17301628, + "stat_notify_sync_noanim": 17301629, + "stat_notify_voicemail": 17301630, + "stat_notify_missed_call": 17301631, + "stat_sys_data_bluetooth": 17301632, + "stat_sys_download": 17301633, + "stat_sys_download_done": 17301634, + "stat_sys_headset": 17301635, + "stat_sys_phone_call": 17301636, + "stat_sys_phone_call_forward": 17301637, + "stat_sys_phone_call_on_hold": 17301638, + "stat_sys_speakerphone": 17301639, + "stat_sys_upload": 17301640, + "stat_sys_upload_done": 17301641, + "stat_sys_warning": 17301642, + "status_bar_item_app_background": 17301643, + "status_bar_item_background": 17301644, + "sym_action_call": 17301645, + "sym_action_chat": 17301646, + "sym_action_email": 17301647, + "sym_call_incoming": 17301648, + "sym_call_missed": 17301649, + "sym_call_outgoing": 17301650, + "sym_def_app_icon": 17301651, + "sym_contact_card": 17301652, + "title_bar": 17301653, + "toast_frame": 17301654, + "zoom_plate": 17301655, + "screen_background_dark": 17301656, + "screen_background_light": 17301657, + "bottom_bar": 17301658, + "ic_dialog_info": 17301659, + "ic_menu_sort_alphabetically": 17301660, + "ic_menu_sort_by_size": 17301661, + "ic_btn_speak_now": 17301668, + "dark_header": 17301669, + "title_bar_tall": 17301670, + "stat_sys_vp_phone_call": 17301671, + "stat_sys_vp_phone_call_on_hold": 17301672, + "screen_background_dark_transparent": 17301673, + "screen_background_light_transparent": 17301674, + "stat_notify_sdcard_prepare": 17301675, + "presence_video_away": 17301676, + "presence_video_busy": 17301677, + "presence_video_online": 17301678, + "presence_audio_away": 17301679, + "presence_audio_busy": 17301680, + "presence_audio_online": 17301681, + "dialog_holo_dark_frame": 17301682, + "dialog_holo_light_frame": 17301683 + }, + "layout": { + "activity_list_item": 17367040, + "expandable_list_content": 17367041, + "preference_category": 17367042, + "simple_list_item_1": 17367043, + "simple_list_item_2": 17367044, + "simple_list_item_checked": 17367045, + "simple_expandable_list_item_1": 17367046, + "simple_expandable_list_item_2": 17367047, + "simple_spinner_item": 17367048, + "simple_spinner_dropdown_item": 17367049, + "simple_dropdown_item_1line": 17367050, + "simple_gallery_item": 17367051, + "test_list_item": 17367052, + "two_line_list_item": 17367053, + "browser_link_context_header": 17367054, + "simple_list_item_single_choice": 17367055, + "simple_list_item_multiple_choice": 17367056, + "select_dialog_item": 17367057, + "select_dialog_singlechoice": 17367058, + "select_dialog_multichoice": 17367059, + "list_content": 17367060, + "simple_selectable_list_item": 17367061, + "simple_list_item_activated_1": 17367062, + "simple_list_item_activated_2": 17367063 + }, + "anim": { + "fade_in": 17432576, + "fade_out": 17432577, + "slide_in_left": 17432578, + "slide_out_right": 17432579, + "accelerate_decelerate_interpolator": 17432580, + "accelerate_interpolator": 17432581, + "decelerate_interpolator": 17432582, + "anticipate_interpolator": 17432583, + "overshoot_interpolator": 17432584, + "anticipate_overshoot_interpolator": 17432585, + "bounce_interpolator": 17432586, + "linear_interpolator": 17432587, + "cycle_interpolator": 17432588 + }, + "integer": { + "config_shortAnimTime": 17694720, + "config_mediumAnimTime": 17694721, + "config_longAnimTime": 17694722, + "status_bar_notification_info_maxnum": 17694723 + }, + "animator": { + "fade_in": 17498112, + "fade_out": 17498113 + }, + "interpolator": { + "accelerate_quad": 17563648, + "decelerate_quad": 17563649, + "accelerate_cubic": 17563650, + "decelerate_cubic": 17563651, + "accelerate_quint": 17563652, + "decelerate_quint": 17563653, + "accelerate_decelerate": 17563654, + "anticipate": 17563655, + "overshoot": 17563656, + "anticipate_overshoot": 17563657, + "bounce": 17563658, + "linear": 17563659, + "cycle": 17563660, + "fast_out_slow_in": 17563661, + "linear_out_slow_in": 17563662, + "fast_out_linear_in": 17563663 + }, + "mipmap": { + "sym_def_app_icon": 17629184 + }, + "transition": { + "no_transition": 17760256, + "move": 17760257, + "fade": 17760258, + "explode": 17760259, + "slide_bottom": 17760260, + "slide_top": 17760261, + "slide_right": 17760262, + "slide_left": 17760263 + }, + "raw": { + "loaderror": 17825792, + "nodomain": 17825793 + } +} diff --git a/androguard/core/resources/public.py b/androguard/core/resources/public.py new file mode 100644 index 0000000..67b54fe --- /dev/null +++ b/androguard/core/resources/public.py @@ -0,0 +1,56 @@ +import os +from xml.dom import minidom + +_public_res = None +# copy the newest sdk/platforms/android-?/data/res/values/public.xml here +if _public_res is None: + _public_res = {} + root = os.path.dirname(os.path.realpath(__file__)) + xmlfile = os.path.join(root, "public.xml") + if os.path.isfile(xmlfile): + with open(xmlfile, "r") as fp: + _xml = minidom.parseString(fp.read()) + for element in _xml.getElementsByTagName("public"): + _type = element.getAttribute('type') + _name = element.getAttribute('name') + _id = int(element.getAttribute('id'), 16) + if _type not in _public_res: + _public_res[_type] = {} + _public_res[_type][_name] = _id + else: + raise Exception("need to copy the sdk/platforms/android-?/data/res/values/public.xml here") + +SYSTEM_RESOURCES = { + "attributes": { + "forward": {k: v for k, v in _public_res['attr'].items()}, + "inverse": {v: k for k, v in _public_res['attr'].items()} + }, + "styles": { + "forward": {k: v for k, v in _public_res['style'].items()}, + "inverse": {v: k for k, v in _public_res['style'].items()} + } +} + + + +if __name__ == '__main__': + import json + _resources = None + if _resources is None: + root = os.path.dirname(os.path.realpath(__file__)) + resfile = os.path.join(root, "public.json") + + if os.path.isfile(resfile): + with open(resfile, "r") as fp: + _resources = json.load(fp) + else: + # TODO raise error instead? + _resources = {} + for _type in set([] + list(_public_res.keys()) + list(_resources.keys())): + for k in set([] + list(_public_res.get(_type, {}).keys()) + + list(_resources.get(_type, {}).keys())): + a,b = _public_res.get(_type, {}).get(k), \ + _resources.get(_type, {}).get(k), + if a != b: + print(k, a,b) + print(None) \ No newline at end of file diff --git a/androguard/core/resources/public.xml b/androguard/core/resources/public.xml new file mode 100644 index 0000000..bbd29c5 --- /dev/null +++ b/androguard/core/resources/public.xml @@ -0,0 +1,2861 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/androguard/decompiler/__init__.py b/androguard/decompiler/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/androguard/decompiler/__init__.py @@ -0,0 +1 @@ + diff --git a/androguard/decompiler/dad/__init__.py b/androguard/decompiler/dad/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/androguard/decompiler/dad/__init__.py @@ -0,0 +1 @@ + diff --git a/androguard/decompiler/dad/basic_blocks.py b/androguard/decompiler/dad/basic_blocks.py new file mode 100644 index 0000000..379754f --- /dev/null +++ b/androguard/decompiler/dad/basic_blocks.py @@ -0,0 +1,371 @@ +# 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 builtins import zip +from builtins import range +from builtins import object +import logging +from collections import defaultdict +from androguard.decompiler.dad.opcode_ins import INSTRUCTION_SET +from androguard.decompiler.dad.instruction import MoveExceptionExpression +from androguard.decompiler.dad.node import Node +from androguard.decompiler.dad.util import get_type + +logger = logging.getLogger('dad.basic_blocks') + + +class BasicBlock(Node): + def __init__(self, name, block_ins): + super(BasicBlock, self).__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): + return self.ins + + def get_loc_with_ins(self): + 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): + self.ins.remove(ins) + self.loc_ins.remove((loc, ins)) + + def add_ins(self, new_ins_list): + 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): + 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(StatementBlock, self).__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(ReturnBlock, self).__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(ThrowBlock, self).__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(SwitchBlock, self).__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(SwitchBlock, self).copy_from(node) + self.cases = node.cases[:] + self.switch = node.switch[:] + + def update_attribute_with(self, n_map): + super(SwitchBlock, self).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(CondBlock, self).__init__(name, block_ins) + self.true = None + self.false = None + self.type.is_cond = True + + def update_attribute_with(self, n_map): + super(CondBlock, self).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(object): + 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(ShortCircuitBlock, self).__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(LoopBlock, self).__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(LoopBlock, self).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(TryBlock, self).__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(%s)[%s]' % (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(CatchBlock, self).__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 diff --git a/androguard/decompiler/dad/control_flow.py b/androguard/decompiler/dad/control_flow.py new file mode 100644 index 0000000..a05a151 --- /dev/null +++ b/androguard/decompiler/dad/control_flow.py @@ -0,0 +1,432 @@ +# 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 logging +from collections import defaultdict +from androguard.decompiler.dad.basic_blocks import ( + CatchBlock, Condition, LoopBlock, ShortCircuitBlock, TryBlock) +from androguard.decompiler.dad.graph import Graph +from androguard.decompiler.dad.node import Interval +from androguard.decompiler.dad.util import common_dom + +logger = logging.getLogger('dad.control_flow') + + +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 = dict([(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 = '%s+%s' % (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) diff --git a/androguard/decompiler/dad/dast.py b/androguard/decompiler/dad/dast.py new file mode 100644 index 0000000..bd3b5cb --- /dev/null +++ b/androguard/decompiler/dad/dast.py @@ -0,0 +1,733 @@ +# 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.""" +from builtins import zip +from builtins import hex +from builtins import str +from builtins import map +from builtins import range +from builtins import object +import struct + +from androguard.decompiler.dad import basic_blocks, instruction, opcode_ins + + +def array_access(arr, ind): + return ['ArrayAccess', [arr, ind]] + + +def array_creation(tn, params, dim): + return ['ArrayCreation', [tn] + params, dim] + + +def array_initializer(params, tn=None): + return ['ArrayInitializer', params, tn] + + +def assignment(lhs, rhs, op=''): + return ['Assignment', [lhs, rhs], op] + + +def binary_infix(op, left, right): + return ['BinaryInfix', [left, right], op] + + +def cast(tn, arg): + return ['Cast', [tn, arg]] + + +def field_access(triple, left): + return ['FieldAccess', [left], triple] + + +def literal(result, tt): + return ['Literal', result, tt] + + +def local(name): + return ['Local', name] + + +def method_invocation(triple, name, base, params): + if base is None: + return ['MethodInvocation', params, triple, name, False] + return ['MethodInvocation', [base] + params, triple, name, True] + + +def parenthesis(expr): + return ['Parenthesis', [expr]] + + +def typen(baset, dim): + return ['TypeName', (baset, dim)] + + +def unary_prefix(op, left): + return ['Unary', [left], op, False] + + +def unary_postfix(left, op): + return ['Unary', [left], op, True] + + +def var_decl(typen, var): + return [typen, var] + + +def dummy(*args): + return ['Dummy', args] + + +################################################################################ + + +def expression_stmt(expr): + return ['ExpressionStatement', expr] + + +def local_decl_stmt(expr, decl): + return ['LocalDeclarationStatement', expr, decl] + + +def return_stmt(expr): + return ['ReturnStatement', expr] + + +def throw_stmt(expr): + return ['ThrowStatement', expr] + + +def jump_stmt(keyword): + return ['JumpStatement', keyword, None] + + +def loop_stmt(isdo, cond_expr, body): + type_ = 'DoStatement' if isdo else 'WhileStatement' + return [type_, None, cond_expr, body] + + +def try_stmt(tryb, pairs): + return ['TryStatement', None, tryb, pairs] + + +def if_stmt(cond_expr, scopes): + return ['IfStatement', None, cond_expr, scopes] + + +def switch_stmt(cond_expr, ksv_pairs): + return ['SwitchStatement', None, cond_expr, ksv_pairs] + + +# Create empty statement block (statements to be appended later) +# Note, the code below assumes this can be modified in place +def statement_block(): + return ['BlockStatement', None, []] + + +# Add a statement to the end of a statement block +def _append(sb, stmt): + assert (sb[0] == 'BlockStatement') + if stmt is not None: + sb[2].append(stmt) + + +################################################################################ +TYPE_DESCRIPTOR = { + 'V': 'void', + 'Z': 'boolean', + 'B': 'byte', + 'S': 'short', + 'C': 'char', + 'I': 'int', + 'J': 'long', + 'F': 'float', + 'D': 'double', +} + + +def parse_descriptor(desc): + dim = 0 + while desc and desc[0] == '[': + desc = desc[1:] + dim += 1 + + if desc in TYPE_DESCRIPTOR: + return typen('.' + TYPE_DESCRIPTOR[desc], dim) + if desc and desc[0] == 'L' and desc[-1] == ';': + return typen(desc[1:-1], dim) + # invalid descriptor (probably None) + return dummy(str(desc)) + + +# Note: the literal_foo functions (and dummy) are also imported by decompile.py +def literal_string(s): + # We return a escaped string in ASCII encoding + return literal(s.encode('unicode_escape').decode("ascii"), ('java/lang/String', 0)) + + +def literal_class(desc): + return literal(parse_descriptor(desc), ('java/lang/Class', 0)) + + +def literal_bool(b): + return literal(str(b).lower(), ('.boolean', 0)) + + +def literal_int(b): + return literal(str(b), ('.int', 0)) + + +def literal_hex_int(b): + return literal(hex(b), ('.int', 0)) + + +def literal_long(b): + return literal(str(b) + 'L', ('.long', 0)) + + +def literal_float(f): + return literal(str(f) + 'f', ('.float', 0)) + + +def literal_double(f): + return literal(str(f), ('.double', 0)) + + +def literal_null(): + return literal('null', ('.null', 0)) + + +def visit_decl(var, init_expr=None): + t = parse_descriptor(var.get_type()) + v = local('v{}'.format(var.name)) + return local_decl_stmt(init_expr, var_decl(t, v)) + + +def visit_arr_data(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('': + if isinstance(base, instruction.ThisParam): + keyword = 'this' if base.type[1:-1] == op.triple[0] else 'super' + return method_invocation(op.triple, keyword, None, params) + elif isinstance(base, instruction.NewInstance): + return ['ClassInstanceCreation', params, + parse_descriptor(base.type)] + else: + assert (isinstance(base, instruction.Variable)) + # fallthrough to create dummy call + return method_invocation(op.triple, op.name, visit_expr(base), params) + # for unmatched monitor instructions, just create dummy expressions + if isinstance(op, instruction.MonitorEnterExpression): + return dummy("monitor enter(", visit_expr(op.var_map[op.ref]), ")") + if isinstance(op, instruction.MonitorExitExpression): + return dummy("monitor exit(", 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 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 assignment(visit_expr(lhs), visit_expr(rhs)) + if isinstance(op, instruction.NewArrayExpression): + tn = parse_descriptor(op.type[1:]) + expr = visit_expr(op.var_map[op.size]) + return array_creation(tn, [expr], 1) + # create dummy expression for unmatched newinstance + if isinstance(op, instruction.NewInstance): + return dummy("new ", parse_descriptor(op.type)) + if isinstance(op, instruction.Param): + if isinstance(op, instruction.ThisParam): + return local('this') + return local('p{}'.format(op.v)) + if isinstance(op, instruction.StaticExpression): + triple = op.clsdesc[1:-1], op.name, op.ftype + return field_access(triple, parse_descriptor(op.clsdesc)) + if isinstance(op, instruction.StaticInstruction): + triple = op.clsdesc[1:-1], op.name, op.ftype + lhs = field_access(triple, parse_descriptor(op.clsdesc)) + rhs = visit_expr(op.var_map[op.rhs]) + return assignment(lhs, rhs) + if isinstance(op, instruction.SwitchExpression): + return 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 = cast(parse_descriptor(op.clsdesc), visit_expr(lhs)) + else: + expr = unary_prefix(op.op, visit_expr(lhs)) + return parenthesis(expr) + if isinstance(op, instruction.Variable): + # assert(op.declared) + return local('v{}'.format(op.name)) + return dummy('??? Unexpected op: ' + type(op).__name__) + + +def visit_ins(op, isCtor=False): + if isinstance(op, instruction.ReturnInstruction): + expr = None if op.arg is None else visit_expr(op.var_map[op.arg]) + return return_stmt(expr) + elif isinstance(op, instruction.ThrowExpression): + return throw_stmt(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 = visit_expr(rhs) + return 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 expression_stmt(visit_expr(op)) + + +class JSONWriter(object): + 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(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): + _append(self.context[-1], val) + + def visit_ins(self, op): + self.add(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 = parse_descriptor(ptype) + v = local('p{}'.format(name)) + paramdecls.append(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': parse_descriptor(m.type), + 'params': paramdecls, + 'comments': [], + 'body': body, + } + + def _visit_condition(self, cond): + if cond.isnot: + cond.cond1.neg() + left = parenthesis(self.get_cond(cond.cond1)) + right = parenthesis(self.get_cond(cond.cond2)) + op = '&&' if cond.isand else '||' + res = 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 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(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 = 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(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(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(jump_stmt('break')) + scopes.append(scope) + + with self as scope: + self.visit_node(cond.false) + scopes.append(scope) + + self.add(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(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(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 = 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(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(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(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 = var_decl(parse_descriptor(ctype), local(name)) + + with self as body: + self.visit_node(catch_node.catch_start) + pairs.append((catch_decl, body)) + + self.add(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) diff --git a/androguard/decompiler/dad/dataflow.py b/androguard/decompiler/dad/dataflow.py new file mode 100644 index 0000000..62c3b61 --- /dev/null +++ b/androguard/decompiler/dad/dataflow.py @@ -0,0 +1,486 @@ +# 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 builtins import range +from builtins import object +import logging +from collections import defaultdict +from androguard.decompiler.dad.instruction import (Variable, ThisParam, Param) +from androguard.decompiler.dad.util import build_path, common_dom +from androguard.decompiler.dad.node import Node + +logger = logging.getLogger('dad.control_flow') + + +class BasicReachDef(object): + 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(DummyNode, self).__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]) diff --git a/androguard/decompiler/dad/decompile.py b/androguard/decompiler/dad/decompile.py new file mode 100644 index 0000000..2516f84 --- /dev/null +++ b/androguard/decompiler/dad/decompile.py @@ -0,0 +1,587 @@ +from __future__ import print_function + +import logging +import struct +import sys +from builtins import input +from builtins import map +# 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 builtins import next +from builtins import object +from builtins import range +from builtins import str +from collections import defaultdict + +import androguard.core.androconf as androconf +import androguard.decompiler.dad.util as util +from androguard.core.analysis import analysis +from androguard.core.bytecodes import apk, dvm +from androguard.decompiler.dad.control_flow import identify_structures +from androguard.decompiler.dad.dast import ( + JSONWriter, + parse_descriptor, + literal_string, + literal_hex_int, + dummy +) +from androguard.decompiler.dad.dataflow import ( + build_def_use, + place_declarations, + dead_code_elimination, + register_propagation, + split_variables +) +from androguard.decompiler.dad.graph import construct, simplify, split_if_nodes +from androguard.decompiler.dad.instruction import Param, ThisParam +from androguard.decompiler.dad.writer import Writer +from androguard.util import read + +logger = logging.getLogger('dad') + + +# No seperate DvField class currently +def get_field_ast(field): + 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 = dummy(str(val)) + + if val is not None: + if field.get_descriptor() == 'Ljava/lang/String;': + expr = literal_string(val) + elif field.proto == 'B': + expr = literal_hex_int(struct.unpack(' 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): + return self.methods + + def process_method(self, num, doAST=False): + 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=False): + 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): + 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': parse_descriptor(self.thisclass), + 'super': parse_descriptor(self.superclass), + 'flags': self.access, + 'isInterface': isInterface, + 'interfaces': list(map(parse_descriptor, self.interfaces)), + 'fields': fields, + 'methods': methods, + } + + def get_source(self): + 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( + [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"' % 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('%s %s = %s;\n' % (f_type, name, value)) + else: + source.append('%s %s;\n' % (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): + 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): + print(self.get_source()) + + def __repr__(self): + return 'Class(%s)' % self.name + + +class DvMachine(object): + """ + 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.dad.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.bytecodes.dvm.ClassDefItem` as values. + Then these objects are replaced by :class:`DvClass` items successively. + """ + def __init__(self, name): + """ + + :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(dvm.DalvikVMFormat(d)) + elif ftype == 'DEX': + self.vma.add(dvm.DalvikVMFormat(read(name))) + elif ftype == 'DEY': + self.vma.add(dvm.DalvikOdexVMFormat(read(name))) + else: + raise ValueError("Format not recognised for filename '%s'" % name) + + self.classes = dict((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): + """ + 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): + """ + 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: 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): + """ + Process all classes inside the machine. + + This calls :meth:`~androgaurd.decompiler.dad.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): + """ + Calls `show_source` on all classes inside the machine. + This prints the source to stdout. + + This calls :meth:`~androgaurd.decompiler.dad.decompile.DvClass.show_source` on each :class:`DvClass`. + """ + for klass in self.classes.values(): + klass.show_source() + + def process_and_show(self): + """ + 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): + """ + 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 + + +sys.setrecursionlimit(5000) + + +def main(): + # logger.setLevel(logging.DEBUG) for debugging output + # comment the line to disable the logging. + logger.setLevel(logging.INFO) + console_hdlr = logging.StreamHandler(sys.stdout) + console_hdlr.setFormatter(logging.Formatter('%(levelname)s: %(message)s')) + logger.addHandler(console_hdlr) + + default_file = 'examples/android/TestsAndroguard/bin/TestActivity.apk' + if len(sys.argv) > 1: + machine = DvMachine(sys.argv[1]) + else: + machine = DvMachine(default_file) + + logger.info('========================') + logger.info('Classes:') + for class_name in sorted(machine.get_classes()): + logger.info(' %s', class_name) + logger.info('========================') + + cls_name = input('Choose a class (* for all classes): ') + if cls_name == '*': + machine.process_and_show() + else: + cls = machine.get_class(cls_name) + if cls is None: + logger.error('%s not found.', cls_name) + else: + logger.info('======================') + for i, method in enumerate(cls.get_methods()): + logger.info('%d: %s', i, method.name) + logger.info('======================') + meth = input('Method (* for all methods): ') + if meth == '*': + logger.info('CLASS = %s', cls) + cls.process() + else: + cls.process_method(int(meth)) + logger.info('Source:') + logger.info('===========================') + cls.show_source() + + +if __name__ == '__main__': + main() diff --git a/androguard/decompiler/dad/graph.py b/androguard/decompiler/dad/graph.py new file mode 100644 index 0000000..200a067 --- /dev/null +++ b/androguard/decompiler/dad/graph.py @@ -0,0 +1,540 @@ +from __future__ import division + +import logging +from collections import defaultdict + +from builtins import object +from builtins import range +# 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 builtins import str + +from androguard.decompiler.dad.basic_blocks import (build_node_from_block, + StatementBlock, CondBlock) +from androguard.decompiler.dad.instruction import Variable + +logger = logging.getLogger('dad.graph') + + +# TODO Could use networkx here, as it has plenty of tools already, no need to reengineer the wheel +class Graph(object): + """ + 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.dad.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): + 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.dad.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.dad.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: + """ + from pydot import Dot, Edge + import os + + 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 = set([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(object): + 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.set_catch_type(_type) + exception_node.in_catch = True + block_to_node[exception_target] = exception_node + 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.DVMBasicBlock 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 + + # 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 diff --git a/androguard/decompiler/dad/instruction.py b/androguard/decompiler/dad/instruction.py new file mode 100644 index 0000000..6971a43 --- /dev/null +++ b/androguard/decompiler/dad/instruction.py @@ -0,0 +1,1376 @@ +# 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 builtins import object +import androguard.decompiler.dad.util as util + + +class IRForm(object): + 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): + 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(Param, self).__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(ThisParam, self).__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(AssignExpression, self).__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(%s, %s)' % (self.var_map.get(self.lhs), self.rhs) + + +class MoveExpression(IRForm): + def __init__(self, lhs, rhs): + super(MoveExpression, self).__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 '%s = %s' % (v_m.get(self.lhs), v_m.get(self.rhs)) + + +class MoveResultExpression(MoveExpression): + def __init__(self, lhs, rhs): + super(MoveResultExpression, self).__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 '%s = %s' % (v_m.get(self.lhs), v_m.get(self.rhs)) + + +class ArrayStoreInstruction(IRForm): + def __init__(self, rhs, array, index, _type): + super(ArrayStoreInstruction, self).__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 '%s[%s] = %s' % (v_m[self.array], v_m[self.index], v_m[self.rhs]) + + +class StaticInstruction(IRForm): + def __init__(self, rhs, klass, ftype, name): + super(StaticInstruction, self).__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 '%s.%s = %s' % (self.cls, self.name, self.var_map[self.rhs]) + + +class InstanceInstruction(IRForm): + def __init__(self, rhs, lhs, klass, atype, name): + super(InstanceInstruction, self).__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 '%s.%s = %s' % (v_m[self.lhs], self.name, v_m[self.rhs]) + + +class NewInstance(IRForm): + def __init__(self, ins_type): + super(NewInstance, self).__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(InvokeInstruction, self).__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 '%s.%s(%s)' % (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(InvokeRangeInstruction, self).__init__(clsname, name, base, rtype, + ptype, args, triple) + + +class InvokeDirectInstruction(InvokeInstruction): + def __init__(self, clsname, name, base, rtype, ptype, args, triple): + super(InvokeDirectInstruction, self).__init__( + clsname, name, base, rtype, ptype, args, triple) + + +class InvokeStaticInstruction(InvokeInstruction): + def __init__(self, clsname, name, base, rtype, ptype, args, triple): + super(InvokeStaticInstruction, self).__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(ReturnInstruction, self).__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(SwitchExpression, self).__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(CheckCastExpression, self).__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(%s) %s' % (self.type, self.var_map[self.arg]) + + +class ArrayExpression(IRForm): + def __init__(self): + super(ArrayExpression, self).__init__() + + +class ArrayLoadExpression(ArrayExpression): + def __init__(self, arg, index, _type): + super(ArrayLoadExpression, self).__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(%s, %s)' % (v_m[self.array], v_m[self.idx]) + + +class ArrayLengthExpression(ArrayExpression): + def __init__(self, array): + super(ArrayLengthExpression, self).__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(NewArrayExpression, self).__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_%s[%s]' % (self.type, self.var_map[self.size]) + + +class FilledArrayExpression(ArrayExpression): + def __init__(self, asize, atype, args): + super(FilledArrayExpression, self).__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(FillArrayExpression, self).__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(RefExpression, self).__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(MoveExceptionExpression, self).__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(MonitorEnterExpression, self).__init__(ref) + + def visit(self, visitor): + return visitor.visit_monitor_enter(self.var_map[self.ref]) + + +class MonitorExitExpression(RefExpression): + def __init__(self, ref): + super(MonitorExitExpression, self).__init__(ref) + + def visit(self, visitor): + return visitor.visit_monitor_exit(self.var_map[self.ref]) + + +class ThrowExpression(RefExpression): + def __init__(self, ref): + super(ThrowExpression, self).__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(BinaryExpression, self).__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 '(%s %s %s)' % (self.op, v_m[self.arg1], v_m[self.arg2]) + + +class BinaryCompExpression(BinaryExpression): + def __init__(self, op, arg1, arg2, _type): + super(BinaryCompExpression, self).__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(BinaryExpression2Addr, self).__init__(op, dest, arg, _type) + + +class BinaryExpressionLit(BinaryExpression): + def __init__(self, op, arg1, arg2): + super(BinaryExpressionLit, self).__init__(op, arg1, arg2, 'I') + + +class UnaryExpression(IRForm): + def __init__(self, op, arg, _type): + super(UnaryExpression, self).__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 '(%s, %s)' % (self.op, self.var_map[self.arg]) + + +class CastExpression(UnaryExpression): + def __init__(self, op, atype, arg): + super(CastExpression, self).__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_%s(%s)' % (self.op, self.var_map[self.arg]) + + +CONDS = {'==': '!=', '!=': '==', '<': '>=', '<=': '>', '>=': '<', '>': '<=', } + + +class ConditionalExpression(IRForm): + def __init__(self, op, arg1, arg2): + super(ConditionalExpression, self).__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(%s, %s, %s)' % (self.op, v_m[self.arg1], v_m[self.arg2]) + + +class ConditionalZExpression(IRForm): + def __init__(self, op, arg): + super(ConditionalZExpression, self).__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%s0, %s)' % (self.op, self.var_map[self.arg]) + + +class InstanceExpression(IRForm): + def __init__(self, arg, klass, ftype, name): + super(InstanceExpression, self).__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 '%s.%s' % (self.var_map[self.arg], self.name) + + +class StaticExpression(IRForm): + def __init__(self, cls_name, field_type, field_name): + super(StaticExpression, self).__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 '%s.%s' % (self.cls, self.name) diff --git a/androguard/decompiler/dad/node.py b/androguard/decompiler/dad/node.py new file mode 100644 index 0000000..02f63db --- /dev/null +++ b/androguard/decompiler/dad/node.py @@ -0,0 +1,165 @@ +# 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 builtins import object +from future.utils import with_metaclass + + +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(MakeProperties, cls).__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(MakeProperties, cls).__call__(*args, **kwds) + for attr in cls._attrs: + obj.__dict__[attr] = False + return obj + + +class LoopType(with_metaclass(MakeProperties, object)): + _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(with_metaclass(MakeProperties, object)): + _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(object): + 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(set(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(object): + def __init__(self, head): + self.name = 'Interval-%s' % head.name + self.content = set([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 + + 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 '%s(%s)' % (self.name, self.content) diff --git a/androguard/decompiler/dad/opcode_ins.py b/androguard/decompiler/dad/opcode_ins.py new file mode 100644 index 0000000..69682c4 --- /dev/null +++ b/androguard/decompiler/dad/opcode_ins.py @@ -0,0 +1,1956 @@ +# 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 builtins import range +from builtins import object +import logging +from struct import pack, unpack +import androguard.decompiler.dad.util as util +from androguard.decompiler.dad.instruction import ( + ArrayLengthExpression, ArrayLoadExpression, ArrayStoreInstruction, + AssignExpression, BaseClass, BinaryCompExpression, BinaryExpression, + BinaryExpression2Addr, BinaryExpressionLit, CastExpression, + CheckCastExpression, ConditionalExpression, ConditionalZExpression, + Constant, FillArrayExpression, FilledArrayExpression, InstanceExpression, + InstanceInstruction, InvokeInstruction, InvokeDirectInstruction, + InvokeRangeInstruction, InvokeStaticInstruction, MonitorEnterExpression, + MonitorExitExpression, MoveExceptionExpression, MoveExpression, + MoveResultExpression, NewArrayExpression, NewInstance, NopExpression, + ThrowExpression, Variable, ReturnInstruction, StaticExpression, + StaticInstruction, SwitchExpression, ThisParam, UnaryExpression) + +logger = logging.getLogger('dad.opcode_ins') + + +class Op(object): + 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)) + + +# 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()) + value = unpack("=f", pack("=i", ins.BBBBBBBB))[0] + cst = Constant(value, 'I', ins.BBBBBBBB) + return assign_const(ins.AA, cst, vmap) + + +# const/high16 vAA, #+BBBB0000 ( 8b, 16b ) +def consthigh16(ins, vmap): + logger.debug('ConstHigh16 : %s', ins.get_output()) + value = unpack('=f', pack('=i', ins.BBBB << 16))[0] + cst = Constant(value, 'I', ins.BBBB << 16) + 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()) + value = unpack('=d', pack('=d', ins.BBBB))[0] + cst = Constant(value, 'J', ins.BBBB) + 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()) + value = unpack('=d', pack('=d', ins.BBBBBBBB))[0] + cst = Constant(value, 'J', ins.BBBBBBBB) + return assign_const(ins.AA, cst, vmap) + + +# const-wide vAA, #+BBBBBBBBBBBBBBBB ( 8b, 64b ) +def constwide(ins, vmap): + logger.debug('ConstWide : %s', ins.get_output()) + value = unpack('=d', pack('=q', ins.BBBBBBBBBBBBBBBB))[0] + cst = Constant(value, 'D', ins.BBBBBBBBBBBBBBBB) + 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()) + value = unpack('=d', b'\x00\x00\x00\x00\x00\x00' + pack('=h', ins.BBBB))[0] + cst = Constant(value, 'D', ins.BBBB) + 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) + + +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 +] diff --git a/androguard/decompiler/dad/util.py b/androguard/decompiler/dad/util.py new file mode 100644 index 0000000..594e71a --- /dev/null +++ b/androguard/decompiler/dad/util.py @@ -0,0 +1,213 @@ +# 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 logging + +logger = logging.getLogger('dad.util') + +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): + 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): + 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): + 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, size=None): + """ + 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 = '%s[%s]' % (get_type(atype[1:]), size) + else: + res = atype + logger.debug('Unknown descriptor: "%s".', atype) + return res + + +def get_params_type(descriptor): + """ + 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, meth_name, graph, dir_name='graphs2'): + """ + Creates a PNG from a given :class:`~androguard.decompiler.dad.graph.Graph`. + + :param str cls_name: name of the class + :param str meth_name: name of the method + :param androguard.decompiler.dad.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) diff --git a/androguard/decompiler/dad/writer.py b/androguard/decompiler/dad/writer.py new file mode 100644 index 0000000..89332b5 --- /dev/null +++ b/androguard/decompiler/dad/writer.py @@ -0,0 +1,727 @@ +# 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 builtins import str +from builtins import zip +from builtins import range +from past.builtins import basestring +from builtins import object +import logging +from struct import unpack +from androguard.decompiler.dad.util import get_type +from androguard.decompiler.dad.opcode_ins import Op +from androguard.decompiler.dad.instruction import ( + Constant, ThisParam, BinaryExpression, BaseClass, InstanceExpression, + NewInstance, Variable, BinaryCompExpression) + +logger = logging.getLogger('dad.writer') + + +class Writer(object): + """ + 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(self.buffer) + + def str_ext(self): + 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('%s %s' % (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(['%s p%s' % (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('%s%s v%s' % ( + self.space(), get_type(var_type), var.name), + data="DECLARATION") + self.end_ins() + + def visit_constant(self, cst): + # FIXME: basestring should be replaced + if isinstance(cst, basestring): + 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('%s.%s = ' % (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 = "%s -> %s" % (base.cls, name) + elif isinstance(base, InstanceExpression): + call_name = "%s -> %s" % (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 = "%s -> %s" % (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 = "%s -> %s" % (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('%s v%s' % (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 = arg.get_type() + if atype == 'Z': + if op == Op.EQUAL: + self.write('!', data="NEGATE") + arg.visit(self) + else: + arg.visit(self) + 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('%s.%s' % (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) diff --git a/androguard/decompiler/decompiler.py b/androguard/decompiler/decompiler.py new file mode 100644 index 0000000..04c60ba --- /dev/null +++ b/androguard/decompiler/decompiler.py @@ -0,0 +1,806 @@ +from __future__ import print_function +# 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. + +from builtins import range +from builtins import object +from subprocess import Popen, PIPE, STDOUT + +import tempfile +import os + +from androguard.core.androconf import rrmdir +from androguard.decompiler.dad import decompile +from androguard.util import read + +from pygments.filter import Filter +from pygments import highlight +from pygments.lexers import get_lexer_by_name +from pygments.formatters import TerminalFormatter +from pygments.token import Token + +import logging + +log = logging.getLogger("androguard.decompiler") + + +class JADXDecompilerError(Exception): + """ + Exception for JADX related problems + """ + pass + + +class MethodFilter(Filter): + def __init__(self, **options): + """ + Filter Method Code from a whole class + + :param options: + """ + Filter.__init__(self, **options) + + self.method_name = options["method_name"] + # self.descriptor = options["descriptor"] + + self.present = False + self.get_desc = True # False + + def filter(self, lexer, stream): + a = [] + l = [] + rep = [] + + for ttype, value in stream: + if self.method_name == value and (ttype is Token.Name.Function or + ttype is Token.Name): + # print ttype, value + + item_decl = -1 + for i in range(len(a) - 1, 0, -1): + if a[i][0] is Token.Keyword.Declaration: + if a[i][1] != "class": + item_decl = i + break + + if item_decl != -1: + self.present = True + l.extend(a[item_decl:]) + + if self.present and ttype is Token.Keyword.Declaration: + item_end = -1 + for i in range(len(l) - 1, 0, -1): + if l[i][0] is Token.Operator and l[i][1] == "}": + item_end = i + break + + if item_end != -1: + rep.extend(l[:item_end + 1]) + l = [] + self.present = False + + if self.present: + l.append((ttype, value)) + + a.append((ttype, value)) + + if self.present: + nb = 0 + item_end = -1 + for i in range(len(l) - 1, 0, -1): + if l[i][0] is Token.Operator and l[i][1] == "}": + nb += 1 + if nb == 2: + item_end = i + break + + rep.extend(l[:item_end + 1]) + + return rep + + +# TODO move it somewhere else +class Dex2Jar(object): + def __init__(self, + vm, + bin_dex2jar="dex2jar.sh", + tmp_dir="/tmp/"): + """ + DEX2JAR is a tool to convert a Dalvik file into Java Classes + + :param vm: + :param bin_dex2jar: + :param tmp_dir: + """ + pathtmp = tmp_dir + if not os.path.exists(pathtmp): + os.makedirs(pathtmp) + + fd, fdname = tempfile.mkstemp(dir=pathtmp) + with os.fdopen(fd, "w+b") as fd: + fd.write(vm.get_buff()) + fd.flush() + + cmd = Popen([bin_dex2jar, fdname], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname) + + self.jarfile = fdname + "_dex2jar.jar" + + def get_jar(self): + return self.jarfile + + +class DecompilerDex2Jad(object): + def __init__(self, + vm, + bin_dex2jar="dex2jar.sh", + bin_jad="jad", + tmp_dir="/tmp/"): + """ + Decompiler interface for JAD + JAD is not a native Dalvik decompiler, therefore dex2jar is required. + + .. deprecated:: 3.3.5 + JAD is not supported anymore in androguard! + + :param vm: + :param bin_dex2jar: + :param bin_jad: + :param tmp_dir: + """ + warnings.warn("JAD is deprecated since 3.3.5.", DeprecationWarning) + + self.classes = {} + self.classes_failed = [] + + pathtmp = tmp_dir + if not os.path.exists(pathtmp): + os.makedirs(pathtmp) + + fd, fdname = tempfile.mkstemp(dir=pathtmp) + with os.fdopen(fd, "w+b") as fd: + fd.write(vm.get_buff()) + fd.flush() + + cmd = Popen([bin_dex2jar, fdname], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname) + + pathclasses = fdname + "dex2jar/" + cmd = Popen(["unzip", fdname + "_dex2jar.jar", "-d", pathclasses], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname + "_dex2jar.jar") + + for root, dirs, files in os.walk(pathclasses, followlinks=True): + if files: + for f in files: + real_filename = root + if real_filename[-1] != "/": + real_filename += "/" + real_filename += f + + cmd = Popen([bin_jad, "-o", "-d", root, + real_filename], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + + for i in vm.get_classes(): + fname = pathclasses + "/" + i.get_name()[1:-1] + ".jad" + if os.path.isfile(fname): + self.classes[i.get_name()] = read(fname, binary=False) + else: + self.classes_failed.append(i.get_name()) + + rrmdir(pathclasses) + + def get_source_method(self, method): + class_name = method.get_class_name() + method_name = method.get_name() + + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + lexer.add_filter(MethodFilter(method_name=method_name)) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def display_source(self, method): + print(self.get_source_method(method)) + + def get_source_class(self, _class): + return self.classes[_class.get_name()] + + def get_all(self, class_name): + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def display_all(self, _class): + print(self.get_all(_class.get_name())) + + +class DecompilerDex2WineJad(object): + def __init__(self, + vm, + bin_dex2jar="dex2jar.sh", + bin_jad="jad", + tmp_dir="/tmp/"): + """ + Use JAD on wine + + .. deprecated:: 3.3.5 + JAD is not supported anymore by androguard! + + :param vm: + :param bin_dex2jar: + :param bin_jad: + :param tmp_dir: + """ + warnings.warn("JAD is deprecated since 3.3.5.", DeprecationWarning) + + self.classes = {} + self.classes_failed = [] + + pathtmp = tmp_dir + if not os.path.exists(pathtmp): + os.makedirs(pathtmp) + + fd, fdname = tempfile.mkstemp(dir=pathtmp) + with os.fdopen(fd, "w+b") as fd: + fd.write(vm.get_buff()) + fd.flush() + + cmd = Popen([bin_dex2jar, fdname], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname) + + pathclasses = fdname + "dex2jar/" + cmd = Popen(["unzip", fdname + "_dex2jar.jar", "-d", pathclasses], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname + "_dex2jar.jar") + + for root, dirs, files in os.walk(pathclasses, followlinks=True): + if files: + for f in files: + real_filename = root + if real_filename[-1] != "/": + real_filename += "/" + real_filename += f + + cmd = Popen(["wine", bin_jad, "-o", "-d", + root, real_filename], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + + for i in vm.get_classes(): + fname = pathclasses + "/" + i.get_name()[1:-1] + ".jad" + if os.path.isfile(fname): + self.classes[i.get_name()] = read(fname, binary=False) + else: + self.classes_failed.append(i.get_name()) + + rrmdir(pathclasses) + + def get_source_method(self, method): + class_name = method.get_class_name() + method_name = method.get_name() + + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + lexer.add_filter(MethodFilter(method_name=method_name)) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def display_source(self, method): + print(self.get_source_method(method)) + + def get_source_class(self, _class): + return self.classes[_class.get_name()] + + def get_all(self, class_name): + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def display_all(self, _class): + print(self.get_all(_class.get_name())) + + +class DecompilerDed(object): + def __init__(self, + vm, + bin_ded="ded.sh", + tmp_dir="/tmp/"): + """ + DED is an old, probably deprecated, decompiler + http://siis.cse.psu.edu/ded/ + + .. deprecated:: 3.3.5 + DED is not supported by androguard anymore! + + It is now replaced by DARE. + + :param vm: `DalvikVMFormat` object + :param bin_ded: + :param tmp_dir: + """ + warnings.warn("DED is deprecated since 3.3.5.", DeprecationWarning) + + self.classes = {} + self.classes_failed = [] + + pathtmp = tmp_dir + if not os.path.exists(pathtmp): + os.makedirs(pathtmp) + + fd, fdname = tempfile.mkstemp(dir=pathtmp) + with os.fdopen(fd, "w+b") as fd: + fd.write(vm.get_buff()) + fd.flush() + + dirname = tempfile.mkdtemp(prefix=fdname + "-src") + cmd = Popen([bin_ded, "-c", "-o", "-d", dirname, fdname], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname) + + findsrc = None + for root, dirs, files in os.walk(dirname + "/optimized-decompiled/"): + if dirs: + for f in dirs: + if f == "src": + findsrc = root + if findsrc[-1] != "/": + findsrc += "/" + findsrc += f + break + if findsrc is not None: + break + + for i in vm.get_classes(): + fname = findsrc + "/" + i.get_name()[1:-1] + ".java" + # print fname + if os.path.isfile(fname): + self.classes[i.get_name()] = read(fname, binary=False) + else: + self.classes_failed.append(i.get_name()) + + rrmdir(dirname) + + def get_source_method(self, method): + class_name = method.get_class_name() + method_name = method.get_name() + + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + lexer.add_filter(MethodFilter(method_name=method_name)) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def display_source(self, method): + print(self.get_source_method(method)) + + def get_all(self, class_name): + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def get_source_class(self, _class): + return self.classes[_class.get_name()] + + def display_all(self, _class): + print(self.get_all(_class.get_name())) + + +class DecompilerDex2Fernflower(object): + def __init__(self, + vm, + bin_dex2jar="dex2jar.sh", + bin_fernflower="fernflower.jar", + options_fernflower={"dgs": '1', + "asc": '1'}, + tmp_dir="/tmp/"): + """ + Decompiler interface for Fernflower + Fernflower is a java decompiler by IntelliJ: + https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine + + As it can not decompile Dalvik code directly, the DEX is first + decompiled as a JAR file. + + .. deprecated:: 3.3.5 + Fernflower is not supported anymore by androguard. + + + :param vm: `DalvikVMFormtat` object + :param bin_dex2jar: + :param bin_fernflower: + :param options_fernflower: + :param tmp_dir: + """ + warnings.warn("Fernflower is deprecated since 3.3.5.", DeprecationWarning) + + self.classes = {} + self.classes_failed = [] + + pathtmp = tmp_dir + if not os.path.exists(pathtmp): + os.makedirs(pathtmp) + + fd, fdname = tempfile.mkstemp(dir=pathtmp) + with os.fdopen(fd, "w+b") as fd: + fd.write(vm.get_buff()) + fd.flush() + + cmd = Popen([bin_dex2jar, fdname], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname) + + pathclasses = fdname + "dex2jar/" + cmd = Popen(["unzip", fdname + "_dex2jar.jar", "-d", pathclasses], + stdout=PIPE, + stderr=STDOUT) + stdout, stderr = cmd.communicate() + os.unlink(fdname + "_dex2jar.jar") + + for root, dirs, files in os.walk(pathclasses, followlinks=True): + if files: + for f in files: + real_filename = root + if real_filename[-1] != "/": + real_filename += "/" + real_filename += f + + l = ["java", "-jar", bin_fernflower] + + for option in options_fernflower: + l.append("-%s:%s" % + (option, options_fernflower[option])) + l.append(real_filename) + l.append(root) + + cmd = Popen(l, stdout=PIPE, stderr=STDOUT) + stdout, stderr = cmd.communicate() + + for i in vm.get_classes(): + fname = pathclasses + "/" + i.get_name()[1:-1] + ".java" + if os.path.isfile(fname): + self.classes[i.get_name()] = read(fname, binary=False) + else: + self.classes_failed.append(i.get_name()) + + rrmdir(pathclasses) + + def get_source_method(self, method): + class_name = method.get_class_name() + method_name = method.get_name() + + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + lexer.add_filter(MethodFilter(method_name=method_name)) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def display_source(self, method): + print(self.get_source_method(method)) + + def get_source_class(self, _class): + return self.classes[_class.get_name()] + + def get_all(self, class_name): + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def display_all(self, _class): + print(self.get_all(_class.get_name())) + + +class DecompilerDAD: + def __init__(self, vm, vmx): + """ + 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.dad.decompile.DvMachine` but + creates :class:`~androguard.decompiler.dad.decompile.DvClass` and + :class:`~androguard.decompiler.dad.decompile.DvMethod` on demand. + + :param androguard.core.bytecodes.dvm.DalvikVMFormat vm: `DalvikVMFormat` object + :param androguard.core.analysis.analysis.Analysis vmx: `Analysis` object + """ + self.vm = vm + self.vmx = vmx + + def get_source_method(self, m): + mx = self.vmx.get_method(m) + z = decompile.DvMethod(mx) + z.process() + return z.get_source() + + def get_ast_method(self, m): + mx = self.vmx.get_method(m) + z = decompile.DvMethod(mx) + z.process(doAST=True) + return z.get_ast() + + def display_source(self, m): + 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): + c = decompile.DvClass(_class, self.vmx) + c.process() + return c.get_source() + + def get_ast_class(self, _class): + c = decompile.DvClass(_class, self.vmx) + c.process(doAST=True) + return c.get_ast() + + def get_source_class_ext(self, _class): + c = decompile.DvClass(_class, self.vmx) + c.process() + + result = c.get_source_ext() + + return result + + def display_all(self, _class): + result = self.get_source_class(_class) + + lexer = get_lexer_by_name("java", stripall=True) + formatter = TerminalFormatter() + result = highlight(result, lexer, formatter) + print(result) + + def get_all(self, class_name): + pass + + +class DecompilerJADX: + def __init__(self, vm, vmx, jadx="jadx", keepfiles=False): + """ + DecompilerJADX is a wrapper for the jadx decompiler: + https://github.com/skylot/jadx + + Note, that jadx need to write files to your local disk. + + :param vm: `DalvikVMFormat` object + :param vmx: `Analysis` object + :param jadx: path to the jadx executable + :param keepfiles: set to True, if you like to keep temporary files + """ + self.vm = vm + self.vmx = vmx + # Dictionary to store classnames: sourcecode + self.classes = {} + + # Result directory: + # TODO need to remove the folder correctly! + tmpfolder = tempfile.mkdtemp() + + # We need to decompile the whole dex file, as we do not have an API... + # dump the dex file into a temp file + # THIS WILL NOT WORK ON WINDOWS!!! + # See https://stackoverflow.com/q/15169101/446140 + # Files can not be read, only if they specify temp file. But jadx does not do that... + # + # We need to trick jadx by setting the suffix, otherwise the file will not be loaded + with tempfile.NamedTemporaryFile(suffix=".dex") as tf: + tf.write(vm.get_buff()) + + cmd = [jadx, "-d", tmpfolder, "--escape-unicode", "--no-res", tf.name] + log.debug("Call JADX with the following cmdline: {}".format(" ".join(cmd))) + x = Popen(cmd, stdout=PIPE, stderr=PIPE) + stdout, _ = x.communicate() + # Looks like jadx does not use stderr + log.info("Output of JADX during decompilation") + for line in stdout.decode("UTF-8").splitlines(): + log.info(line) + + if x.returncode != 0: + rrmdir(tmpfolder) + raise JADXDecompilerError("Could not decompile file. Args: {}".format(" ".join(cmd))) + + # Next we parse the folder structure for later lookup + # We read the content of each file here, so we can later delete the folder + # We check here two ways, first we iterate all files and see if the class exists + # in androguard + # then, we iterate all classes in androguard and check if the file exists. + + andr_class_names = {x.get_name()[1:-1]: x for x in vm.get_classes()} + + # First, try to find classes for the files we have + for root, dirs, files in os.walk(tmpfolder): + for f in files: + if not f.endswith(".java"): + log.warning("found a file in jadx folder which is not a java file: {}".format(f)) + continue + # as the path begins always with `self.res` (hopefully), we remove that length + # also, all files should end with .java + path = os.path.join(root, f)[len(tmpfolder) + 1:-5] + path = path.replace(os.sep, "/") + + # Special care for files without package + # All files that have no package set, will get the + # package `defpackage` automatically + if path.startswith("defpackage"): + path = path[len("defpackage/"):] + + if path in andr_class_names: + with open(os.path.join(root, f), "rb") as fp: + # Need to convert back to the "full" classname + self.classes["L{};".format(path)] = fp.read().decode("UTF-8") + else: + log.warning("Found a class called {}, which is not found by androguard!".format(path)) + + # Next, try to find files for the classes we have + for cl in andr_class_names: + fname = self._find_class(cl, tmpfolder) + if fname: + if "L{};".format(cl) not in self.classes: + with open(fname, "rb") as fp: + # TODO need to snip inner class from file + self.classes["L{};".format(cl)] = fp.read().decode("UTF-8") + else: + # Class was already found... + pass + else: + log.warning("Found a class called {} which is not decompiled by jadx".format(cl)) + + # check if we have good matching + if len(self.classes) == len(andr_class_names): + log.debug("JADX looks good, we have the same number of classes: {}".format(len(self.classes))) + else: + log.info("Looks like JADX is missing some classes or " + "we decompiled too much: decompiled: {} vs androguard: {}".format(len(self.classes), + len(andr_class_names))) + + if not keepfiles: + rrmdir(tmpfolder) + + def _find_class(self, clname, basefolder): + # check if defpackage + if "/" not in clname: + # this is a defpackage class probably... + # Search first for defpackage, then search for requested string + res = self._find_class("defpackage/{}".format(clname), basefolder) + if res: + return res + + # We try to map inner classes here + if "$" in clname: + # sometimes the inner class get's an extra file, sometimes not... + # So we try all possibilities + for x in range(clname.count("$")): + tokens = clname.split("$", x + 1) + base = "$".join(tokens[:-1]) + res = self._find_class(base, basefolder) + if res: + return res + + # Check the whole supplied name + fname = os.path.join(basefolder, clname.replace("/", os.sep) + ".java") + if not os.path.isfile(fname): + return None + return fname + + def get_source_method(self, m): + """ + Return the Java source of a single method + + :param m: `EncodedMethod` Object + :return: + """ + class_name = m.get_class_name() + method_name = m.get_name() + + if class_name not in self.classes: + return "" + + lexer = get_lexer_by_name("java", stripall=True) + lexer.add_filter(MethodFilter(method_name=method_name)) + formatter = TerminalFormatter() + result = highlight(self.classes[class_name], lexer, formatter) + return result + + def get_source_class(self, _class): + """ + Return the Java source code of a whole class + + :param _class: `ClassDefItem` object, to get the source from + :return: + """ + if not _class.get_name() in self.classes: + return "" + return self.classes[_class.get_name()] + + def display_source(self, m): + """ + This method does the same as `get_source_method` + but prints the result directly to stdout + + :param m: `EncodedMethod` to print + :return: + """ + print(self.get_source_method(m)) + + def display_all(self, _class): + """ + ??? + + :param _class: + :return: + """ + pass + + def get_all(self, class_name): + """ + ??? + + :param class_name: + :return: + """ + pass diff --git a/androguard/gui/Banners.py b/androguard/gui/Banners.py new file mode 100644 index 0000000..5c9b639 --- /dev/null +++ b/androguard/gui/Banners.py @@ -0,0 +1,376 @@ +from __future__ import division + +from PyQt5 import QtGui, QtCore + +from androguard.gui.cemu import ConsoleEmulator, enum + + +class Banner(object): + def getOrientation(self): + NotImplementedError('method not implemented.') + + def getDesiredGeometry(self): + NotImplementedError('method not implemented.') + + def changeDisplay(self): + return + + def setViewMode(self, viewMode): + self.viewMode = viewMode + + def getPixmap(self): + return self.qpix + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + +Orientation = enum(Left=0, Bottom=1, Top=2) + + +class Observer(object): + def changeViewMode(self, viewMode): + self.setViewMode(viewMode) + + +class Banners(Observer): + BOTTOM_SEPARATOR = 5 + + def __init__(self): + self._Banners = [] + self.separatorBottom = 5 + self.separatorLeft = 5 + self.separatorTop = 5 + + def add(self, banner): + self._Banners.append(banner) + + def banners(self): + return self._Banners + + def getLeftOffset(self): + offset = 0 + for banner in self._Banners: + if banner.getOrientation() == Orientation.Left: + offset += banner.getDesiredGeometry() + offset += self.separatorLeft + + return offset + + def getBottomOffset(self): + offset = 0 + for banner in self._Banners: + if banner.getOrientation() == Orientation.Bottom: + offset += banner.getDesiredGeometry() + offset += self.separatorBottom + + return offset + + def getTopOffset(self): + offset = 0 + for banner in self._Banners: + if banner.getOrientation() == Orientation.Top: + offset += banner.getDesiredGeometry() + offset += self.separatorTop + + return offset + + def resize(self, width, height): + limit = self.getBottomOffset() + self.getTopOffset() + for banner in self._Banners: + # banners are not resizeable actually + if banner.getOrientation() == Orientation.Left: + banner.resize(banner.getDesiredGeometry(), height - limit + 4) # +4 , make to look nice + + if banner.getOrientation() == Orientation.Bottom: + banner.resize(width, banner.getDesiredGeometry()) + + if banner.getOrientation() == Orientation.Top: + banner.resize(width, banner.getDesiredGeometry()) + + def setViewMode(self, viewMode): + for banner in self._Banners: + banner.setViewMode(viewMode) + + def draw(self, qp, offsetLeft, offsetBottom, maxY): + + for banner in self._Banners: + if banner.getOrientation() == Orientation.Top: + banner.draw() + qp.drawPixmap(offsetLeft - 4, offsetBottom, banner.getPixmap()) + offsetBottom += banner.getDesiredGeometry() + self.separatorLeft + + for banner in self._Banners: + if banner.getOrientation() == Orientation.Left: + banner.draw() + qp.drawPixmap(offsetLeft, offsetBottom, banner.getPixmap()) + offsetLeft += banner.getDesiredGeometry() + self.separatorLeft + + # initial offset + all offsets from all banners. We are doing this because Y growns down + offsetBottom = maxY - self.getBottomOffset() + self.BOTTOM_SEPARATOR + + for banner in self._Banners: + if banner.getOrientation() == Orientation.Bottom: + banner.draw() + qp.drawPixmap(offsetLeft, offsetBottom, banner.getPixmap()) + offsetBottom += banner.getDesiredGeometry() + self.separatorBottom + + +class FileAddrBanner(Banner): + def __init__(self, themes, dataModel, viewMode): + self.width = 0 + self.height = 0 + self.dataModel = dataModel + self.viewMode = viewMode + self.qpix = self._getNewPixmap(self.width, self.height) + self.backgroundBrush = QtGui.QBrush(themes['background']) + + # text font + self.font = themes['font'] + + # font metrics. assume font is monospaced + self.font.setKerning(False) + self.font.setFixedPitch(True) + fm = QtGui.QFontMetrics(self.font) + self.fontWidth = fm.width('a') + self.fontHeight = fm.height() + + self.textPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 0, QtCore.Qt.SolidLine) + + def getOrientation(self): + return Orientation.Left + + def getDesiredGeometry(self): + return 10 * self.fontWidth + + def setViewMode(self, viewMode): + self.viewMode = viewMode + + def getPixmap(self): + return self.qpix + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + def draw(self): + qp = QtGui.QPainter() + + offset = self.viewMode.getPageOffset() + columns, rows = self.viewMode.getGeometry() + + qp.begin(self.qpix) + qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) + qp.setPen(self.textPen) + qp.setFont(self.font) + + for i in range(rows): + s = '{0:08x}'.format(offset) + qp.drawText(0 + 5, (i + 1) * self.fontHeight, s) + columns = self.viewMode.getColumnsbyRow(i) + offset += columns + + qp.end() + + def resize(self, width, height): + self.width = width + self.height = height + + self.qpix = self._getNewPixmap(self.width, self.height) + + +class BottomBanner(Banner): + def __init__(self, themes, dataModel, viewMode): + self.width = 0 + self.height = 0 + self.dataModel = dataModel + self.viewMode = viewMode + self.backgroundBrush = QtGui.QBrush(themes['background']) + + self.qpix = self._getNewPixmap(self.width, self.height) + + # text font + self.font = themes['font'] + + # font metrics. assume font is monospaced + self.font.setKerning(False) + self.font.setFixedPitch(True) + fm = QtGui.QFontMetrics(self.font) + self.fontWidth = fm.width('a') + self.fontHeight = fm.height() + + self.textPen = QtGui.QPen(themes['pen'], 0, QtCore.Qt.SolidLine) + + def getOrientation(self): + return Orientation.Bottom + + def getDesiredGeometry(self): + return 60 + + def setViewMode(self, viewMode): + self.viewMode = viewMode + + def draw(self): + qp = QtGui.QPainter() + qp.begin(self.qpix) + + qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) + qp.setPen(self.textPen) + qp.setFont(self.font) + + cemu = ConsoleEmulator(qp, self.height // self.fontHeight, self.width // self.fontWidth) + + dword = self.dataModel.getDWORD(self.viewMode.getCursorAbsolutePosition(), asString=True) + if dword is None: + dword = '----' + + sd = 'DWORD: {0}'.format(dword) + + pos = 'POS: {0:08x}'.format(self.viewMode.getCursorAbsolutePosition()) + + qword = self.dataModel.getQWORD(self.viewMode.getCursorAbsolutePosition(), asString=True) + if qword is None: + qword = '----' + sq = 'QWORD: {0}'.format(qword) + + byte = self.dataModel.getBYTE(self.viewMode.getCursorAbsolutePosition(), asString=True) + if byte is None: + byte = '-' + + sb = 'BYTE: {0}'.format(byte) + + cemu.writeAt(1, 0, pos) + cemu.writeAt(17, 0, sd) + cemu.writeAt(35, 0, sq) + cemu.writeAt(62, 0, sb) + + qp.drawLine(15 * self.fontWidth + 5, 0, 15 * self.fontWidth + 5, 50) + qp.drawLine(33 * self.fontWidth + 5, 0, 33 * self.fontWidth + 5, 50) + qp.drawLine(59 * self.fontWidth + 5, 0, 59 * self.fontWidth + 5, 50) + qp.drawLine(71 * self.fontWidth + 5, 0, 71 * self.fontWidth + 5, 50) + + if self.viewMode.selector.getCurrentSelection(): + u, v = self.viewMode.selector.getCurrentSelection() + if u != v: + pen = QtGui.QPen(QtGui.QColor(51, 153, 255), 0, QtCore.Qt.SolidLine) + qp.setPen(pen) + + cemu.writeAt(73, 0, 'Selection: ') + cemu.write('{0:x}:{1}'.format(u, v - u)) + else: + pen = QtGui.QPen(QtGui.QColor(128, 128, 128), 0, QtCore.Qt.SolidLine) + qp.setPen(pen) + + cemu.writeAt(73, 0, '') + + """ + qp.drawLine(self.fontWidth*(len(pos) + 1) + 15, 0, self.fontWidth*(len(pos) + 1) + 15, 50) + qp.drawLine(self.fontWidth*(len(pos + sd) + 1) + 3*15, 0, self.fontWidth*(len(pos + sd) + 1) + 3*15, 50) + qp.drawLine(self.fontWidth*(len(pos + sd + sq) + 1) + 5*15, 0, self.fontWidth*(len(pos + sd + sq) + 1) + 5*15, 50) + qp.drawLine(self.fontWidth*(len(pos + sd + sq + sb) + 1) + 8*15, 0, self.fontWidth*(len(pos + sd + sq + sb) + 1) + 8*15, 50) + """ + # qp.drawLine(270, 0, 270, 50) + # qp.drawLine(480, 0, 480, 50) + # qp.drawLine(570, 0, 570, 50) + """ + # position + qp.drawText(0 + 5, self.fontHeight, pos) + # separator + qp.drawLine(120, 0, 120, 50) + + # dword + qp.drawText(130 + 5, self.fontHeight, sd) + # separator + qp.drawLine(270, 0, 270, 50) + + # qword + qp.drawText(280 + 5, self.fontHeight, sq) + # separator + qp.drawLine(480, 0, 480, 50) + + # byte + qp.drawText(490 + 5, self.fontHeight, sb) + # separator + qp.drawLine(570, 0, 570, 50) + """ + + qp.end() + + pass + + def getPixmap(self): + return self.qpix + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + def resize(self, width, height): + self.width = width + self.height = height + self.qpix = self._getNewPixmap(self.width, self.height) + + +class TopBanner(Banner): + def __init__(self, themes, dataModel, viewMode): + self.width = 0 + self.height = 0 + self.dataModel = dataModel + self.viewMode = viewMode + + self.qpix = self._getNewPixmap(self.width, self.height) + self.backgroundBrush = QtGui.QBrush(themes['background']) + + # text font + self.font = themes['font'] + + # font metrics. assume font is monospaced + self.font.setKerning(False) + self.font.setFixedPitch(True) + fm = QtGui.QFontMetrics(self.font) + self.fontWidth = fm.width('a') + self.fontHeight = fm.height() + + self.textPen = QtGui.QPen(themes['pen'], 0, QtCore.Qt.SolidLine) + + def getOrientation(self): + return Orientation.Top + + def getDesiredGeometry(self): + return 26 # 22 + + def setViewMode(self, viewMode): + self.viewMode = viewMode + + def draw(self): + # i don't really like this in terms of arhitecture. We have + # artificially introduced getHeaderInfo() in Views. Then we had one top + # banner implemented per plugin. I will think to a better solution + + qp = QtGui.QPainter() + qp.begin(self.qpix) + + qp.fillRect(0, 0, self.width, self.height, self.backgroundBrush) + qp.setPen(self.textPen) + qp.setFont(self.font) + + cemu = ConsoleEmulator(qp, self.height // self.fontHeight, self.width // self.fontWidth) + + cemu.writeAt(1, 0, 'FileAddr') + + offset = 11 + + text = self.viewMode.getHeaderInfo() + + cemu.writeAt(offset, 0, text) + + qp.end() + + def getPixmap(self): + return self.qpix + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + def resize(self, width, height): + self.width = width + self.height = height + self.qpix = self._getNewPixmap(self.width, self.height) diff --git a/androguard/gui/BinViewMode.py b/androguard/gui/BinViewMode.py new file mode 100644 index 0000000..b651285 --- /dev/null +++ b/androguard/gui/BinViewMode.py @@ -0,0 +1,614 @@ +from __future__ import division + +import string +from time import time + +from PyQt5 import QtGui, QtCore +from builtins import str + +from androguard.gui.TextDecorators import RangePen +from androguard.gui.ViewMode import ViewMode +from androguard.gui.cemu import ConsoleEmulator, Directions +from androguard.gui import TextSelection + +import logging +log = logging.getLogger("androguard.gui") + + +class BinViewMode(ViewMode): + def __init__(self, themes, width, height, data, cursor, widget=None): + super(BinViewMode, self).__init__() + + self.dataModel = data + self.addHandler(self.dataModel) + self.themes = themes + + self.width = width + self.height = height + + self.cursor = cursor + self.widget = widget + + self.refresh = True + + self.selector = TextSelection.DefaultSelection(themes, self) + + # background brush + self.backgroundBrush = QtGui.QBrush(self.themes['background']) + + self.font = self.themes['font'] + + # font metrics. assume font is monospaced + self.font.setKerning(False) + self.font.setFixedPitch(True) + fm = QtGui.QFontMetrics(self.font) + self._fontWidth = fm.width('a') + self._fontHeight = fm.height() + + self.textPen = QtGui.QPen(self.themes['pen'], 0, QtCore.Qt.SolidLine) + self.resize(width, height) + + self.Paints = {} + self.newPix = None + self.Ops = [] + + @property + def fontWidth(self): + return self._fontWidth + + @property + def fontHeight(self): + return self._fontHeight + + def startCaching(self): + # cache + self.cache() + # t = threading.Thread(target=self.cache) + # t.start() + + def isInCache(self, page): + if page in self.Paints: + return True + + def cache(self): + + for i in [1, 2]: + # pix = self._getNewPixmap(self.width, self.height) + if not self.isInCache(self.dataModel.getPageOffset(i)): + pix = QtGui.QImage(self.width, self.height, QtGui.QImage.Format_ARGB32) + self.scrollPages(1, cachePix=pix, pageOffset=i) + self.Paints[self.dataModel.getPageOffset(i)] = pix + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + def setTransformationEngine(self, engine): + self.transformationEngine = engine + self.original_textdecorator = engine + + def computeTextArea(self): + self.COLUMNS = self.width // self.fontWidth + self.ROWS = self.height // self.fontHeight + self.notify(self.ROWS, self.COLUMNS) + + def drawAdditionals(self): + self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER) + qp = QtGui.QPainter() + qp.begin(self.newPix) + qp.drawPixmap(0, 0, self.qpix) + + # self.transformationEngine.decorateText() + + # highlight selected text + self.selector.highlightText() + + # draw other selections + self.selector.drawSelections(qp) + + # draw our cursor + self.drawCursor(qp) + qp.end() + + def getPageOffset(self): + return self.dataModel.getOffset() + + def getGeometry(self): + return self.COLUMNS, self.ROWS + + def getColumnsbyRow(self, row): + return self.COLUMNS + + def getDataModel(self): + return self.dataModel + + def startSelection(self): + self.selector.startSelection() + + def stopSelection(self): + self.selector.stopSelection() + + def draw(self, refresh=False, row=0, howMany=0): + if self.dataModel.getOffset() in self.Paints: + self.refresh = False + self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()]) + self.drawAdditionals() + return + + if self.refresh or refresh: + qp = QtGui.QPainter() + qp.begin(self.qpix) + start = time() + if not howMany: + howMany = self.ROWS + + self.drawTextMode(qp, row=row, howMany=howMany) + end = time() - start + log.debug('draw Time ' + str(end)) + self.refresh = False + qp.end() + + # self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix) + self.drawAdditionals() + + def draw2(self, qp, refresh=False): + if self.refresh or refresh: + start = time() + self.drawTextMode(qp, howMany=self.ROWS) + end = time() - start + log.debug('draw2 Time ' + str(end)) + qp = QtGui.QPainter() + qp.begin(self.qpix) + + self.drawAdditionals() + + def drawCursor(self, qp): + cursorX, cursorY = self.cursor.getPosition() + qp.setBrush(self.themes['background_cursor']) + + if self.isInEditMode(): + qp.setBrush(QtGui.QColor(255, 102, 179)) + + qp.setOpacity(0.8) + qp.drawRect(cursorX * self.fontWidth, cursorY * self.fontHeight, self.fontWidth, self.fontHeight + 2) + qp.setOpacity(1) + + def scroll_h(self, dx): + self.qpix.scroll(dx * self.fontWidth, 0, self.qpix.rect()) + + qp = QtGui.QPainter() + + qp.begin(self.qpix) + qp.setFont(self.font) + qp.setPen(self.textPen) + + factor = abs(dx) + if dx < 0: + qp.fillRect((self.COLUMNS - 1 * factor) * self.fontWidth, 0, factor * self.fontWidth, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) + if dx > 0: + qp.fillRect(0, 0, factor * self.fontWidth, self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) + + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) + + page = self.transformationEngine.decorate() + # scriem pe fiecare coloana in parte + for column in range(factor): + # fiecare caracter de pe coloana + for i in range(self.ROWS): + + if dx < 0: + # cu (column) selectam coloana + idx = (i + 1) * self.COLUMNS - (column + 1) + if dx > 0: + idx = i * self.COLUMNS + column + + # c = self.dataModel.getDisplayablePage()[idx] + c = self.transformationEngine.getChar(idx) + qp.setPen(self.transformationEngine.choosePen(idx)) + + if self.transformationEngine.chooseBrush(idx) is not None: + qp.setBackgroundMode(1) + qp.setBackground(self.transformationEngine.chooseBrush(idx)) + + + # self.decorate(qp, (idx, c), self.dataModel.getDisplayablePage()) + if dx < 0: + cemu.writeAt(self.COLUMNS - (column + 1), i, self.cp437(c)) + + if dx > 0: + cemu.writeAt(column, i, self.cp437(c)) + + qp.setBackgroundMode(0) + qp.end() + + def scroll_v(self, dy, cachePix=None, pageOffset=None): + start = time() + + if not cachePix: + self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) + + qp = QtGui.QPainter() + + if cachePix: + qp.begin(cachePix) + else: + qp.begin(self.qpix) + + # self.font.setStyleHint(QtGui.QFont.AnyStyle, QtGui.QFont.PreferAntialias) + qp.setFont(self.font) + qp.setPen(self.textPen) + + # TODO: while the characters are not all the same hight, when scrolling up on y axis, trails remains. We should also erase a Rect with SPACER in hight + # same problem when scrolling up. + factor = abs(dy) + if dy < 0: + qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.COLUMNS, + factor * self.fontHeight + self.SPACER, self.backgroundBrush) + + if dy > 0: + qp.fillRect(0, 0, self.fontWidth * self.COLUMNS, factor * self.fontHeight, self.backgroundBrush) + + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) + + # page = self.dataModel.getDisplayablePage() + page = self.transformationEngine.decorate(pageOffset=pageOffset) + + lastPen = None + lastBrush = None + + # cate linii desenam + k = time() + for row in range(factor): + # desenam caracterele + # cemu.writeAt(0, row, str(page[row*self.COLUMNS:row*self.COLUMNS+self.COLUMNS])) + + for i in range(self.COLUMNS): + + if dy < 0: + idx = (self.ROWS - (row + 1)) * self.COLUMNS + i + + if dy > 0: + idx = i + (self.COLUMNS * row) + + c = self.transformationEngine.getChar(idx) + + nextPen = self.transformationEngine.choosePen(idx) + if nextPen != lastPen: + qp.setPen(nextPen) + lastPen = nextPen + + qp.setBackgroundMode(0) + nextBrush = self.transformationEngine.chooseBrush(idx) + if nextBrush is not None: + qp.setBackgroundMode(1) + + if nextBrush != lastBrush: + qp.setBackground(nextBrush) + lastBrush = nextBrush + + if dy < 0: + cemu.writeAt_c(i, self.ROWS - 1 - row, self.cp437(c)) + + if dy > 0: + cemu.writeAt_c(i, row, self.cp437(c)) + + # TODO: text decorator is taking too much! print time() - k + qp.end() + + end = time() - start + + def scroll(self, dx, dy, cachePix=None, pageOffset=None): + if not cachePix: + if self.dataModel.getOffset() in self.Paints: + self.draw() + return + + if dx != 0: + if self.dataModel.inLimits((self.dataModel.getOffset() - dx)): + self.dataModel.slide(-dx) + self.scroll_h(dx) + + if dy != 0: + if self.dataModel.inLimits((self.dataModel.getOffset() - dy * self.COLUMNS)): + self.dataModel.slide(-dy * self.COLUMNS) + # import time + # k = time.time() + self.scroll_v(dy, cachePix, pageOffset) + # print time.time() - k + else: + if dy <= 0: + pass + # self.dataModel.slideToLastPage() + else: + self.dataModel.slideToFirstPage() + + if not cachePix: + self.draw(refresh=True) + + if not cachePix: + self.draw() + + def scrollPages(self, number, cachePix=None, pageOffset=None): + self.scroll(0, -number * self.ROWS, cachePix=cachePix, pageOffset=pageOffset) + + def getPixmap(self): + for t in self.Ops: + if len(t) == 1: + t[0]() + + else: + t[0](*t[1:]) + + self.Ops = [] + + if not self.newPix: + self.draw() + + return self.newPix + + def resize(self, width, height): + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight + self.computeTextArea() + self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) + self.refresh = True + + def drawTextMode(self, qp, row=0, howMany=1): + # draw background + qp.fillRect(0, row * self.fontHeight, self.COLUMNS * self.fontWidth, howMany * self.fontHeight + self.SPACER, + self.backgroundBrush) + + # set text pen&font + qp.setFont(self.font) + qp.setPen(self.textPen) + + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) + + self.page = self.transformationEngine.decorate() + + cemu.gotoXY(0, row) + + for i, c in enumerate(self.getDisplayablePage()[row * self.COLUMNS:(row + howMany) * self.COLUMNS]): + x = i + row * self.COLUMNS + + c = self.transformationEngine.getChar(x) + + qp.setPen(self.transformationEngine.choosePen(x)) + + if self.transformationEngine.chooseBrush(x) is not None: + qp.setBackgroundMode(1) + qp.setBackground(self.transformationEngine.chooseBrush(x)) + + cemu.write(self.cp437(c)) + qp.setBackgroundMode(0) + + def getCursorAbsolutePosition(self): + x, y = self.cursor.getPosition() + return self.dataModel.getOffset() + y * self.COLUMNS + x + + def moveCursor(self, direction): + cursorX, cursorY = self.cursor.getPosition() + + if direction == Directions.Left: + if cursorX == 0: + if cursorY == 0: + self.scroll(1, 0) + else: + self.cursor.moveAbsolute(self.COLUMNS - 1, cursorY - 1) + else: + self.cursor.move(-1, 0) + + if direction == Directions.Right: + if self.getCursorAbsolutePosition() + 1 >= self.dataModel.getDataSize(): + return + + if cursorX == self.COLUMNS - 1: + if cursorY == self.ROWS - 1: + self.scroll(-1, 0) + else: + self.cursor.moveAbsolute(0, cursorY + 1) + else: + self.cursor.move(1, 0) + + if direction == Directions.Down: + if self.getCursorAbsolutePosition() + self.COLUMNS >= self.dataModel.getDataSize(): + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + self.cursor.moveAbsolute(x, y) + return + + if cursorY == self.ROWS - 1: + self.scroll(0, -1) + else: + self.cursor.move(0, 1) + + if direction == Directions.Up: + if cursorY == 0: + self.scroll(0, 1) + else: + self.cursor.move(0, -1) + + if direction == Directions.End: + if self.dataModel.getDataSize() < self.getCursorAbsolutePosition() + self.ROWS * self.COLUMNS: + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + self.cursor.moveAbsolute(x, y) + + else: + self.cursor.moveAbsolute(self.COLUMNS - 1, self.ROWS - 1) + + if direction == Directions.Home: + self.cursor.moveAbsolute(0, 0) + + if direction == Directions.CtrlHome: + self.dataModel.slideToFirstPage() + self.draw(refresh=True) + self.cursor.moveAbsolute(0, 0) + + if direction == Directions.CtrlEnd: + self.dataModel.slideToLastPage() + self.draw(refresh=True) + self.moveCursor(Directions.End) + + def keyFilter(self): + return [ + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_End), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Home), + + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_End), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageDown), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageUp) + + ] + + def anon(self, dx, dy): + self.scroll(dx, dy) + + # scroll modifies datamodel offset, so we must do scroll and cursor + # operations toghether + + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + if self.getCursorAbsolutePosition() >= self.dataModel.getDataSize(): + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + self.cursor.moveAbsolute(x, y) + + # we call draw() again because it was called before by scroll() + # and the cursor is already painted but it's not in correct position + # kinda hack, don't really like it + self.draw() + + def handleEditMode(self, modifiers, key, event): + if key in range(0, 256): + offs = self.getCursorOffsetInPage() + + self.dataModel.setData_b(self.dataModel.getOffset() + offs, str(event.text())) + + z = self.dataModel.getOffset() + offs + # TODO: sa nu se repete, tre original_transformengine + self.transformationEngine = RangePen(self.original_textdecorator, z, z + 0, + QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), + ignoreHighlights=True) + + self.moveCursor(Directions.Right) + + x, y = self.cursor.getPosition() + + self.draw(refresh=True, row=y, howMany=1) + + def handleKeyEvent(self, modifiers, key, event=None): + if event.type() == QtCore.QEvent.KeyRelease: + if key == QtCore.Qt.Key_Shift: + self.stopSelection() + return True + + if event.type() == QtCore.QEvent.KeyPress: + if modifiers & QtCore.Qt.ShiftModifier: + keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, + QtCore.Qt.Key_End, QtCore.Qt.Key_Home] + if key in keys: + self.startSelection() + + if modifiers & QtCore.Qt.ControlModifier: + if key == QtCore.Qt.Key_Right: + self.addop((self.anon, -1, 0)) + + if key == QtCore.Qt.Key_Left: + self.addop((self.scroll, 1, 0)) + + if key == QtCore.Qt.Key_Down: + self.addop((self.anon, 0, -1)) + + if key == QtCore.Qt.Key_Up: + self.addop((self.scroll, 0, 1)) + + if key == QtCore.Qt.Key_End: + self.moveCursor(Directions.CtrlEnd) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Home: + self.moveCursor(Directions.CtrlHome) + self.addop((self.draw,)) + + return True + + else: # elif modifiers == QtCore.Qt.NoModifier or modifiers == QtCore.Qt.ShiftModifier:: + + if key == QtCore.Qt.Key_Escape: + self.selector.resetSelections() + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Left: + self.moveCursor(Directions.Left) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Right: + self.moveCursor(Directions.Right) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Down: + self.moveCursor(Directions.Down) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_End: + self.moveCursor(Directions.End) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Home: + self.moveCursor(Directions.Home) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Up: + self.moveCursor(Directions.Up) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_PageDown: + self.addop((self.scrollPages, 1)) + + if key == QtCore.Qt.Key_PageUp: + self.addop((self.scrollPages, -1)) + + if self.isInEditMode(): + self.handleEditMode(modifiers, key, event) + + return True + + return False + + def isEditable(self): + return True + + def setEditMode(self, mode): + super(BinViewMode, self).setEditMode(mode) + + letters = string.ascii_letters + string.digits + ' .;\':;=\"?-!()/\\_' + + # disable/enable shortcuts + if not mode: + self.transformationEngine = self.original_textdecorator + self.transformationEngine.reset() + self.draw(refresh=True) + + """ + def handleKeyPressEvent(self, modifier, key): + if modifier == QtCore.Qt.ShiftModifier: + #self.startSelection() + return True + + def handleKeyReleaseEvent(self, modifier, key): + if modifier == QtCore.Qt.ShiftModifier: + self.stopSelection() + return True + """ + + def addop(self, t): + self.Ops.append(t) + + def getHeaderInfo(self): + return 'Binary' diff --git a/androguard/gui/DataModel.py b/androguard/gui/DataModel.py new file mode 100644 index 0000000..c7a96d2 --- /dev/null +++ b/androguard/gui/DataModel.py @@ -0,0 +1,371 @@ +from __future__ import division + +import os +import mmap + +from androguard.gui.BinViewMode import BinViewMode +from androguard.gui.HexViewMode import HexViewMode +from androguard.gui.DisasmViewMode import DisasmViewMode +from androguard.gui.SourceViewMode import SourceViewMode + +import logging +log = logging.getLogger("androguard.gui") + + +class Observer(object): + def update_geometry(self): + NotImplementedError('method not implemented.') + + +class DataModel(Observer): + def __init__(self, data): + self._dataOffset = 0 + self.rows = self.cols = 0 + self.data = data + self._lastOffset = 0 + self._dirty = False + + @property + def dataOffset(self): + return self._dataOffset + + @dataOffset.setter + def dataOffset(self, value): + log.debug("DATA OFFSET %s", value) + self._lastOffset = self._dataOffset + self._dataOffset = value + + def getLastOffset(self): + return self._lastOffset + + def inLimits(self, x): + if 0 <= x < len(self.data): + return True + + return False + + def slide(self, off): + if self.inLimits(self.dataOffset + off): + self.dataOffset += off + + def goTo(self, off): + if self.inLimits(off): + self.dataOffset = off + + def offsetInPage(self, off): + if self.dataOffset <= off <= self.dataOffset + self.rows * self.cols: + return True + + return False + + def update_geometry(self, rows, cols): + self.rows = rows + self.cols = cols + + def slideLine(self, factor): + self.slide(factor * self.cols) + + def slidePage(self, factor): + self.slide(factor * self.cols * self.rows) + + def slideToLastPage(self): + if self.rows * self.cols > len(self.data): + return + + self.dataOffset = len(self.data) - self.cols * self.rows + + def slideToFirstPage(self): + self.dataOffset = 0 + + def getXYInPage(self, off): + off -= self.dataOffset + x, y = off // self.cols, off % self.cols + return x, y + + def getPageOffset(self, page): + return self.getOffset() + page * self.rows * self.cols + + def getQWORD(self, offset, asString=False): + if offset + 8 > len(self.data): + return None + + b = bytearray(self.data[offset:offset + 8]) + + d = ((b[7] << 56) | (b[6] << 48) | (b[5] << 40) | (b[4] << 32) | (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | ( + b[0])) & 0xFFFFFFFFFFFFFFFF + + if not asString: + return d + + s = '{0:016X}'.format(d) + + return s + + def getDWORD(self, offset, asString=False): + if offset + 4 >= len(self.data): + return None + + b = bytearray(self.data[offset:offset + 4]) + + d = ((b[3] << 24) | (b[2] << 16) | (b[1] << 8) | (b[0])) & 0xFFFFFFFF + + if not asString: + return d + + s = '{0:08X}'.format(d) + + return s + + def getWORD(self, offset, asString=False): + if offset + 2 > len(self.data): + return None + + b = bytearray(self.data[offset:offset + 2]) + + d = ((b[1] << 8) | (b[0])) & 0xFFFF + + if not asString: + return d + + s = '{0:04X}'.format(d) + + return s + + def getBYTE(self, offset, asString=False): + if offset + 1 > len(self.data): + return None + + b = bytearray(self.data[offset:offset + 1]) + + d = (b[0]) & 0xFF + + if not asString: + return d + + s = '{0:02X}'.format(d) + + return s + + def getChar(self, offset): + if offset < 0: + return None + + if offset >= len(self.data): + return None + + return self.data[offset] + + def getStream(self, start, end): + return bytearray(self.data[start:end]) + + def getOffset(self): + return self.dataOffset + + def getData(self): + return self.data + + def isDirty(self): + return self._dirty + + def setData_b(self, offset, b): + if self.inLimits(offset): + self.data[offset] = b + self._dirty = True + return True + + return False + + def setData_s(self, u, v, s): + self.data[u:v] = s + self._dirty = True + return True + + def getDataSize(self): + return len(self.data) + + @property + def source(self): + return '' + + def flush(self): + raise NotImplementedError('method not implemented.') + + def write(self): + raise NotImplementedError('method not implemented.') + + def close(self): + pass + + def size(self): + pass + + +class FileDataModel(DataModel): + def __init__(self, filename): + self._filename = filename + + self._f = open(filename, "rb") + + # memory-map the file, size 0 means whole file + self._mapped = mmap.mmap(self._f.fileno(), 0, access=mmap.ACCESS_COPY) + + super(FileDataModel, self).__init__(self._mapped) + + @property + def source(self): + return self._filename + + def flush(self): + self._f.close() + # open for writing + try: + self._f = open(self._filename, "r+b") + except OSError as e: + log.exception("File could not be opened for writing: %s", e) + # could not open for writing + return False + self._f.write(self._mapped) + + return True + + def close(self): + self._mapped.close() + self._f.close() + + def write(self, offset, stream): + self._mapped.seek(offset) + self._mapped.write(stream) + + def size(self): + return os.path.getsize(self._filename) + + +import io + + +class MyStringIO(io.StringIO, object): + def __init__(self, data): + self.raw = data + super(MyStringIO, self).__init__(data) + + def __len__(self): + return len(self.raw) + + +class MyByte(bytearray): + def __init__(self, data): + self.raw = data + self._pointer = 0 + super(MyByte, self).__init__(data) + + def __len__(self): + return len(self.raw) + + def seek(self, a, b=0): + if b == 0: + self._pointer = a + elif b == 1: + self._pointer += a + elif b == 2: + self._pointer = len(self.raw) - b + else: + return + + return + + def read(self, size): + if self._pointer + size > len(self.raw): + return '' + + data = str(self.raw[self._pointer:self._pointer + size]) + self._pointer += size + return data + + +class BufferDataModel(DataModel): + def __init__(self, data, name): + self._filename = name + self.raw = data + super(BufferDataModel, self).__init__(data) + + @property + def source(self): + return self._filename + + def flush(self): + return False + + def close(self): + return + + # def write(self, offset, stream): + # self._mapped.seek(offset) + # self._mapped.write(stream) + + def size(self): + return len(self.data) + + +class ApkModel(DataModel): + def __init__(self, apkobj): + self._filename = str(apkobj) + self.raw = apkobj.get_raw() + self.data = MyByte(self.raw) + + super(ApkModel, self).__init__(self.data) + + def GetViews(self): + return [BinViewMode, HexViewMode] + + @property + def source(self): + return self._filename + + def flush(self): + return False + + def close(self): + return + + def size(self): + return len(self.data) + + +class DexClassModel(DataModel): + def __init__(self, current_class, dx): + """ + + :param current_class: a ClassDefItem + :param dx: a Analysis object + """ + self.current_class = current_class + self._filename = current_class.get_name() + self.dx = dx + + raw = self.GetRawData(current_class) + super(DexClassModel, self).__init__(raw) + + def GetRawData(self, current_class): + buff = bytearray() + self.ins_size = 0 + for method in current_class.get_methods(): + for ins in method.get_instructions(): + buff += ins.get_raw() + self.ins_size += ins.get_length() * 2 + return buff + + def GetViews(self): + return [DisasmViewMode, SourceViewMode, HexViewMode] + + @property + def source(self): + return self._filename + + def flush(self): + return False + + def close(self): + return + + def getDataSize(self): + return self.ins_size diff --git a/androguard/gui/DisasmViewMode.py b/androguard/gui/DisasmViewMode.py new file mode 100644 index 0000000..67ecbb9 --- /dev/null +++ b/androguard/gui/DisasmViewMode.py @@ -0,0 +1,1011 @@ +from __future__ import division + +from PyQt5 import QtGui, QtCore +from builtins import hex +from builtins import range + +from androguard.core.bytecodes import dvm +from androguard.gui import TextSelection +from androguard.gui.ViewMode import ViewMode +from androguard.gui.cemu import ConsoleEmulator, Directions + +import logging +log = logging.getLogger("androguard.gui") + +MNEMONIC_COLUMN = 30 +MNEMONIC_WIDTH = 30 + + +class InstructionView(object): + def __init__(self, ins): + self.ins = ins + self._indexTable = [] + self._Operands = [] + self._Comments = [] + self.loaded = False + + def AddComment(self, cmt): + self._Comments.append(cmt) + + def Load(self): + if self.loaded: + return + + H = self.get_hex().split(' ') + for i, h in enumerate(H): + self._indexTable += [(i * 3, len(h), h)] + + self._indexTable += [(MNEMONIC_COLUMN, len(self.get_name()), self.get_name())] + + i = 0 + offset = 0 + for operand in self.ins.get_operands(0): + value = None + if operand[0] == dvm.OPERAND_REGISTER: + value = [operand[0], "v%d" % operand[1]] + + elif operand[0] == dvm.OPERAND_LITERAL: + value = [operand[0], "%d" % operand[1]] + + elif operand[0] == dvm.OPERAND_RAW: + value = [operand[0], "%s" % operand[1]] + + elif operand[0] == dvm.OPERAND_OFFSET: + value = [operand[0], "%d" % operand[1]] + + elif operand[0] & dvm.OPERAND_KIND: + if operand[0] == (dvm.OPERAND_KIND + dvm.KIND_STRING): + value = [operand[0], "%s" % operand[2]] + + elif operand[0] == (dvm.OPERAND_KIND + dvm.KIND_METH): + value = [operand[0], "%s" % operand[2]] + + elif operand[0] == (dvm.OPERAND_KIND + dvm.KIND_FIELD): + value = [operand[0], "%s" % operand[2]] + + elif operand[0] == (dvm.OPERAND_KIND + dvm.KIND_TYPE): + value = [operand[0], "%s" % operand[2]] + + if value: + if offset > 0: + offset += 1 + + t = (offset + MNEMONIC_COLUMN + MNEMONIC_WIDTH, len(value[1]), value[1]) + self._indexTable += [t] + self._Operands.append(value) + offset += len(value[1]) + + self.loaded = True + + def get_hex(self): + return self.ins.get_hex() + + def get_length(self): + return self.ins.get_length() * 2 + + def get_name(self): + return self.ins.get_name() + + def get_operands(self, idx=-1): + return self._Operands + + def get_symbol(self): + return None + + def get_output(self): + return self.ins.get_output() + + def tokens(self): + return self._indexTable + + def get_comments(self): + return self._Comments + + @property + def indexTable(self): + return self._indexTable + + def getSelectionWidth(self, cx): + for i, t in enumerate(self.indexTable): + idx, length, value = t + if cx == idx: + return length + + return 0 + + def getEndCursor(self): + idx, length, value = self.indexTable[-1] + return idx + + def getNearestCursor(self, cx): + if cx > self.getEndCursor(): + return self.getEndCursor() + + i = len(self.indexTable) - 1 + while i > 0: + idx, length, value = self.indexTable[i] + if cx >= idx: + return idx + i -= 1 + + return 0 + + def getNextCursor(self, cx, direction=''): + for i, t in enumerate(self.indexTable): + idx, length, value = t + if cx == idx: + break + + if direction == Directions.Right: + if i < len(self.indexTable) - 1: + idx, length, value = self.indexTable[i + 1] + else: + return 0, 1 + + if direction == Directions.Left: + if i > 0: + idx, length, value = self.indexTable[i - 1] + else: + return 0, -1 + + return idx, 0 + + def getSelectedToken(self, cx): + for i, t in enumerate(self._indexTable): + idx, length, value = t + if cx == idx: + return t + + return None, None, None + + +class DisasmViewMode(ViewMode): + def __init__(self, themes, width, height, data, cursor, widget=None): + super(DisasmViewMode, self).__init__() + + self.themes = themes + + self.dataModel = data + self.addHandler(self.dataModel) + + self.width = width + self.height = height + + self.cursor = cursor + self.widget = widget + + self.refresh = True + + # background brush + self.backgroundBrush = QtGui.QBrush(self.themes['background']) + + # text font + self.font = themes['font'] + + # font metrics. assume font is monospaced + self.font.setKerning(False) + self.font.setFixedPitch(True) + fm = QtGui.QFontMetrics(self.font) + self._fontWidth = fm.width('a') + self._fontHeight = fm.height() + + self.FlowHistory = [] + self.CACHE_OPCODES = [] + self.CACHE_IDX_OPCODES = {} + self.CACHE_IDX_OPCODES_OFF = {} + + self.OPCODES = [] + + vm_analysis = self.dataModel.dx + + methods = [i for i in self.dataModel.current_class.get_methods()] + log.debug(methods) + methods = sorted(methods, key=lambda x: x.get_address(), reverse=True) + + offset = 0 + cnt = 0 + for method in methods: + mx = vm_analysis.get_method(method) + for DVMBasicMethodBlockInstruction in method.get_instructions(): + # for DVMBasicMethodBlock in mx.basic_blocks.gets(): + # for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions(): + ins = InstructionView(DVMBasicMethodBlockInstruction) + self.CACHE_OPCODES.append(ins) + self.CACHE_IDX_OPCODES[offset] = ins + self.CACHE_IDX_OPCODES_OFF[offset] = cnt + offset += ins.get_length() + cnt += 1 + + self.max_offset = offset + + log.debug(sorted(self.CACHE_IDX_OPCODES_OFF.keys())) + + self.textPen = QtGui.QPen(self.themes['pen'], 0, QtCore.Qt.SolidLine) + self.resize(width, height) + + self.Paints = {} + + self.Ops = [] + self.newPix = None + + self.selector = TextSelection.DisasmSelection(themes, self) + + def GetLengthOpcodes(self): + length = 0 + for i in self.CACHE_OPCODES: + length += i.get_length() + return length + + def FeedOpcodes(self, cnt): + log.debug('FEED %s', cnt) + self.OPCODES = [] + for i in range(0, min(cnt, len(self.CACHE_OPCODES))): + ins = self.CACHE_OPCODES[i] + ins.Load() + self.OPCODES.append(ins) + + @property + def fontWidth(self): + return self._fontWidth + + @property + def fontHeight(self): + return self._fontHeight + + def setTransformationEngine(self, engine): + self.transformationEngine = engine + + def resize(self, width, height): + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight + self.computeTextArea() + self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) + self.refresh = True + + self.FeedOpcodes(self.ROWS) + + def computeTextArea(self): + self.COLUMNS = self.width // self.fontWidth + self.ROWS = self.height // self.fontHeight + self.notify(self.ROWS, self.COLUMNS) + + def getPixmap(self): + for t in self.Ops: + if len(t) == 1: + t[0]() + + else: + t[0](*t[1:]) + + self.Ops = [] + + if not self.newPix: + self.draw() + + return self.newPix + + def getPageOffset(self): + return self.dataModel.getOffset() + + def getGeometry(self): + return self.COLUMNS, self.ROWS + + def getDataModel(self): + return self.dataModel + + def startSelection(self): + self.selector.startSelection() + + def stopSelection(self): + self.selector.stopSelection() + + def getCursorOffsetInPage(self): + x, y = self.cursor.getPosition() + + preY = sum([asm.get_length() for asm in self.OPCODES[:y]]) + + if len(self.OPCODES) - 1 < y: + return 0 + + asm = self.OPCODES[y] + + if x < len(asm.get_hex()): + postY = x // 3 + else: + postY = asm.get_length() + + return preY + postY + + def getCursorAbsolutePosition(self): + offset = self.getCursorOffsetInPage() + return self.dataModel.getOffset() + offset + + def drawCursor(self, qp): + cursorX, cursorY = self.cursor.getPosition() + + log.debug("%s / %s", cursorX, cursorY) + + xstart = cursorX + + if cursorY not in self.OPCODES: + log.warning("Impossible to find instruction at cursor %d, %d" % (cursorY, len(self.OPCODES))) + return + + asm = self.OPCODES[cursorY] + width = asm.getSelectionWidth(xstart) + + qp.setBrush(QtGui.QColor(255, 255, 0)) + + qp.setOpacity(0.5) + qp.drawRect(xstart * self.fontWidth, + cursorY * self.fontHeight, + width * self.fontWidth, + self.fontHeight + 2) + qp.setOpacity(1) + + def drawSelected(self, qp): + qp.setFont(self.font) + + cursorX, cursorY = self.cursor.getPosition() + + if len(self.OPCODES) - 1 < cursorY: + return + + asm = self.OPCODES[cursorY] + _, width, text = asm.getSelectedToken(cursorX) + + for i, asm in enumerate(self.OPCODES): + for idx, length, value in asm.tokens(): + # skip current cursor position + if cursorY == i and cursorX == idx: + continue + + # check every line, if match, select it + if value == text: + qp.setOpacity(0.4) + brush = QtGui.QBrush(QtGui.QColor(0, 255, 0)) + qp.fillRect(idx * self.fontWidth, + i * self.fontHeight + 2, + width * self.fontWidth, + self.fontHeight, + brush) + qp.setOpacity(1) + + def drawBranch(self, qp): + qp.fillRect(-50, 0, 50, self.ROWS * self.fontHeight, self.backgroundBrush) + + def drawBranch2(self, qp): + + cursorX, cursorY = self.cursor.getPosition() + + if len(self.OPCODES) - 1 < cursorY: + return + + asm = self.OPCODES[cursorY] + + if asm.isBranch(): + + tsize = sum([o.size for o in self.OPCODES]) + msize = sum([o.size for o in self.OPCODES[:cursorY]]) + + half = self.fontHeight // 2 + + # branch address + target = asm.branchAddress() + if target is None: + return + + screenVA = self._getVA(self.dataModel.getOffset()) + if screenVA < target < self._getVA(self.dataModel.getOffset()) + tsize - self.OPCODES[-1].size: + # branch target is in screen + + sz = 0 + for i, t in enumerate(self.OPCODES): + sz += t.size + if sz + self._getVA(self.dataModel.getOffset()) >= target: + break + + qp.setPen(QtGui.QPen(QtGui.QColor(0, 192, 0), 1, QtCore.Qt.SolidLine)) + + # draw the three lines + + qp.drawLine(-5, cursorY * self.fontHeight + self.fontHeight // 2, -30, cursorY * self.fontHeight + half) + + qp.drawLine(-30, cursorY * self.fontHeight + self.fontHeight // 2, -30, + (i + 1) * self.fontHeight + half) + + qp.drawLine(-30, (i + 1) * self.fontHeight + half, -15, (i + 1) * self.fontHeight + half) + + # draw arrow + points = [QtCore.QPoint(-15, (i + 1) * self.fontHeight + half - 5), + QtCore.QPoint(-15, (i + 1) * self.fontHeight + half + 5), + QtCore.QPoint(-5, (i + 1) * self.fontHeight + half), ] + needle = QtGui.QPolygon(points) + qp.setBrush(QtGui.QBrush(QtGui.QColor(0, 128, 0))) + qp.drawPolygon(needle) + + + + elif target > screenVA: + # branch is at greater address, out of screen + + qp.setPen(QtGui.QPen(QtGui.QColor(0, 192, 0), 1, QtCore.Qt.DotLine)) + + # draw the two lines + qp.drawLine(-5, cursorY * self.fontHeight + self.fontHeight // 2, -30, cursorY * self.fontHeight + half) + qp.drawLine(-30, cursorY * self.fontHeight + self.fontHeight // 2, -30, + (self.ROWS - 2) * self.fontHeight + half) + + # draw arrow + points = [QtCore.QPoint(-25, (self.ROWS - 2) * self.fontHeight + half), + QtCore.QPoint(-35, (self.ROWS - 2) * self.fontHeight + half), + QtCore.QPoint(-30, (self.ROWS - 2) * self.fontHeight + 2 * half), ] + needle = QtGui.QPolygon(points) + qp.setBrush(QtGui.QBrush(QtGui.QColor(0, 128, 0))) + qp.drawPolygon(needle) + + else: + # upper arrow + # branch is at lower address, out of screen + + qp.setPen(QtGui.QPen(QtGui.QColor(0, 192, 0), 1, QtCore.Qt.DotLine)) + + # draw the two lines + qp.drawLine(-5, cursorY * self.fontHeight + self.fontHeight // 2, -30, cursorY * self.fontHeight + half) + qp.drawLine(-30, cursorY * self.fontHeight + self.fontHeight // 2, -30, 1 * self.fontHeight + half) + + # draw arrow + points = [QtCore.QPoint(-25, 1 * self.fontHeight + half), + QtCore.QPoint(-35, 1 * self.fontHeight + half), + QtCore.QPoint(-30, 1 * self.fontHeight), ] + needle = QtGui.QPolygon(points) + qp.setBrush(QtGui.QBrush(QtGui.QColor(0, 128, 0))) + qp.drawPolygon(needle) + + def draw(self, refresh=False): + if self.dataModel.getOffset() in self.Paints: + self.refresh = False + self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()]) + self.drawAdditionals() + return + + if self.refresh or refresh: + qp = QtGui.QPainter() + qp.begin(self.qpix) + + self.drawTextMode(qp) + self.refresh = False + qp.end() + + # self.Paints[self.dataModel.getOffset()] = QtGui.QPixmap(self.qpix) + self.drawAdditionals() + + def drawAdditionals(self): + self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER) + qp = QtGui.QPainter() + qp.begin(self.newPix) + qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight) + + qp.drawPixmap(0, 0, self.qpix) + + # self.transformationEngine.decorateText() + + # highlight selected text + self.selector.highlightText() + + # draw other selections + self.selector.drawSelections(qp) + + # draw our cursor + self.drawCursor(qp) + + self.drawBranch(qp) + self.drawSelected(qp) + + qp.end() + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + def getColumnsbyRow(self, row): + if row < len(self.OPCODES): + obj = self.OPCODES[row] + return obj.get_length() + else: + return 0 + + def _getVA(self, offset): + if self.plugin: + return self.plugin.hintDisasmVA(offset) + return 0 + + def _drawRow(self, qp, cemu, row, asm, offset=-1): + log.debug('DRAW AN INSTRUCTION %s %s %s %s %s', asm, row, asm.get_name(), len(asm.get_operands(offset)), hex(self.getPageOffset())) + + qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) + + hex_data = asm.get_hex() + + # write hexdump + cemu.writeAt(0, row, hex_data) + + # fill with spaces + cemu.write((MNEMONIC_COLUMN - len(hex_data)) * ' ') + + # let's color some branch instr + # if asm.isBranch(): + # qp.setPen(QtGui.QPen(QtGui.QColor(255, 80, 0))) + # else: + qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) + + mnemonic = asm.get_name() + cemu.write(mnemonic) + + # leave some spaces + cemu.write((MNEMONIC_WIDTH - len(mnemonic)) * ' ') + + if asm.get_symbol(): + qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) + cemu.write_c('[') + + qp.setPen(QtGui.QPen(QtGui.QColor('yellow'), 1, QtCore.Qt.SolidLine)) + cemu.write(asm.get_symbol()) + + qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) + cemu.write_c(']') + + self._write_operands(asm, qp, cemu, offset) + self._write_comments(asm, qp, cemu, offset) + + def _write_comments(self, asm, qp, cemu, offset): + comments = asm.get_comments() + if comments: + cemu.write(30 * ' ') + + qp.setPen(QtGui.QPen(QtGui.QColor(82, 192, 192), 1, QtCore.Qt.SolidLine)) + cemu.write('; "{0}"'.format(' '.join(comments))) + + def _write_operands(self, asm, qp, cemu, offset): + qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) + + operands = asm.get_operands(offset) + for operand in operands: + qp.save() + + if operand[0] == dvm.OPERAND_REGISTER: + qp.setPen(QtGui.QPen(QtGui.QColor('white'))) + cemu.write("%s" % operand[1]) + + elif operand[0] == dvm.OPERAND_LITERAL: + qp.setPen(QtGui.QPen(QtGui.QColor('yellow'))) + cemu.write("%s" % operand[1]) + + elif operand[0] == dvm.OPERAND_RAW: + qp.setPen(QtGui.QPen(QtGui.QColor('red'))) + cemu.write("%s" % operand[1]) + + elif operand[0] == dvm.OPERAND_OFFSET: + qp.setPen(QtGui.QPen(QtGui.QColor('purple'))) + cemu.write("%s" % operand[1]) + + elif operand[0] & dvm.OPERAND_KIND: + if operand[0] == (dvm.OPERAND_KIND + dvm.KIND_STRING): + qp.setPen(QtGui.QPen(QtGui.QColor('red'))) + cemu.write("%s" % operand[1]) + + elif operand[0] == (dvm.OPERAND_KIND + dvm.KIND_METH): + qp.setPen(QtGui.QPen(QtGui.QColor('cyan'))) + cemu.write("%s" % operand[1]) + + elif operand[0] == (dvm.OPERAND_KIND + dvm.KIND_FIELD): + qp.setPen(QtGui.QPen(QtGui.QColor('green'))) + cemu.write("%s" % operand[1]) + + elif operand[0] == (dvm.OPERAND_KIND + dvm.KIND_TYPE): + qp.setPen(QtGui.QPen(QtGui.QColor('blue'))) + cemu.write("%s" % operand[1]) + + cemu.write(" ") + qp.restore() + + def _write_instruction2(self, asm, qp, cemu): + s = asm.operands + idx = 0 + qp.setPen(QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine)) + + for tok in asm.lexer: + if tok.lexpos > idx: + cemu.write(s[idx:tok.lexpos]) + idx = tok.lexpos + + qp.save() + if tok.type == 'REGISTER': + qp.setPen(QtGui.QPen(QtGui.QColor('white'))) + + if tok.type == 'NUMBER': + qp.setPen(QtGui.QPen(QtGui.QColor('green'))) + + cemu.write(tok.value) + + qp.restore() + idx = tok.lexpos + len(tok.value) + + if idx < len(s): + cemu.write(s[idx:]) + + def drawTextMode(self, qp): + log.debug('OFFSET %s', self.dataModel.getOffset()) + # draw background + qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) + + # set text pen&font + qp.setFont(self.font) + qp.setPen(self.textPen) + + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) + + offset = 0 + for i in range(self.ROWS): + if i < len(self.OPCODES): + asm = self.OPCODES[i] + self._drawRow(qp, cemu, i, asm, offset) + offset += asm.get_length() + + def _getRowInPage(self, offset): + + offset -= self.dataModel.getOffset() + size = 0 + for i, asm in enumerate(self.OPCODES): + if size + asm.get_length() > offset: + return i + size += asm.get_length() + + return None + + def _getOffsetOfRow(self, row): + # of course, it could be done nicely, not like this + size = 0 + for i, asm in enumerate(self.OPCODES): + if i == row: + return size + + size += asm.get_length() + + return None + + def goTo(self, offset): + log.debug("GOTO %s", offset) + + tsize = sum([opcode.get_length() for opcode in self.OPCODES]) + + if self.dataModel.getOffset() + tsize > offset > self.dataModel.getOffset(): + # if in current page, move cursor + row = self._getRowInPage(offset) + off_row = self._getOffsetOfRow(row) + diff = offset - self.dataModel.getOffset() - off_row # self.OPCODES[row].size + + if row is not None: + self.cursor.moveAbsolute(diff * 3, row) + + self.draw(refresh=False) + else: + # else, move page + self.dataModel.goTo(offset) + self.FeedOpcodes(self.ROWS) + self.cursor.moveAbsolute(0, 0) + self.draw(refresh=True) + + # TODO: getDisplayablePage() won't contain what we want to disasm. we will use dataModel + # in this view, getDisplayablePage will contain disasm text, because that is what is displayed + + if self.widget: + self.widget.update() + + def scrollPages(self, number, cachePix=None, pageOffset=None): + self.scroll(0, -number * self.ROWS, cachePix=cachePix, pageOffset=pageOffset) + + def scroll_v(self, dy, cachePix=None, pageOffset=None): + log.debug('scroll_v %s %s %s %s', dy, cachePix, pageOffset, hex(self.getCursorAbsolutePosition())) + + RowsToDraw = [] + factor = abs(dy) + # repeat as many rows we have scrolled + for row in range(factor): + current_idx = None + if dy < 0: + tsize = sum([asm.get_length() for asm in self.OPCODES]) + current_offset = self.dataModel.getOffset() + tsize + if current_offset not in self.CACHE_IDX_OPCODES_OFF: + log.debug('INVALID OFFSET %s', hex(current_offset)) + return + + current_idx = self.CACHE_IDX_OPCODES_OFF[current_offset] - 1 + log.debug("IDX %s %s", current_idx, hex(current_offset)) + + if current_idx + 1 >= len(self.CACHE_OPCODES): + log.debug('END OF DATA') + return + + current_idx += 1 + + if dy >= 0: + current_offset = self.dataModel.getOffset() + current_idx = self.CACHE_IDX_OPCODES_OFF[current_offset] + log.debug("IDX %s %s", current_idx, hex(current_offset)) + # start = self.CACHE_OPCODES[self.CACHE_IDX_OPCODES_OFF[self.getCursorAbsolutePosition()]-1] + current_idx -= 1 + + newins = self.CACHE_OPCODES[current_idx] + + if dy < 0: + self.dataModel.slide(self.OPCODES[0].get_length()) + del self.OPCODES[0] + + if dy >= 0: + self.dataModel.slide(-newins.get_length()) + del self.OPCODES[len(self.OPCODES) - 1] + + if dy < 0: + self.OPCODES.append(newins) + + if dy > 0: + self.OPCODES.insert(0, newins) + + if dy < 0: + RowsToDraw.append((self.ROWS + row, newins)) + + if dy > 0: + RowsToDraw.append((-row - 1, newins)) + + log.debug('ROW TO DRAW %s', RowsToDraw) + if len(RowsToDraw) < abs(dy): + # maybe we couldn't draw dy rows (possible we reached the beginning of the data to early), recalculate dy + dy = len(RowsToDraw) * dy / abs(dy) + factor = abs(dy) + + if not cachePix: + self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) + + qp = QtGui.QPainter() + if cachePix: + qp.begin(cachePix) + else: + qp.begin(self.qpix) + + qp.setFont(self.font) + qp.setPen(self.textPen) + + # erase rows that will disappear + if dy < 0: + qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.COLUMNS, + factor * self.fontHeight, self.backgroundBrush) + + if dy > 0: + qp.fillRect(0, 0, self.fontWidth * self.COLUMNS, factor * self.fontHeight, self.backgroundBrush) + + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) + + for row, asm in RowsToDraw: + asm.Load() + self._drawRow(qp, cemu, dy + row, asm) + + qp.end() + + def scroll(self, dx, dy, cachePix=None, pageOffset=None): + log.debug('scroll %s %s %s %s %s', dx, dy, self.dataModel.inLimits((self.dataModel.getOffset() - dx)), 'offset', + self.dataModel.getOffset()) + if dx != 0: + if self.dataModel.inLimits((self.dataModel.getOffset() - dx)): + self.dataModel.slide(dx) + self.draw(refresh=True) + # self.scroll_h(dx) + + if dy != 0: + if dy > 0: + if self.dataModel.getOffset() == 0: + log.debug('OFFSET == 0') + return + + if dy < 0: + tsize = sum([asm.get_length() for asm in self.OPCODES]) + + if self.dataModel.getOffset() + tsize == self.dataModel.getDataSize(): + log.debug('END') + return + + self.scroll_v(dy, cachePix, pageOffset) + + def moveCursor(self, direction): + cursorX, cursorY = self.cursor.getPosition() + + if direction == Directions.Left: + asm = self.OPCODES[cursorY] + + if cursorX == 0: + if cursorY == 0: + # if first line, scroll + self.scroll(0, 1) + self.cursor.moveAbsolute(0, 0) + else: + # move to last token from previous line + asm_prev = self.OPCODES[cursorY - 1] + idx = asm_prev.getEndCursor() + self.cursor.moveAbsolute(idx, cursorY - 1) + else: + x, dy = asm.getNextCursor(cursorX, direction=Directions.Left) + self.cursor.move(-(cursorX - x), dy) + + if direction == Directions.Right: + asm = self.OPCODES[cursorY] + x, dy = asm.getNextCursor(cursorX, direction=Directions.Right) + + if cursorY == self.ROWS - 1 and dy > 0: + self.scroll(0, -1) + self.cursor.moveAbsolute(0, cursorY) + + else: + if cursorY + dy >= len(self.OPCODES): + dy = 0 + + self.cursor.move(x - cursorX, dy) + + if direction == Directions.Down: + if cursorY == self.ROWS - 1: + # move cursor to first token + self.scroll(0, -1) + self.cursor.moveAbsolute(0, cursorY) + else: + # move next line, to nearest token on columns + if cursorY + 1 < len(self.OPCODES): + asm = self.OPCODES[cursorY + 1] + x = asm.getNearestCursor(cursorX) + self.cursor.moveAbsolute(x, cursorY + 1) + + if direction == Directions.Up: + if cursorY == 0: + # move cursor to first token + self.scroll(0, 1) + self.cursor.moveAbsolute(0, cursorY) + else: + # move next line, to nearest token on columns + asm = self.OPCODES[cursorY - 1] + x = asm.getNearestCursor(cursorX) + self.cursor.moveAbsolute(x, cursorY - 1) + + if direction == Directions.End: + pass + + if direction == Directions.Home: + self.cursor.moveAbsolute(0, 0) + + if direction == Directions.CtrlHome: + self.goTo(0) + + if direction == Directions.CtrlEnd: + self.dataModel.slideToLastPage() + self.draw(refresh=True) + self.cursor.moveAbsolute(self.COLUMNS - 1, self.ROWS - 1) + + def _followBranch(self): + cursorX, cursorY = self.cursor.getPosition() + asm = self.OPCODES[cursorY] + + if asm.isBranch(): + value = asm.branchAddress() + if value: + fofs = self.plugin.disasmVAtoFA(value) + if fofs is not None: + rowOfs = self._getOffsetOfRow(cursorY) + if rowOfs is not None: + self.FlowHistory.append(rowOfs + self.dataModel.getOffset()) + self.goTo(fofs) + + def _followBranchHistory(self): + if len(self.FlowHistory) > 0: + offset = self.FlowHistory[-1] + del self.FlowHistory[-1] + self.goTo(offset) + + def handleKeyEvent(self, modifiers, key, event=None): + if event.type() == QtCore.QEvent.KeyRelease: + if key == QtCore.Qt.Key_Shift: + self.stopSelection() + return True + + if event.type() == QtCore.QEvent.KeyPress: + + if modifiers == QtCore.Qt.ShiftModifier: + keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, + QtCore.Qt.Key_End, QtCore.Qt.Key_Home] + if key in keys: + self.startSelection() + + if modifiers == QtCore.Qt.ControlModifier: + if key == QtCore.Qt.Key_Right: + self.dataModel.slide(1) + self.addop((self.scroll, -1, 0)) + + if key == QtCore.Qt.Key_Left: + self.dataModel.slide(-1) + self.addop((self.scroll, 1, 0)) + + if key == QtCore.Qt.Key_Down: + self.addop((self.scroll, 0, -1)) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Up: + self.addop((self.scroll, 0, 1)) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_End: + # not supported + pass + + if key == QtCore.Qt.Key_Home: + self.moveCursor(Directions.CtrlHome) + self.addop((self.draw,)) + # self.draw() + + return True + + else: # elif modifiers == QtCore.Qt.NoModifier: + + if key == QtCore.Qt.Key_Escape: + self.selector.resetSelections() + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Left: + self.moveCursor(Directions.Left) + self.addop((self.draw,)) + # self.draw() + + if key == QtCore.Qt.Key_Right: + self.moveCursor(Directions.Right) + self.addop((self.draw,)) + # self.draw() + + if key == QtCore.Qt.Key_Down: + self.moveCursor(Directions.Down) + self.addop((self.draw,)) + # self.draw() + + if key == QtCore.Qt.Key_End: + self.moveCursor(Directions.End) + self.addop((self.draw,)) + # self.draw() + + if key == QtCore.Qt.Key_Home: + self.moveCursor(Directions.Home) + self.addop((self.draw,)) + # self.draw() + + if key == QtCore.Qt.Key_Up: + self.moveCursor(Directions.Up) + self.addop((self.draw,)) + # self.draw() + + if key == QtCore.Qt.Key_PageDown: + self.addop((self.scrollPages, 1)) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_PageUp: + self.addop((self.scrollPages, -1)) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Return: + self.addop((self._followBranch,)) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Escape: + self.addop((self._followBranchHistory,)) + self.addop((self.draw,)) + + return True + + return False + + def addop(self, t): + self.Ops.append(t) + + def getHeaderInfo(self): + return 'Disasm listing' diff --git a/androguard/gui/HexViewMode.py b/androguard/gui/HexViewMode.py new file mode 100644 index 0000000..ec135fa --- /dev/null +++ b/androguard/gui/HexViewMode.py @@ -0,0 +1,1059 @@ +from __future__ import division + +import string + +from PyQt5 import QtGui, QtCore, QtWidgets +from PyQt5.uic import loadUi +from builtins import hex +from builtins import str + +from androguard.gui.TextDecorators import RangePen +from androguard.gui.ViewMode import ViewMode +from androguard.gui.cemu import Directions, ConsoleEmulator +from androguard.gui import TextSelection +import os + +class HexViewMode(ViewMode): + def __init__(self, themes, width, height, data, cursor, widget=None): + super(HexViewMode, self).__init__() + + self.dataModel = data + self.width = width + self.height = height + + self.refresh = True + self.selector = TextSelection.HexSelection(themes, self) + self.widget = widget + + self.addHandler(self.dataModel) + + # background brush + self.backgroundBrush = QtGui.QBrush(themes['background']) + + # text font + self.font = themes['font'] + + # font metrics. assume font is monospaced + self.font.setKerning(False) + self.font.setFixedPitch(True) + fm = QtGui.QFontMetrics(self.font) + self._fontWidth = fm.width('a') + self._fontHeight = fm.height() + + self.Special = string.ascii_letters + string.digits + ' .;\':;=\"?-!()/\\_' + + self.textPen = QtGui.QPen(themes['pen'], 1, QtCore.Qt.SolidLine) + + self.cursor = cursor + + self.HexColumns = [1, 4, 8, 16, 32, 36, 40] + self.idxHexColumns = 3 # 32 columns + + self.newPix = None + self.Ops = [] + self.gap = 5 + + self.highpart = True + self.resize(width, height) + + self.ann_w = Annotation(self.widget, self) + + @property + def fontWidth(self): + return self._fontWidth + + @property + def fontHeight(self): + return self._fontHeight + + def setTransformationEngine(self, engine): + self.transformationEngine = engine + self.original_textdecorator = engine + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + def getPixmap(self): + # return self.qpix + + for t in self.Ops: + if len(t) == 1: + t[0]() + + else: + t[0](*t[1:]) + + self.Ops = [] + + if not self.newPix: + self.draw() + + return self.newPix + + def getGeometry(self): + return self.COLUMNS, self.ROWS + + def getColumnsbyRow(self, row): + return self.COLUMNS + + def getDataModel(self): + return self.dataModel + + def startSelection(self): + self.selector.startSelection() + + def stopSelection(self): + self.selector.stopSelection() + + def getPageOffset(self): + return self.dataModel.getOffset() + + def getCursorAbsolutePosition(self): + x, y = self.cursor.getPosition() + return self.dataModel.getOffset() + y * self.COLUMNS + x + + def computeTextArea(self): + self.COLUMNS = self.HexColumns[self.idxHexColumns] + self.CON_COLUMNS = self.width // self.fontWidth + self.ROWS = self.height // self.fontHeight + self.notify(self.ROWS, self.COLUMNS) + + def resize(self, width, height): + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight + self.computeTextArea() + self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) + self.refresh = True + + def changeHexColumns(self): + if self.idxHexColumns == len(self.HexColumns) - 1: + self.idxHexColumns = 0 + else: + self.idxHexColumns += 1 + + # if screen is ont big enough, retry + if self.HexColumns[self.idxHexColumns] * (3 + 1) + self.gap >= self.CON_COLUMNS: + self.changeHexColumns() + return + + self.resize(self.width, self.height) + + def scroll(self, dx, dy): + if dx != 0: + if self.dataModel.inLimits((self.dataModel.getOffset() - dx)): + self.dataModel.slide(-dx) + self.scroll_h(dx) + + if dy != 0: + if self.dataModel.inLimits((self.dataModel.getOffset() - dy * self.COLUMNS)): + self.dataModel.slide(-dy * self.COLUMNS) + self.scroll_v(dy) + else: + if dy <= 0: + pass + # self.dataModel.slideToLastPage() + else: + self.dataModel.slideToFirstPage() + self.draw(refresh=True) + + self.draw() + + def scrollPages(self, number): + self.scroll(0, -number * self.ROWS) + + def drawAdditionals(self): + self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER) + qp = QtGui.QPainter() + qp.begin(self.newPix) + qp.drawPixmap(0, 0, self.qpix) + + # self.transformationEngine.decorateText() + + # highlight selected text + self.selector.highlightText() + + # draw other selections + self.selector.drawSelections(qp) + + # draw our cursor + self.drawCursor(qp) + + # draw dword lines + for i in range(self.COLUMNS // 4)[1:]: + xw = i * 4 * 3 * self.fontWidth - 4 + qp.setPen(QtGui.QColor(0, 255, 0)) + qp.drawLine(xw, 0, xw, self.ROWS * self.fontHeight) + + qp.end() + + def scroll_h(self, dx): + gap = self.gap + + # hex part + self.qpix.scroll(dx * 3 * self.fontWidth, 0, QtCore.QRect(0, 0, self.COLUMNS * 3 * self.fontWidth, + self.ROWS * self.fontHeight + self.SPACER)) + # text part + self.qpix.scroll(dx * self.fontWidth, 0, + QtCore.QRect((self.COLUMNS * 3 + gap) * self.fontWidth, 0, self.COLUMNS * self.fontWidth, + self.ROWS * self.fontHeight + self.SPACER)) + + qp = QtGui.QPainter() + + qp.begin(self.qpix) + qp.setFont(self.font) + qp.setPen(self.textPen) + + factor = abs(dx) + + # There are some trails from the characters, when scrolling. trail == number of pixel to erase near the character + trail = 5 + + textBegining = self.COLUMNS * 3 + gap + if dx < 0: + # hex + qp.fillRect((self.COLUMNS - 1 * factor) * 3 * self.fontWidth, 0, factor * self.fontWidth * 3, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) + # text + qp.fillRect((textBegining + self.COLUMNS - 1 * factor) * self.fontWidth, 0, factor * self.fontWidth + trail, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) + if dx > 0: + # hex + qp.fillRect(0, 0, factor * 3 * self.fontWidth, self.ROWS * self.fontHeight + self.SPACER, + self.backgroundBrush) + # text + qp.fillRect(textBegining * self.fontWidth - trail, 0, factor * self.fontWidth + trail, + self.ROWS * self.fontHeight + self.SPACER, self.backgroundBrush) + + cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) + + page = self.transformationEngine.decorate() + # scriem pe fiecare coloana in parte + for column in range(factor): + # fiecare caracter de pe coloana + for i in range(self.ROWS): + + if dx < 0: + # cu (column) selectam coloana + idx = (i + 1) * self.COLUMNS - (column + 1) + if dx > 0: + idx = i * self.COLUMNS + column + + if len(self.getDisplayablePage()) > idx: + qp.setPen(self.transformationEngine.choosePen(idx)) + else: + break + + if self.transformationEngine.chooseBrush(idx) is not None: + qp.setBackgroundMode(1) + qp.setBackground(self.transformationEngine.chooseBrush(idx)) + + c = self.getDisplayablePage()[idx] + + hex_s = str(hex(c)[2:]).zfill(2) + ' ' + + if dx < 0: + cemu.writeAt((self.COLUMNS - (column + 1)) * 3, i, hex_s, noBackgroudOnSpaces=True) + cemu.writeAt(textBegining + self.COLUMNS - (column + 1), i, self.cp437(c)) + + if dx > 0: + cemu.writeAt(column * 3, i, hex_s, noBackgroudOnSpaces=True) + cemu.writeAt(textBegining + column, i, self.cp437(c)) + + qp.setBackgroundMode(0) + + qp.end() + + def scroll_v(self, dy): + self.qpix.scroll(0, dy * self.fontHeight, self.qpix.rect()) + + qp = QtGui.QPainter() + + qp.begin(self.qpix) + qp.setFont(self.font) + qp.setPen(self.textPen) + + factor = abs(dy) + + cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) + + if dy < 0: + cemu.gotoXY(0, self.ROWS - factor) + qp.fillRect(0, (self.ROWS - factor) * self.fontHeight, self.fontWidth * self.CON_COLUMNS, + factor * self.fontHeight + self.SPACER, self.backgroundBrush) + + if dy > 0: + cemu.gotoXY(0, 0) + qp.fillRect(0, 0, self.fontWidth * self.CON_COLUMNS, factor * self.fontHeight, self.backgroundBrush) + + page = self.transformationEngine.decorate() + + # how many rows + for row in range(factor): + # for every column + for i in range(self.COLUMNS): + + if dy < 0: + # we write from top-down, so get index of the first row that will be displayed + # this is why we have factor - row + idx = i + (self.ROWS - (factor - row)) * self.COLUMNS + if dy > 0: + idx = i + (self.COLUMNS * row) + + qp.setPen(self.transformationEngine.choosePen(idx)) + + if self.transformationEngine.chooseBrush(idx) is not None: + qp.setBackgroundMode(1) + qp.setBackground(self.transformationEngine.chooseBrush(idx)) + + if len(self.getDisplayablePage()) > idx: + c = self.getDisplayablePage()[idx] + else: + break + + if i == self.COLUMNS - 1: + hex_s = str(hex(c)[2:]).zfill(2) + else: + hex_s = str(hex(c)[2:]).zfill(2) + ' ' + + # write hex representation + cemu.write(hex_s, noBackgroudOnSpaces=True) + + # save hex position + x, y = cemu.getXY() + # write text + cemu.writeAt(self.COLUMNS * 3 + self.gap + (i % self.COLUMNS), y, self.cp437(c)) + + # go back to hex chars + cemu.gotoXY(x, y) + + qp.setBackgroundMode(0) + + cemu.writeLn() + qp.end() + + def draw(self, refresh=False, row=0, howMany=0): + if self.refresh or refresh: + qp = QtGui.QPainter() + qp.begin(self.qpix) + + if not howMany: + howMany = self.ROWS + + self.drawTextMode(qp, row=row, howMany=howMany) + self.refresh = False + qp.end() + + self.drawAdditionals() + + def drawTextMode(self, qp, row=0, howMany=1): + + # draw background + qp.fillRect(0, row * self.fontHeight, self.CON_COLUMNS * self.fontWidth, + howMany * self.fontHeight + self.SPACER, self.backgroundBrush) + + # set text pen&font + qp.setFont(self.font) + qp.setPen(self.textPen) + + cemu = ConsoleEmulator(qp, self.ROWS, self.CON_COLUMNS) + + page = self.transformationEngine.decorate() + + cemu.gotoXY(0, row) + + for i, c in enumerate(self.getDisplayablePage()[row * self.COLUMNS:( + row + howMany) * self.COLUMNS]): # TODO: does not apply all decorators + + w = i + row * self.COLUMNS + + if (w + 1) % self.COLUMNS == 0: + hex_s = str(hex(c)[2:]).zfill(2) + else: + hex_s = str(hex(c)[2:]).zfill(2) + ' ' + + qp.setPen(self.transformationEngine.choosePen(w)) + + if self.transformationEngine.chooseBrush(w) is not None: + qp.setBackgroundMode(1) + qp.setBackground(self.transformationEngine.chooseBrush(w)) + + # write hex representation + cemu.write(hex_s, noBackgroudOnSpaces=True) + # save hex position + x, y = cemu.getXY() + # write text + cemu.writeAt(self.COLUMNS * 3 + self.gap + (w % self.COLUMNS), y, self.cp437(c)) + # go back to hex chars + cemu.gotoXY(x, y) + if (w + 1) % self.COLUMNS == 0: + cemu.writeLn() + + qp.setBackgroundMode(0) + + def moveCursor(self, direction): + # TODO: have to move this, don't like it + if self.isInEditMode(): + if not self.highpart: + self.highpart = True + + cursorX, cursorY = self.cursor.getPosition() + + if direction == Directions.Left: + if cursorX == 0: + if cursorY == 0: + self.scroll(1, 0) + else: + self.cursor.moveAbsolute(self.COLUMNS - 1, cursorY - 1) + else: + self.cursor.move(-1, 0) + + if direction == Directions.Right: + if self.getCursorAbsolutePosition() + 1 >= self.dataModel.getDataSize(): + return + + if cursorX == self.COLUMNS - 1: + if cursorY == self.ROWS - 1: + self.scroll(-1, 0) + else: + self.cursor.moveAbsolute(0, cursorY + 1) + else: + self.cursor.move(1, 0) + + if direction == Directions.Down: + if self.getCursorAbsolutePosition() + self.COLUMNS >= self.dataModel.getDataSize(): + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + self.cursor.moveAbsolute(x, y) + return + + if cursorY == self.ROWS - 1: + self.scroll(0, -1) + else: + self.cursor.move(0, 1) + + if direction == Directions.Up: + if cursorY == 0: + self.scroll(0, 1) + else: + self.cursor.move(0, -1) + + if direction == Directions.End: + if self.dataModel.getDataSize() < self.getCursorAbsolutePosition() + self.ROWS * self.COLUMNS: + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + self.cursor.moveAbsolute(x, y) + + else: + self.cursor.moveAbsolute(self.COLUMNS - 1, self.ROWS - 1) + + if direction == Directions.Home: + self.cursor.moveAbsolute(0, 0) + + if direction == Directions.CtrlHome: + self.dataModel.slideToFirstPage() + self.draw(refresh=True) + self.cursor.moveAbsolute(0, 0) + + if direction == Directions.CtrlEnd: + self.dataModel.slideToLastPage() + self.draw(refresh=True) + self.moveCursor(Directions.End) + + def drawCursor(self, qp): + qp.setBrush(QtGui.QColor(255, 255, 0)) + if self.isInEditMode(): + qp.setBrush(QtGui.QColor(255, 102, 179)) + + cursorX, cursorY = self.cursor.getPosition() + + columns = self.HexColumns[self.idxHexColumns] + if cursorX > columns: + self.cursor.moveAbsolute(columns - 1, cursorY) + + # get cursor position again, maybe it was moved + cursorX, cursorY = self.cursor.getPosition() + + qp.setOpacity(0.8) + if self.isInEditMode(): + qp.setOpacity(0.5) + # cursor on text + qp.drawRect((self.COLUMNS * 3 + self.gap + cursorX) * self.fontWidth, cursorY * self.fontHeight + 2, + self.fontWidth, self.fontHeight) + + # cursor on hex + if not self.isInEditMode(): + qp.drawRect(cursorX * 3 * self.fontWidth, cursorY * self.fontHeight + 2, 2 * self.fontWidth, + self.fontHeight) + else: + if self.highpart: + qp.drawRect(cursorX * 3 * self.fontWidth, cursorY * self.fontHeight + 2, 1 * self.fontWidth, + self.fontHeight) + else: + qp.drawRect(cursorX * 3 * self.fontWidth + self.fontWidth, cursorY * self.fontHeight + 2, + 1 * self.fontWidth, self.fontHeight) + + qp.setOpacity(1) + + def keyFilter(self): + return [ + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_End), + (QtCore.Qt.ControlModifier, QtCore.Qt.Key_Home), + + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Right), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Left), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Up), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Down), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_End), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_Home), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageDown), + (QtCore.Qt.NoModifier, QtCore.Qt.Key_PageUp) + + ] + + def anon(self, dx, dy): + self.scroll(dx, dy) + + # scroll modifies datamodel offset, so we must do scroll and cursor + # operations toghether + + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + if self.getCursorAbsolutePosition() >= self.dataModel.getDataSize(): + y, x = self.dataModel.getXYInPage(self.dataModel.getDataSize() - 1) + self.cursor.moveAbsolute(x, y) + + # we call draw() again because it was called before by scroll() + # and the cursor is already painted but it's not in correct position + # kinda hack, don't really like it + self.draw() + + def handleEditMode(self, modifiers, key, event): + + if str(event.text()).lower() in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', + 'f']: + + offs = self.getCursorOffsetInPage() + + b = self.dataModel.getBYTE(self.dataModel.getOffset() + offs) + if b is None: + return + + z = int(str(event.text()), 16) + + # compute nibble + if self.highpart: + b = ((z << 4) | (b & 0x0F)) & 0xFF + else: + b = ((b & 0xF0) | (z & 0x0F)) & 0xFF + + block = modifiers == QtCore.Qt.AltModifier and self.selector.getCurrentSelection() + + # change block or single byte + if block: + # multiple, with ALT key + if self.selector.getCurrentSelection(): + u, v = self.selector.getCurrentSelection() + + for x in range(u, v): + b = self.dataModel.getBYTE(x) + if self.highpart: + b = ((z << 4) | (b & 0x0F)) & 0xFF + else: + b = ((b & 0xF0) | (z & 0x0F)) & 0xFF + + self.dataModel.setData_b(x, chr(b)) + else: + self.dataModel.setData_b(self.dataModel.getOffset() + offs, chr(b)) + + if block: + self.transformationEngine = RangePen(self.original_textdecorator, u, v, + QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), + ignoreHighlights=True) + else: + z = self.dataModel.getOffset() + offs + # TODO: sa nu se repete, tre original_transformengine + self.transformationEngine = RangePen(self.original_textdecorator, z, z + 0, + QtGui.QPen(QtGui.QColor(218, 94, 242), 0, QtCore.Qt.SolidLine), + ignoreHighlights=True) + + # se if we are at end of row, we must also redraw previous line + highpart = self.highpart + + # for block mode, move cursor + if not block: + x, old_y = self.cursor.getPosition() + + if not self.highpart: + self.moveCursor(Directions.Right) + + x, y = self.cursor.getPosition() + + if highpart: + self.highpart = False + else: + self.highpart = True + + if block: + self.draw(refresh=True) + else: + self.draw(refresh=True, row=y, howMany=1) + if y > old_y: + self.draw(refresh=True, row=y - 1, howMany=1) + + def handleKeyEvent(self, modifiers, key, event=None): + if event.type() == QtCore.QEvent.KeyRelease: + if key == QtCore.Qt.Key_Shift: + self.stopSelection() + return True + + if event.type() == QtCore.QEvent.KeyPress: + + if modifiers == QtCore.Qt.ShiftModifier: + keys = [QtCore.Qt.Key_Right, QtCore.Qt.Key_Left, QtCore.Qt.Key_Down, QtCore.Qt.Key_Up, + QtCore.Qt.Key_End, QtCore.Qt.Key_Home] + if key in keys: + self.startSelection() + + if key == QtCore.Qt.Key_Question: + self.annotationWindow() + + if modifiers == QtCore.Qt.AltModifier: + if key == QtCore.Qt.Key_A: + self.add_annotation(1) + return True + + if modifiers == QtCore.Qt.ControlModifier: + if key == QtCore.Qt.Key_A: + self.add_annotation(2) + + if key == QtCore.Qt.Key_Right: + self.addop((self.anon, -1, 0)) + + if key == QtCore.Qt.Key_Left: + self.addop((self.scroll, 1, 0)) + + if key == QtCore.Qt.Key_Down: + self.addop((self.anon, 0, -1)) + + if key == QtCore.Qt.Key_Up: + self.addop((self.scroll, 0, 1)) + + if key == QtCore.Qt.Key_End: + self.moveCursor(Directions.CtrlEnd) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Home: + self.moveCursor(Directions.CtrlHome) + self.addop((self.draw,)) + + return True + + else: # selif modifiers == QtCore.Qt.NoModifier: + + if key == QtCore.Qt.Key_Escape: + self.selector.resetSelections() + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Left: + self.moveCursor(Directions.Left) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Right: + self.moveCursor(Directions.Right) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Down: + self.moveCursor(Directions.Down) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_End: + self.moveCursor(Directions.End) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Home: + self.moveCursor(Directions.Home) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_Up: + self.moveCursor(Directions.Up) + self.addop((self.draw,)) + + if key == QtCore.Qt.Key_PageDown: + self.addop((self.scrollPages, 1)) + + if key == QtCore.Qt.Key_PageUp: + self.addop((self.scrollPages, -1)) + + if key == QtCore.Qt.Key_F6: + self.changeHexColumns() + x, y = self.cursor.getPosition() + + columns = self.HexColumns[self.idxHexColumns] + if x > columns: + self.cursor.moveAbsolute(columns - 1, y) + self.addop((self.draw,)) + + if self.isInEditMode(): + self.handleEditMode(modifiers, key, event) + + return True + + return False + + def isEditable(self): + return True + + def setEditMode(self, mode): + super(HexViewMode, self).setEditMode(mode) + if not mode: + self.highpart = True + self.transformationEngine = self.original_textdecorator + self.transformationEngine.reset() + self.draw(refresh=True) + + def addop(self, t): + self.Ops.append(t) + + def getHeaderInfo(self): + s = '' + for i in range(self.HexColumns[self.idxHexColumns]): + s += '{0} '.format('{0:x}'.format(i).zfill(2)) + + s += self.gap * ' ' + 'Text' + return s + + def annotationWindow(self): + w = self.ann_w.treeWidget + + w.setDragEnabled(True) + w.viewport().setAcceptDrops(True) + w.setDropIndicatorShown(True) + + self.ann_w.show() + + @QtCore.pyqtSlot("QItemSelection, QItemSelection") + def selectionChanged(self, selected, deselected): + item = self.ann_w.treeWidget.currentItem() + if item: + offset = item.getOffset() + size = item.getSize() + u = offset + v = offset + size + self.selector.addSelection((u, v, QtGui.QBrush(QtGui.QColor(125, 255, 0)), 0.2), + type=TextSelection.SelectionType.NORMAL) + self.goTo(u) + + @QtCore.pyqtSlot("QTreeWidgetItem*, int") + def itemChanged(self, item, column): + + ID_NAME = 0 + ID_DESCRIPTION = 4 + + s = str(item.text(column)) + + if column == ID_NAME: + item.setName(s) + + if column == ID_DESCRIPTION: + item.setDescription(s) + + def add_annotation(self, mode): + QtCore.QObject.connect(self.ann_w.treeWidget.selectionModel(), + QtCore.SIGNAL('selectionChanged(QItemSelection, QItemSelection)'), self.selectionChanged) + QtCore.QObject.connect(self.ann_w.treeWidget, QtCore.SIGNAL('itemChanged(QTreeWidgetItem*, int)'), + self.itemChanged) + + ID_NAME = 0 + ID_OFFSET = 1 + ID_SIZE = 2 + ID_VALUE = 3 + ID_DESCRIPTION = 4 + ID_COLOR = 5 + + if self.selector.getCurrentSelection(): + u, v = self.selector.getCurrentSelection() + else: + return + + import random + r = random.randint(0, 255) + g = random.randint(0, 255) + b = random.randint(0, 255) + + opacity = 0.4 + if mode == 2: + opacity = 0.25 + + qcolor = QtGui.QColor(r, g, b) + added = self.selector.addSelection((u, v, QtGui.QBrush(qcolor), opacity), + type=TextSelection.SelectionType.PERMANENT) + + # if not added: + # return + + t = self.ann_w.treeWidget + + row = AnnonItem(None, self.ann_w.treeWidget, qcolor.name()) + row.setFlags(QtCore.Qt.ItemIsSelectable | + QtCore.Qt.ItemIsEnabled | + QtCore.Qt.ItemIsEditable | + QtCore.Qt.ItemIsDropEnabled | + QtCore.Qt.ItemIsDragEnabled) + + t.setAcceptDrops(True) + t.setDragEnabled(True) + t.setDragDropMode(QtGui.QAbstractItemView.InternalMove) + + delegate = NoEditDelegate() + t.setItemDelegateForColumn(1, delegate) + t.setItemDelegateForColumn(2, delegate) + t.setItemDelegateForColumn(3, delegate) + t.setItemDelegateForColumn(5, delegate) + + row.setName(self.ann_w.newFieldName()) + row.setOffset(u) + # row.setText(ID_NAME, 'field_0') + # row.setText(ID_OFFSET, hex(u)) + + size = v - u + # row.setText(ID_SIZE, hex(size)) + row.setSize(size) + + value = '' + if size == 1: + value = self.dataModel.getBYTE(u, asString=True) + elif size == 2: + value = self.dataModel.getWORD(u, asString=True) + elif size == 4: + value = self.dataModel.getDWORD(u, asString=True) + else: + value = repr(str(self.dataModel.getStream(u, v))) + + # row.setText(ID_VALUE, value) + row.setValue(value) + + # cmb.setCurrentIndex(cmb.findData(w)) + + if mode == 2: + self.ann_w.treeWidget.addTopLevelItem(row) + + if mode == 1: + selected = t.selectedItems() + if len(selected) == 1: + selected = selected[0] + else: + selected = t.topLevelItem(0) + + if selected: + selected.addChild(row) + + t.expandItem(row) + + # cmb = QColorButton() + # cmb.setColor(qcolor.name()) + # self.ann_w.treeWidget.setItemWidget(row, ID_COLOR, cmb) + + self.ann_w.treeWidget.setItemWidget(row, ID_COLOR, row.cmb) + + # self.ann_w.treeWidget.openPersistentEditor(row, 0) + # self.ann_w.treeWidget.editItem(row, 0) + # self.ann_w.treeWidget.editItem(row, 3) + + +class NoEditDelegate(QtWidgets.QStyledItemDelegate): + def __init__(self, parent=None): + super(NoEditDelegate, self).__init__(parent) + + def createEditor(self, parent, option, index): + return None + + +class AnnonItem(QtWidgets.QTreeWidgetItem): + ID_NAME = 0 + ID_OFFSET = 1 + ID_SIZE = 2 + ID_VALUE = 3 + ID_DESCRIPTION = 4 + ID_COLOR = 5 + + def __init__(self, x, parent, color): + super(AnnonItem, self).__init__(x) + self._color = color + self._t_parent = parent + + self.cmb = QColorButton() + self.cmb.setColor(self._color) + + # self._t_parent.setItemWidget(self, self.ID_COLOR, self.cmb) + + def setName(self, name): + self._name = name + self.setText(self.ID_NAME, name) + + def getName(self): + return self._name + + def setOffset(self, offset): + self._offset = offset + self.setText(self.ID_OFFSET, hex(offset)) + + def getOffset(self): + return self._offset + + def setSize(self, size): + self._size = size + self.setText(self.ID_SIZE, hex(size)) + + def getSize(self): + return self._size + + def setValue(self, value): + self._value = value + self.setText(self.ID_VALUE, value) + + def getValue(self): + return self._value + + def setDescription(self, description): + self._description = description + self.setText(self.ID_DESCRIPTION, description) + + def getDescription(self): + return self._description + + +class QColorButton(QtWidgets.QPushButton): + """ + Custom Qt Widget to show a chosen color. + + Left-clicking the button shows the color-chooser, while + right-clicking resets the color to None (no-color). + """ + + ''' + based on http://martinfitzpatrick.name/article/qcolorbutton-a-color-selector-tool-for-pyqt/ + ''' + colorChanged = QtCore.pyqtSignal() + + def __init__(self, *args, **kwargs): + super(QColorButton, self).__init__(*args, **kwargs) + + self._color = None + self.setMaximumWidth(32) + self.pressed.connect(self.onColorPicker) + + def setColor(self, color): + if color != self._color: + self._color = color + self.colorChanged.emit() + + if self._color: + self.setStyleSheet("background-color: %s;" % self._color) + else: + self.setStyleSheet("") + + def color(self): + return self._color + + def onColorPicker(self): + """ + Show color-picker dialog to select color. + + Qt will use the native dialog by default. + + """ + dlg = QtGui.QColorDialog(QtGui.QColor(self._color), None) + + # if self._color: + # dlg.setCurrentColor(QtGui.QColor(self._color)) + + if dlg.exec_(): + self.setColor(dlg.currentColor().name()) + + def mousePressEvent(self, e): + if e.button() == QtCore.Qt.RightButton: + self.setColor(None) + + return super(QColorButton, self).mousePressEvent(e) + + +class ComboBoxItem(QtWidgets.QComboBox): + def __init__(self, item, column): + super(ComboBoxItem, self).__init__() + + self.item = item + self.column = column + + +class Annotation(QtWidgets.QDialog): + _fieldIdx = 0 + + def __init__(self, parent, view): + super(Annotation, self).__init__(parent) + + self.parent = parent + self.view = view + self.oshow = super(Annotation, self).show + + root = os.path.dirname(os.path.realpath(__file__)) + self.ui = loadUi(os.path.join(root, 'annotation.ui'), baseinstance=self) + + # self.ei = ImportsEventFilter(plugin, self.ui.treeWidgetImports) + + self.ei = treeEventFilter(view, self.ui.treeWidget) + self.ui.treeWidget.installEventFilter(self.ei) + + self.initUI() + + def newFieldName(self): + name = 'field_{}'.format(self._fieldIdx) + self._fieldIdx += 1 + return name + + def show(self): + # TODO: remember position? resize plugin windows when parent resize? + pwidth = self.parent.parent.size().width() + pheight = self.parent.parent.size().height() + + width = self.ui.treeWidget.size().width() + 15 + height = self.ui.treeWidget.size().height() + 15 + + self.setGeometry(pwidth - width - 15, pheight - height, width, height) + self.setFixedSize(width, height) + + self.oshow() + + def initUI(self): + self.setWindowTitle('Annotations') + self.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + + shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("Shift+/"), self, self.close, self.close) + + +class treeEventFilter(QtCore.QObject): + def __init__(self, view, widget): + super(QtCore.QObject, self).__init__() + self.widget = widget + self.view = view + + def eventFilter(self, watched, event): + if event.type() == QtCore.QEvent.KeyPress: + if event.key() == QtCore.Qt.Key_Delete: + # get RVA column from treeView + + item = self.widget.currentItem() + + offset = item.getOffset() # int(str(item.text(1)),0) + size = item.getSize() # int(str(item.text(2)),0) + u = offset + v = offset + size + + self.view.selector.removeSelection(u, v, TextSelection.SelectionType.PERMANENT) + # TODO: remove tree! + + item.parent().removeChild(item) + # self.widget.takeTopLevelItem(self.widget.indexOfTopLevelItem(item)) + # rva = self.widget.indexFromItem(item, 1).data().toString() + + return False diff --git a/androguard/gui/SourceViewMode.py b/androguard/gui/SourceViewMode.py new file mode 100644 index 0000000..705ecaa --- /dev/null +++ b/androguard/gui/SourceViewMode.py @@ -0,0 +1,181 @@ +from __future__ import division +from builtins import range +from androguard.gui.ViewMode import ViewMode +from androguard.gui.cemu import ConsoleEmulator +from androguard.gui import TextSelection + +from PyQt5 import QtGui, QtCore + + +class SourceViewMode(ViewMode): + def __init__(self, themes, width, height, data, cursor, widget=None): + super(SourceViewMode, self).__init__() + + self.themes = themes + + self.dataModel = data + self.addHandler(self.dataModel) + + self.width = width + self.height = height + + self.cursor = cursor + self.widget = widget + + self.refresh = True + + # background brush + self.backgroundBrush = QtGui.QBrush(self.themes['background']) + + # text font + self.font = self.themes['font'] + + # font metrics. assume font is monospaced + self.font.setKerning(False) + self.font.setFixedPitch(True) + fm = QtGui.QFontMetrics(self.font) + self._fontWidth = fm.width('a') + self._fontHeight = fm.height() + + self.textPen = QtGui.QPen(self.themes['pen'], 0, QtCore.Qt.SolidLine) + self.resize(width, height) + + self.Paints = {} + self.Ops = [] + self.newPix = None + + self.selector = TextSelection.DefaultSelection(themes, self) + + self.LINES = self.dataModel.current_class.get_source().split('\n') + + @property + def fontWidth(self): + return self._fontWidth + + @property + def fontHeight(self): + return self._fontHeight + + def setTransformationEngine(self, engine): + self.transformationEngine = engine + + def _getNewPixmap(self, width, height): + return QtGui.QPixmap(width, height) + + def resize(self, width, height): + self.width = width - width % self.fontWidth + self.height = height - height % self.fontHeight + self.computeTextArea() + self.qpix = self._getNewPixmap(self.width, self.height + self.SPACER) + self.refresh = True + + def computeTextArea(self): + self.COLUMNS = self.width // self.fontWidth + self.ROWS = self.height // self.fontHeight + self.notify(self.ROWS, self.COLUMNS) + + def getPixmap(self): + for t in self.Ops: + if len(t) == 1: + t[0]() + + else: + t[0](*t[1:]) + + self.Ops = [] + + if not self.newPix: + self.draw() + + return self.newPix + + def getDataModel(self): + return self.dataModel + + def getPageOffset(self): + return self.dataModel.getOffset() + + def getGeometry(self): + return self.COLUMNS, self.ROWS + + def draw(self, refresh=False): + if self.dataModel.getOffset() in self.Paints: + self.refresh = False + self.qpix = QtGui.QPixmap(self.Paints[self.dataModel.getOffset()]) + self.drawAdditionals() + return + + if self.refresh or refresh: + qp = QtGui.QPainter() + qp.begin(self.qpix) + self.drawTextMode(qp) + self.refresh = False + qp.end() + + self.drawAdditionals() + + def drawAdditionals(self): + self.newPix = self._getNewPixmap(self.width, self.height + self.SPACER) + qp = QtGui.QPainter() + qp.begin(self.newPix) + qp.setWindow(-50, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight) + + qp.drawPixmap(0, 0, self.qpix) + + # self.transformationEngine.decorateText() + + # highlight selected text + self.selector.highlightText() + + # draw other selections + self.selector.drawSelections(qp) + + # draw our cursor + self.drawCursor(qp) + self.drawLine(qp) + + qp.end() + + def drawLine(self, qp): + qp.fillRect(-50, 0, 50, self.ROWS * self.fontHeight, self.backgroundBrush) + + def drawTextMode(self, qp): + # draw background + qp.fillRect(0, 0, self.COLUMNS * self.fontWidth, self.ROWS * self.fontHeight, self.backgroundBrush) + + # set text pen&font + qp.setFont(self.font) + qp.setPen(self.textPen) + + cemu = ConsoleEmulator(qp, self.ROWS, self.COLUMNS) + # ast = self.dataModel.current_class.get_ast() + + for i in range(self.ROWS): + if i < len(self.LINES): + line = self.LINES[i] + cemu.writeAt(0, i, line) + + def getCursorOffsetInPage(self): + return 0 + + def getCursorAbsolutePosition(self): + offset = self.getCursorOffsetInPage() + return self.dataModel.getOffset() + offset + + def drawCursor(self, qp): + cursorX, cursorY = self.cursor.getPosition() + + xstart = cursorX + width = 1 + + qp.setBrush(QtGui.QColor(255, 255, 0)) + + qp.setOpacity(0.5) + qp.drawRect(xstart * self.fontWidth, cursorY * self.fontHeight, width * self.fontWidth, self.fontHeight + 2) + qp.setOpacity(1) + + def handleKeyEvent(self, modifiers, key, event=None): + pass + + def getColumnsbyRow(self, row): + return 0 diff --git a/androguard/gui/TextDecorators.py b/androguard/gui/TextDecorators.py new file mode 100644 index 0000000..a8377ec --- /dev/null +++ b/androguard/gui/TextDecorators.py @@ -0,0 +1,410 @@ +from __future__ import absolute_import + +import re +import string + +from PyQt5 import QtGui, QtCore +from builtins import object +from builtins import range + + +class CTextDecorator(object): + redPen = QtGui.QPen(QtGui.QColor(255, 0, 0)) + + greenPen = QtGui.QPen(QtGui.QColor(255, 255, 0)) + whitePen = QtGui.QPen(QtGui.QColor(255, 255, 255)) + + normalPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine) + + MZbrush = QtGui.QBrush(QtGui.QColor(128, 0, 0)) + grayBrush = QtGui.QBrush(QtGui.QColor(128, 128, 128)) + + def __init__(self): + pass + + +class TextDecorator(CTextDecorator): + def __init__(self, viewmode): + self.operations = [] + self.dataModel = viewmode.getDataModel() + self.viewmode = viewmode + self.penMap = {} + self.brushMap = {} + self.PenInterval = [] + + self.normalPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 1, QtCore.Qt.SolidLine) + + # if we want to generate T/F table + self.Special = string.ascii_letters + string.digits + ' .;\':;=\"?-!()/\\_' + self.Special = [False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, True, True, + True, False, False, False, False, True, True, + True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, + True, True, True, True, False, True, False, True, + False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, + True, True, True, True, True, True, True, True, + True, True, True, False, True, False, False, True, False, True, True, True, True, True, True, + True, True, True, True, True, True, True, True, True, + True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, + False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, False, False, False, False, False, False, + False, False, False, False] + + def reset(self): + self.penMap = {} + self.brushMap = {} + self.PenInterval = [] + + def getDataModel(self): + return self.dataModel + + def isText(self, c): + """ + D = [] + for i in range(256): + b = False + if self.isText(chr(i)): + b = True + + D.append(b) + + print D + sys.exit() + """ + + return self.Special[ord(c)] + + def getChar(self, idx): + # self.page = self.getDataModel().getDisplayablePage() + + + if idx < len(self.page): + return self.page[idx] + + return 0 + + def decorate(self, pageOffset=None): + + if pageOffset: + self.page = self.viewmode.getDisplayablePage(pageOffset=pageOffset) + else: + self.page = self.viewmode.getDisplayablePage() + + return self.page + + def addPenInterval(self, a, b, pen, ignoreHighlights=True): + self.PenInterval.append((a, b, pen, ignoreHighlights)) + + def choosePen(self, idx): + key = self.dataModel.getOffset() + idx + + # if we do have a pen with that index, return it if it's different than default pen + # otherwise, return the pen that was set in that interval + # the priority here is de pen from other transformations, than interval pen + for a, b, ignoreHighlights, pen in self.PenInterval: + # in interval + if a <= key <= b: + if ignoreHighlights: + return pen + + if key in self.penMap: + if self.penMap[key] == self.normalPen: + return pen + else: + return self.penMap[key] + else: + return pen + + if key in self.penMap: + return self.penMap[key] + + return self.normalPen + + def chooseBrush(self, idx): + off = self.dataModel.getOffset() + idx + if off in self.brushMap: + return self.brushMap[off] + + return None + + +class PageDecorator(TextDecorator): + def __init__(self, decorated): + pass + + def reset(self): + self.decorated.reset() + + self.penMap = {} + self.brushMap = {} + self.PenInterval = [] + + def getBrushMap(self): + return self.brushMap + + def getPenMap(self): + return self.penMap + + def doit(self): + pass + + def getDataModel(self): + return self.dataModel + + +class HighlightASCII(PageDecorator): + def __init__(self, decorated): + self.dataModel = decorated.getDataModel() + self.penMap = decorated.penMap + self.decorated = decorated + super(HighlightASCII, self).__init__(decorated) + self.dataModel = super(HighlightASCII, self).getDataModel() + + def decorate(self, pageOffset=None): + page = self.decorated.decorate(pageOffset) + + self.PenInterval = self.decorated.PenInterval + self.brushMap = self.decorated.brushMap + self.penMap = self.decorated.penMap + + off = self.dataModel.getOffset() + + Match = [(m.start(), m.end()) for m in re.finditer(b'([a-zA-Z0-9\\-\\\\.%*:/? _<>]){4,}', page)] + for s, e in Match: + for i in range(e - s): + idx = off + s + i + if idx not in self.penMap: + self.penMap[off + s + i] = self.redPen + + self.page = page + return self.page + + +class HighlightPrefix(PageDecorator): + def __init__(self, decorated, text, additionalLength=0, brush=None, pen=None): + super(HighlightPrefix, self).__init__(decorated) + self.dataModel = decorated.getDataModel() + self.decorated = decorated + + self.additionalLength = additionalLength + self.brush = brush + self.text = text + self.pen = pen + + def decorate(self, pageOffset=None): + page = self.decorated.decorate(pageOffset) + + self.PenInterval = self.decorated.PenInterval + self.brushMap = self.decorated.brushMap + self.penMap = self.decorated.penMap + + self.page = self.highliteWithPrefix(page, self.text, self.additionalLength, self.brush, self.pen) + return self.page + + def highliteWithPrefix(self, page, text, additionalLength=0, brush=None, pen=None): + + # todo: nu am gasit o metoda mai eleganta pentru a selecta toate aparitiile ale lui text + # regexp nu merg, "bad re expression" + lenText = len(text) + M = [] + idx = 0 + if lenText > 0: + while idx < len(page): + idx = page.find(text, idx, len(page)) + + if idx == -1: + break + + M.append((idx, lenText + additionalLength)) + idx += lenText + additionalLength + + off = self.dataModel.getOffset() + for start, length in M: + + for i in range(length): + self.penMap[off + start + i] = pen + self.brushMap[off + start + i] = brush + + return page + + +class HighlightWideChar(PageDecorator): + def __init__(self, decorated): + super(HighlightWideChar, self).__init__(decorated) + + self.dataModel = decorated.getDataModel() + self.decorated = decorated + + def decorate(self, pageOffset=None): + self.page = self.decorated.decorate(pageOffset) + + self.PenInterval = self.decorated.PenInterval + self.brushMap = self.decorated.brushMap + self.penMap = self.decorated.penMap + + self.page = self.highliteWidechar2(self.page) + return self.page + + def highliteWidechar2(self, page): + + pageStart = self.dataModel.getOffset() + pageEnd = pageStart + len(page) + + touched = False + # for s, e in self.Intervals: + # touched = True + + if not touched: + # expand + Match = [(m.start(), m.end()) for m in re.finditer(r'([a-zA-Z0-9\-\\.%*:/? ]\x00){4,}', page)] + for s, e in Match: + for i in range(e - s): + self.penMap[pageStart + s + i] = QtGui.QPen(QtGui.QColor(255, 255, 0)) + + # get rid of '\x00' + string = page[s:e:2] + l = len(string) + # copy string that has no zeros + page[s:s + l] = string + # fill with zeros the remaining space + page[s + l: s + 2 * l] = '\x00' * l + + return page + + ### todo: other way to highlight widechar, should test and see which one is faster + """ + def _changeText(self, page, page_start, I): + page_end = page_start + len(page) + for obj in I: + if obj['s'] >= page_start and obj['e'] <= page_end: + page[obj['s']-page_start:obj['e']-page_start] = obj['text'] + + + def _expand(self, page, off, start, end): + I = [] + start = start - off + end = end - off + i = start + while i < end: + + if i+1 < end: + if page[i+1] == 0 and self.isText(chr(page[i])): + k = 0 + for j in xrange(i, end, 2): + if j + 1 < end: + if self.isText(chr(page[j])) and page[j+1] == 0: + k += 1 + else: + break + if k > 4: + if i+k*2 <= end: + + obj = {} + obj['s'] = off + i + 1 + obj['e'] = off + i + k * 2 + + for idx, j in enumerate(range(i+1, i + k*2)): + if j > i + k: + page[j] = 0 + #self.penMap[j] = self.greenPen + + elif j+idx+1 < end: + page[j] = page[j + idx + 1] + self.penMap[off + j] = self.greenPen + + obj['text'] = page[i+1:i+k*2] + I.append(obj) + self.penMap[off + i] = self.greenPen + i += k*2 + + i = i + 1 + + return I + pass + + + + def highliteWidechar(self, page): + off = self.dataModel.getOffset() + page_end = off + len(page) + touched = False + #print '-------' + for idx, iv in enumerate(self.Intervals): + #print 'acum aici' + # in interval + s, e, I = iv + + #print s ,e + #print page_end + page_start = off + if off >= s: + touched = True + if page_end <= e: + self._changeText(page, off, I) + else: + if off <= e: + I2 = self._expand(page, off, e, page_end) + for obj in I2: + I.append(obj) + e = page_end + self.Intervals[idx] = (s, e, I) + else: + # suntem cu mai multe pagini mai jos + touched = False + + else: + if page_end <= e and page_end >= s: + # scrolled up + I2 = self._expand(page, off, page_start, s) + for obj in I2: + I.append(obj) + s = page_start + self.Intervals[idx] = (s, e, I) + touched = True + else: + # out of this interval + touched = False + + + if not touched or touched: + #print 'aici' + self.Intervals.append((off, page_end, self._expand(page, off, off, page_end))) + + + """ + + +class RangePen(PageDecorator): + def __init__(self, decorated, a, b, pen, ignoreHighlights=True): + super(RangePen, self).__init__(decorated) + + self.dataModel = decorated.getDataModel() + self.decorated = decorated + self.a = a + self.b = b + self.pen = pen + self.already = False + self.ignoreHighlights = ignoreHighlights + + def decorate(self, pageOffset=None): + self.page = self.decorated.decorate(pageOffset) + self.PenInterval = self.decorated.PenInterval + self.brushMap = self.decorated.brushMap + self.penMap = self.decorated.penMap + + if not self.already: + self.addPenInterval(self.a, self.b, self.ignoreHighlights, self.pen) + self.already = True + + return self.page diff --git a/androguard/gui/TextSelection.py b/androguard/gui/TextSelection.py new file mode 100644 index 0000000..39ed64d --- /dev/null +++ b/androguard/gui/TextSelection.py @@ -0,0 +1,404 @@ +from __future__ import division +# +# Format Viewer, Marius TIVADAR, 2014 +# +# + +from builtins import object +from PyQt5 import QtGui + + +class SelectionType(object): + NORMAL = 0 + PERMANENT = 1 + TEXTHIGHLIGHT = 2 + + +class Selection(object): + def __init__(self, themes, viewMode): + self.themes = themes + self.viewMode = viewMode + self.selecting = False + self.Selections = [] + self.PermanentSelections = [] + self.MAX_SELECTIONS = 1 + self.defaultBrush = QtGui.QBrush(self.themes['selection']) + + self.last = 0 + self.HighlightSelections = [] + + def drawSelection(self, qp, start, end, brush=None, opacity=0.4): + raise Exception("Not Implemented") + + def addSelection(self, t, seltype=None): + if len(t) == 4: + u, v, b, o = t + else: + u, v = t + b, o = None, None + + if not o: + o = 0.4 + + if not b: + b = self.defaultBrush + + if u - v == 0: + return + + t = u, v, b, o + + if seltype == SelectionType.NORMAL: + if len(self.Selections) >= self.MAX_SELECTIONS: + self.Selections = [] + + self.Selections.append(t) + + if seltype == SelectionType.PERMANENT: + for w in self.PermanentSelections: + if t[0] == w[0] and t[1] == w[1]: + return False + + # u, v not found + self.PermanentSelections.append(t) + + if seltype == SelectionType.TEXTHIGHLIGHT: + self.HighlightSelections.append(t) + + return True + + def removeSelection(self, u, v, seltype): + if seltype == SelectionType.NORMAL: + L = self.selectionStartOffset + + elif seltype == SelectionType.PERMANENT: + L = self.PermanentSelections + + elif seltype == SelectionType.TEXTHIGHLIGHT: + L = self.HighlightSelections + + else: + raise Exception("Selection type unknown") + + L[:] = [t for t in L if t[0] != u and t[1] != v] + return + + def drawSelections(self, qp): + # draw permanent + for t in self.PermanentSelections: + start, end, b, o = t + self.drawSelection(qp, start, end, brush=b, opacity=o) + + # draw already selected + for t in self.Selections: + start, end, b, o = t + self.drawSelection(qp, start, end) + + # + for t in self.HighlightSelections: + start, end, b, o = t + self.drawSelection(qp, start, end) + self.HighlightSelections = [] + + # draw current + if self.selecting: + self.drawSelection(qp, *self.getCurrentSelection()) + + def resetSelections(self): + self.Selections = [] + + def startSelection(self): + if not self.selecting: + self.selecting = True + self.selectionStartOffset = self.viewMode.getCursorAbsolutePosition() + if len(self.Selections) >= self.MAX_SELECTIONS: + self.Selections = [] + + def getCurrentSelection(self): + if self.selecting: + a = self.selectionStartOffset + b = self.viewMode.getCursorAbsolutePosition() + 1 + if a < b: + return a, b + else: + return b, a + else: + for s in self.Selections: + u, v, b, o = s + # pass auf! , in theory we could have more then one normal selection + # so here the first one is returned. + # but currently, by design we could only have one NORMAL selection + return u, v + + # if self.last: + # return self.last + + return None + + def stopSelection(self): + if self.selecting: + u, v = self.getCurrentSelection() + + self.addSelection((u, v, QtGui.QBrush(self.themes['selection']), 0.4), type=SelectionType.NORMAL) + self.last = u, v + + self.selecting = False + self.selectionStartOffset = None + + def highlightText(self): + dataModel = self.viewMode.getDataModel() + page = self.viewMode.getDisplayablePage() + + # for a search-in-page + t = self.getCurrentSelection() + + if not t: + # no selection + return + + start, end = t + + if start == end: + return + + text = dataModel.getStream(start, end) + Exclude = [start] + + cols, rows = self.viewMode.getGeometry() + + # find all occurrence + lenText = len(text) + M = [] + idx = 0 + if lenText > 0: + while idx < len(page): + idx = page.find(text, idx, len(page)) + + if idx == -1: + break + M.append((idx, lenText)) + idx += lenText + + # Match = [(m.start(), m.end()) for m in re.finditer(bytes(text), bytes(page))] + + for start, end in M: + # print start, end + # self._makeSelection(qp, start, end, cols, rows) + off = dataModel.getOffset() + if off + start not in Exclude: + # self._makeSelection(off + start, off + start + end, brush=QtGui.QBrush(QtGui.QColor(125, 255, 0))) + # self.viewMode.selector.addSelection((off+start, off + start + end, QtGui.QBrush(QtGui.QColor(125, 255, 0)), 0.4)) + self.addSelection((off + start, off + start + end, QtGui.QBrush(self.themes['selection']), 0.4), + type=SelectionType.TEXTHIGHLIGHT) + + +class DefaultSelection(Selection): + def __init__(self, themes, viewMode): + super(DefaultSelection, self).__init__(themes, viewMode) + self.MAX_SELECTIONS = 1 + + def _makeSelection(self, qp, start, end, brush): + if not brush: + brush = QtGui.QBrush(self.themes['selection']) + dataModel = self.viewMode.getDataModel() + off = dataModel.getOffset() + length = len(self.viewMode.getDisplayablePage()) + cols, rows = self.viewMode.getGeometry() + + # return if out of view + if end < off: + return + + if start > off + length: + return + + if start < off: + d0 = 0 + else: + d0 = start - off + + if end > off + length: + d1 = length + else: + d1 = end - off + + mark = True + height = 14 + + qp.setOpacity(0.4) + while mark: + if d0 // cols == d1 // cols: + qp.fillRect((d0 % cols) * 8, (d0 // cols) * height, (d1 - d0) * 8, 1 * height, brush) + d0 += (d1 - d0) + else: + qp.fillRect((d0 % cols) * 8, (d0 // cols) * height, (cols - d0 % cols) * 8, 1 * height, brush) + d0 += (cols - d0 % cols) + + if d1 - d0 <= 0: + mark = False + qp.setOpacity(1) + + def drawSelection(self, qp, start, end, brush=None, opacity=0.4): + if not brush: + brush = QtGui.QBrush(self.themes['selection']) + + dataModel = self.viewMode.getDataModel() + off = dataModel.getOffset() + length = len(self.viewMode.getDisplayablePage()) + cols, rows = self.viewMode.getGeometry() + + # return if out of view + if end < off: + return + + if start > off + length: + return + + if start < off: + d0 = 0 + else: + d0 = start - off + + if end > off + length: + d1 = length + else: + d1 = end - off + + mark = True + height = self.viewMode.fontHeight + width = self.viewMode.fontWidth + + qp.setOpacity(opacity) + + offset = 2 + + while mark: + if d0 // cols == d1 // cols: + qp.fillRect((d0 % cols) * width, (d0 // cols) * height + offset, (d1 - d0) * width, 1 * height, brush) + d0 += (d1 - d0) + else: + qp.fillRect((d0 % cols) * width, (d0 // cols) * height + offset, (cols - d0 % cols) * width, 1 * height, + brush) + d0 += (cols - d0 % cols) + + if d1 - d0 <= 0: + mark = False + qp.setOpacity(1) + + +class HexSelection(Selection): + def __init__(self, themes, viewMode): + super(HexSelection, self).__init__(themes, viewMode) + self.MAX_SELECTIONS = 1 + + def drawSelection(self, qp, start, end, brush=None, opacity=0.4): + if not brush: + brush = QtGui.QBrush(self.themes['selection']) + + dataModel = self.viewMode.getDataModel() + off = dataModel.getOffset() + length = len(self.viewMode.getDisplayablePage()) + cols, rows = self.viewMode.getGeometry() + + # return if out of view + if end < off: + return + + if start > off + length: + return + + if start < off: + d0 = 0 + else: + d0 = start - off + + if end > off + length: + d1 = length + else: + d1 = end - off + + mark = True + height = self.viewMode.fontHeight + width = self.viewMode.fontWidth + + qp.setOpacity(opacity) + while mark: + if d0 // cols == d1 // cols: + # +2 is an offset for letters + qp.fillRect(3 * (d0 % cols) * width, (d0 // cols) * height + 2, 3 * (d1 - d0) * width - width, + 1 * height, brush) + qp.fillRect(3 * cols * width + self.viewMode.gap * width + (d0 % cols) * width, + (d0 // cols) * height + 2, (d1 - d0) * width, 1 * height, brush) + + d0 += (d1 - d0) + else: + qp.fillRect(3 * (d0 % cols) * width, (d0 // cols) * height + 2, 3 * (cols - d0 % cols) * width - width, + 1 * height, brush) + qp.fillRect(3 * cols * width + self.viewMode.gap * width + (d0 % cols) * width, + (d0 // cols) * height + 2, (cols - d0 % cols) * width, 1 * height, brush) + + d0 += (cols - d0 % cols) + + if d1 - d0 <= 0: + mark = False + qp.setOpacity(1) + + +class DisasmSelection(Selection): + def __init__(self, themes, viewMode): + super(DisasmSelection, self).__init__(themes, viewMode) + self.MAX_SELECTIONS = 1 + + def drawSelection(self, qp, start, end, brush=None, opacity=0.4): + if not brush: + brush = QtGui.QBrush(self.themes['selection']) + + dataModel = self.viewMode.getDataModel() + off = dataModel.getOffset() + length = sum([o.size for o in self.viewMode.OPCODES]) # TODO: not nice! + cols, rows = self.viewMode.getGeometry() + + # return if out of view + if end < off: + return + + if start > off + length: + return + + if start < off: + d0 = 0 + else: + d0 = start - off + + if end > off + length: + d1 = length + else: + d1 = end - off + + mark = True + height = self.viewMode.fontHeight + width = self.viewMode.fontWidth + + qp.setOpacity(opacity) + + offset = 2 + + size = 0 + for i, asm in enumerate(self.viewMode.OPCODES): + if size + asm.size > d0 and size <= d1: + + # compute x offset + x = d0 - size + if size > d0: + x = 0 + + # compute width + w = asm.size + if size + asm.size > d1: + w = d1 - size + + qp.fillRect(x * 3 * width, i * height + offset, (w - x) * 3 * width - width, 1 * height, brush) + + size += asm.size + + qp.setOpacity(1) diff --git a/androguard/gui/ViewMode.py b/androguard/gui/ViewMode.py new file mode 100644 index 0000000..c37c05a --- /dev/null +++ b/androguard/gui/ViewMode.py @@ -0,0 +1,135 @@ +from builtins import chr +from builtins import object + + +class Observable(object): + def __init__(self): + self.Callbacks = [] + + def addHandler(self, h): + if h not in self.Callbacks: + self.Callbacks.append(h) + + def notify(self, rows, cols): + for cbk in self.Callbacks: + cbk.update_geometry(rows, cols) + + +class ViewMode(Observable, object): + SPACER = 4 + + def __init__(self): + super(ViewMode, self).__init__() + self.selector = None + self._edit = False + + """ + Convert IBM437 character codes 0x00 - 0xFF into Unicode. + http://svn.openmoko.org/trunk/src/host/qemu-neo1973/phonesim/lib/serial/qatutils.cpp + """ + cp437ToUnicode = [0x0020, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001c, 0x001b, 0x007f, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x001a, + 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7, + 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5, + 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, + 0x00ff, 0x00d6, 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, + 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba, + 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, + 0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, + 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f, + 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, + 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, + 0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580, + 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x03bc, 0x03c4, + 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, + 0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, + 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0] + + def cp437(self, c): + return chr(self.cp437ToUnicode[c]) + + def getPageOffset(self): + NotImplementedError('method not implemented.') + + # return cols, rows of the view + def getGeometry(self): + NotImplementedError('method not implemented.') + + def startSelection(self): + NotImplementedError('method not implemented.') + + def stopSelection(self): + NotImplementedError('method not implemented.') + + def draw(self, refresh=False): + NotImplementedError('method not implemented.') + + # returns x,y cursor position in page + def getCursorOffsetInPage(self): + x, y = self.cursor.getPosition() + return y * self.COLUMNS + x + + def handleKeyPressEvent(self, modifier, key): + raise Exception("not implemented") + + def handleKeyReleaseEvent(self, modifier, key): + raise Exception("not implemented") + + # get what's on the screen + # pageOffset - which page. None - current page + # + # return bytearray containing what it is displayed currently on the screen + def getDisplayablePage(self, pageOffset=None): + data = self.dataModel.getData() + dataOffset = self.dataModel.getOffset() + cols, rows = self.getGeometry() + if pageOffset: + return bytearray(data[dataOffset:dataOffset + rows * cols * pageOffset]) + + return bytearray(data[dataOffset:dataOffset + rows * cols]) + + # moves cursor to offset in page, or moves to page + def goTo(self, offset): + # typical goTo + + if self.dataModel.offsetInPage(offset): + # if in current page, move cursore + x, y = self.dataModel.getXYInPage(offset) + self.cursor.moveAbsolute(y, x) + self.draw(refresh=False) + else: + # else, move page + self.dataModel.goTo(offset) + self.cursor.moveAbsolute(0, 0) + self.draw(refresh=True) + + # self.draw(refresh=False) + if self.widget: + self.widget.update() + + def isEditable(self): + return False + + def setEditMode(self, value): + self._edit = value + + def isInEditMode(self): + return self._edit + + def getHeaderInfo(self): + return '' diff --git a/androguard/gui/__init__.py b/androguard/gui/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/androguard/gui/__init__.py @@ -0,0 +1 @@ + diff --git a/androguard/gui/androguard.ico b/androguard/gui/androguard.ico new file mode 100644 index 0000000..ccb4130 Binary files /dev/null and b/androguard/gui/androguard.ico differ diff --git a/androguard/gui/annotation.ui b/androguard/gui/annotation.ui new file mode 100644 index 0000000..1527d87 --- /dev/null +++ b/androguard/gui/annotation.ui @@ -0,0 +1,85 @@ + + + Form + + + + 0 + 0 + 708 + 513 + + + + Form + + + + + 10 + 10 + 691 + 461 + + + + + Name + + + + + Offset + + + + + Size + + + + + Value + + + + + Description + + + + + Color + + + + + + + 610 + 480 + 93 + 28 + + + + Load + + + + + + 510 + 480 + 93 + 28 + + + + Save + + + + + + diff --git a/androguard/gui/apiwindow.py b/androguard/gui/apiwindow.py new file mode 100644 index 0000000..f2d5f1e --- /dev/null +++ b/androguard/gui/apiwindow.py @@ -0,0 +1,94 @@ +from PyQt5 import QtCore, QtGui, QtWidgets +from androguard.gui.xrefwindow import XrefDialogMethod + + +class APIWindow(QtWidgets.QWidget): + def __init__(self, parent=None, win=None, session=None): + super(APIWindow, self).__init__(parent) + self.mainwin = win + self.session = session + self.title = "API" + + self.filterPatternLineEdit = QtWidgets.QLineEdit() + self.filterPatternLabel = QtWidgets.QLabel("&Filter method name pattern:") + self.filterPatternLabel.setBuddy(self.filterPatternLineEdit) + self.filterPatternLineEdit.textChanged.connect(self.filterRegExpChanged) + + self.methodswindow = APIValueWindow(self, win, session) + + sourceLayout = QtWidgets.QVBoxLayout() + sourceLayout.addWidget(self.methodswindow) + sourceLayout.addWidget(self.filterPatternLabel) + sourceLayout.addWidget(self.filterPatternLineEdit) + + self.setLayout(sourceLayout) + + def filterRegExpChanged(self, value): + regExp = QtCore.QRegExp(value) + self.methodswindow.proxyModel.setFilterRegExp(regExp) + + +class APIValueWindow(QtWidgets.QTreeView): + def __init__(self, parent=None, win=None, session=None): + super(APIValueWindow, self).__init__(parent) + self.mainwin = win + self.session = session + self.title = "API" + + self.reverse_methods = {} + + self.proxyModel = QtCore.QSortFilterProxyModel() + self.proxyModel.setDynamicSortFilter(True) + + nb = 0 + for digest, d, dx in self.session.get_objects_dex(): + for external_class in dx.get_external_classes(): + nb += len(external_class.orig_class.methods) + + self.model = QtGui.QStandardItemModel(nb, 5, + self) + + self.model.setHeaderData(0, QtCore.Qt.Horizontal, "Name") + self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Class Name") + self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Prototype") + self.model.setHeaderData(3, QtCore.Qt.Horizontal, "Digest") + + row = 0 + for digest, d, dx in self.session.get_objects_dex(): + for external_class in dx.get_external_classes(): + for method in list(external_class.orig_class.methods.values()): + self.model.setData(self.model.index( + row, 0, QtCore.QModelIndex()), method.get_name()) + self.model.setData(self.model.index( + row, 1, QtCore.QModelIndex()), method.get_class_name()) + self.model.setData(self.model.index( + row, 2, QtCore.QModelIndex()), method.get_descriptor()) + self.model.setData(self.model.index( + row, 3, QtCore.QModelIndex()), digest) + self.reverse_methods[method.get_name() + method.get_class_name() + method.get_descriptor() + ] = dx.get_method_analysis(method) + row += 1 + + self.proxyModel.setSourceModel(self.model) + + self.setRootIsDecorated(False) + self.setAlternatingRowColors(True) + self.setModel(self.proxyModel) + self.setSortingEnabled(True) + self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + + self.doubleClicked.connect(self.slotDoubleClicked) + + def slotDoubleClicked(self, mi): + mi = self.proxyModel.mapToSource(mi) + row = mi.row() + column = mi.column() + + if column == 0: + xwin = XrefDialogMethod( + parent=self.mainwin, + win=self.mainwin, + method_analysis=self.reverse_methods[self.model.item(row).text() + + self.model.item(row, 1).text() + + self.model.item(row, 2).text()]) + xwin.show() diff --git a/androguard/gui/binwindow.py b/androguard/gui/binwindow.py new file mode 100644 index 0000000..0775ca1 --- /dev/null +++ b/androguard/gui/binwindow.py @@ -0,0 +1,392 @@ +from __future__ import division + +from PyQt5 import QtGui, QtCore, QtWidgets +from PyQt5.uic import loadUi + +from androguard.gui.Banners import Banners, FileAddrBanner, TopBanner, BottomBanner +from androguard.gui.cemu import Cursor +from androguard.gui.TextDecorators import HighlightASCII, TextDecorator +from androguard.gui import TextSelection + +import pyperclip +import os + +import logging +log = logging.getLogger("androguard.gui") + +class SearchWindow(QtWidgets.QDialog): + def __init__(self, parent, plugin, searchable): + super(SearchWindow, self).__init__(parent) + self.searchable = searchable + self.parent = parent + self.plugin = plugin + self.oshow = super(SearchWindow, self).show + + root = os.path.dirname(os.path.realpath(__file__)) + self.ui = loadUi(os.path.join(root, 'search.ui'), baseinstance=self) + self.ui.setWindowTitle('Search') + self._lastText = '' + + self.initUI() + + def show(self): + # TODO: remember position? resize plugin windows when parent resize? + + width = self.ui.size().width() + 15 + height = self.ui.size().height() + 15 + + self.move((self.parent.width() - width) // 2, (self.parent.height() - height) // 2) + self.ui.lineEdit.setText(self._lastText) + self.ui.lineEdit.selectAll() + self.oshow() + + def initUI(self): + + self.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + + shortcut = QtWidgets.QShortcut(QtGui.QKeySequence("/"), self, self.close, self.close) + + self.ui.pushButton.clicked.connect(self.onClicked) + + width = self.ui.size().width() + 15 + height = self.ui.size().height() + 15 + self.setFixedSize(width, height) + + def onClicked(self): + text = self.ui.lineEdit.text() + text = str(text) + + hexstr = '0123456789abcdefABCDEF' + if self.ui.checkHex.isChecked(): + T = text.split(' ') + oldtext = text + text = '' + for t in T: + if len(t) != 2: + reply = QtWidgets.QMessageBox.warning(self, 'Qiew', "Hex string with errors.", + QtWidgets.QMessageBox.Ok) + self.close() + return + + if t[0] in hexstr and t[1] in hexstr: + o = int(t, 16) + text += chr(o) + else: + reply = QtWidgets.QMessageBox.warning(self, 'Qiew', "Hex string with errors.", + QtWidgets.QMessageBox.Ok) + self.close() + return + + self._lastText = oldtext + + else: + self._lastText = text + + if not self.ui.checkHex.isChecked(): + text = text.encode('utf-8') + + idx = self.searchable.search(text) + if idx == -1: + reply = QtWidgets.QMessageBox.warning(self, 'Qiew', "Nothing found.", QtWidgets.QMessageBox.Ok) + + self.parent.viewMode.draw(refresh=True) + self.close() + + +class Observable(object): + def __init__(self): + self.Callbacks = [] + + def addHandler(self, h): + if h not in self.Callbacks: + self.Callbacks.append(h) + + def notify(self, viewMode): + for cbk in self.Callbacks: + cbk.changeViewMode(viewMode) + + +class Observer(object): + def changeViewMode(self, viewMode): + self._viewMode = viewMode + + +class Searchable(Observer): + def __init__(self, dataModel, viewMode): + self._viewMode = viewMode + self._dataModel = dataModel + self._lastIdx = -1 + self._lastText = '' + + def next(self, start=None): + data = self._dataModel.getData() + text = self._lastText + + if not start: + idx = self._lastIdx + 1 + else: + idx = start + + if idx > -1: + self._search(data, text, idx) + + @property + def lastText(self): + return self._lastText + + def previous(self, start=None): + data = self._dataModel.getData() + text = self._lastText + + if not start: + idx = self._lastIdx + else: + idx = start + + if idx > -1: + self._search(data, text, idx, previous=True) + + def _search(self, data, text, start, previous=False): + + self._lastText = text + if text == '': + return -1 + + if not previous: + idx1 = data.find(text, start) + text1 = '\0'.join(text) + + idx2 = data.find(text1, start) + + idx = idx1 + if idx1 == -1: + idx = idx2 + else: + if idx2 < idx1 and idx2 != -1: + idx = idx2 + + else: + idx1 = data.rfind(text, 0, start) + text1 = '\0'.join(text) + + idx2 = data.rfind(text1, 0, start) + + idx = idx1 + + if idx1 == -1: + idx = idx2 + else: + if idx2 > idx1 and idx2 != -1: + idx = idx2 + + if idx > -1: + self._lastIdx = idx + + if idx > -1: + self._viewMode.selector.addSelection((idx, idx + len(text), QtGui.QBrush(QtGui.QColor(125, 0, 100)), 0.8), + type=TextSelection.SelectionType.NORMAL) + self._viewMode.goTo(idx) + + return idx + + def search(self, text): + data = self._dataModel.getData() + return self._search(data, text, 0) + + +class binWidget(QtWidgets.QWidget, Observable): + scrolled = QtCore.pyqtSignal(int, name='scroll') + + def __init__(self, parent, source, title): + super(binWidget, self).__init__() + Observable.__init__(self) + self.parent = parent + + self.title = title + self.active = False + # offset for text window + # self.data = mapped + self.dataOffset = 0 + + self.dataModel = source + self.cursor = Cursor(0, 0) + + self.themes = { + 'font': QtGui.QFont('Monaco', 9, QtGui.QFont.Light), + 'background': QtGui.QColor(0x00, 0x2b, 0x36), + 'background_cursor': QtGui.QColor(255, 255, 0), + 'selection': QtGui.QColor(125, 255, 0), + 'pen': QtGui.QColor(0xb5, 0x89, 0x00) + } + + self.multipleViewModes = [] + for view_mode in self.dataModel.GetViews(): + v = view_mode(self.themes, self.size().width(), self.size().height(), self.dataModel, self.cursor, self) + textDecorator = HighlightASCII(TextDecorator(v)) + + v.setTransformationEngine(textDecorator) + + self.multipleViewModes.append(v) + + self.viewMode = self.multipleViewModes[0] + + self.Banners = Banners() + + self.Banners.add(FileAddrBanner(self.themes, self.dataModel, self.viewMode)) + self.Banners.add(TopBanner(self.themes, self.dataModel, self.viewMode)) + self.Banners.add(BottomBanner(self.themes, self.dataModel, self.viewMode)) + + self.offsetWindow_h = 0 + self.offsetWindow_v = 0 + self.searchable = Searchable(self.dataModel, self.viewMode) + + self.initUI() + + self.searchWindow = SearchWindow(self, None, self.searchable) + + self.addHandler(self.searchable) + self.addHandler(self.Banners) + + self.notify(self.viewMode) + + def enable(self): + self.active = True + + def disable(self): + self.active = False + + def scroll_from_outside(self, i): + self.update() + + def initUI(self): + self.setFocusPolicy(QtCore.Qt.StrongFocus) + + self.setMinimumSize(1, 30) + self.activateWindow() + self.setFocus() + + def switchViewMode(self): + self.multipleViewModes = self.multipleViewModes[1:] + [self.multipleViewModes[0]] + self.viewMode = self.multipleViewModes[0] + + # notify obervers + self.notify(self.viewMode) + + def _resize(self): + + self.Banners.resize(self.size().width() - self.offsetWindow_h, self.size().height() - self.offsetWindow_v) + + # compute space ocupated by banners + offsetLeft = self.offsetWindow_h + self.Banners.getLeftOffset() + offsetBottom = self.offsetWindow_v + self.Banners.getBottomOffset() + self.Banners.getTopOffset() + + # resize window, substract space ocupated by banners + self.viewMode.resize(self.size().width() - offsetLeft, self.size().height() - offsetBottom) + + # event handlers + def resizeEvent(self, e): + self._resize() + + def paintEvent(self, e): + qp = QtGui.QPainter() + qp.begin(self) + qp.setOpacity(1) + + offsetLeft = self.offsetWindow_h + self.Banners.getLeftOffset() + offsetBottom = self.offsetWindow_v + self.Banners.getTopOffset() + + qp.drawPixmap(offsetLeft, offsetBottom, self.viewMode.getPixmap()) + + self.Banners.draw(qp, self.offsetWindow_h, self.offsetWindow_v, self.size().height()) + + qp.end() + + def eventFilter(self, watched, event): + if not self.active: + return False + + if event.type() == QtCore.QEvent.KeyRelease: + key = event.key() + modifiers = event.modifiers() + if self.viewMode.handleKeyEvent(modifiers, key, event=event): + self.update() + + if event.type() == QtCore.QEvent.KeyPress: + # TODO: should we accept only certain keys ? + key = event.key() + modifiers = event.modifiers() + if key == QtCore.Qt.Key_F2: + if self.viewMode.isEditable(): + if self.viewMode.isInEditMode(): + self.viewMode.setEditMode(False) + else: + self.viewMode.setEditMode(True) + + self.viewMode.draw(refresh=False) + # switch view mode + if key == QtCore.Qt.Key_V: + log.debug('SWITCH VIEW') + offs = self.viewMode.getCursorOffsetInPage() + base = self.viewMode.getDataModel().getOffset() + self.switchViewMode() + self._resize() + self.viewMode.goTo(base + offs) + self.update() + + if key == QtCore.Qt.Key_S: + log.debug('OPEN SOURCE') + self.parent.openSourceWindow(self.dataModel.current_class) + + if event.modifiers() & QtCore.Qt.ControlModifier: + if key == QtCore.Qt.Key_Insert: + if self.viewMode.selector.getCurrentSelection(): + a, b = self.viewMode.selector.getCurrentSelection() + + hx = '' + for s in self.dataModel.getStream(a, b): + hx += '{:02x}'.format(s) + + pyperclip.copy(hx) + del pyperclip + + if event.modifiers() & QtCore.Qt.ShiftModifier: + if key == QtCore.Qt.Key_Insert: + import re + hx = pyperclip.paste() + L = re.findall(r'.{1,2}', hx, re.DOTALL) + + array = '' + for s in L: + array += chr(int(s, 16)) + + self.dataModel.write(0, array) + self.viewMode.draw(True) + del pyperclip + + if not self.viewMode.isInEditMode(): + if key == QtCore.Qt.Key_Slash: + self.searchWindow.show() + + if key == QtCore.Qt.Key_N: + self.searchable.next(self.viewMode.getCursorAbsolutePosition() + 1) + + if key == QtCore.Qt.Key_B: + self.searchable.previous(self.viewMode.getCursorAbsolutePosition()) + + # handle keys to view plugin + if self.viewMode.handleKeyEvent(modifiers, key, event=event): + event.accept() + self.update() + return True + + return False + + def setTextViewport(self, qp): + qp.setViewport(self.offsetWindow_h, self.offsetWindow_v, self.size().width(), self.size().height()) + qp.setWindow(0, 0, self.size().width(), self.size().height()) + + def needsSave(self): + return self.dataModel.isDirty() + + def save(self): + return self.dataModel.flush() diff --git a/androguard/gui/cemu.py b/androguard/gui/cemu.py new file mode 100644 index 0000000..7fa0a9c --- /dev/null +++ b/androguard/gui/cemu.py @@ -0,0 +1,112 @@ +from builtins import object +from PyQt5 import QtGui + +import logging +log = logging.getLogger("androguard.gui") + + +class Cursor(object): + def __init__(self, x, y): + self.x = x + self.y = y + + def move(self, dx, dy): + self.x += dx + self.y += dy + + def moveAbsolute(self, x, y): + self.x = x + self.y = y + + def getPosition(self): + return self.x, self.y + + +def enum(**enums): + return type('Enum', (), enums) + + +Directions = enum(Left=1, Right=2, Up=3, Down=4, End=5, Home=6, CtrlEnd=7, CtrlHome=8) + + +class ConsoleEmulator(object): + def __init__(self, qp, rows, cols): + self.qp = qp + self._x = 0 + self._y = 0 + self._rows = rows + self._cols = cols + + fm = QtGui.QFontMetrics(self.qp.font()) + self.fontWidth = fm.width('a') + self.fontHeight = fm.height() + + def incrementPosition(self): + if self._x < self._cols - 1: + self._x += 1 + else: + self._x = 0 + self._y += 1 + + def newLine(self): + self.LF() + self.CR() + + def LF(self): + if self._y < self._rows: + self._y += 1 + + def CR(self): + self._x = 0 + + def _validatePosition(self, x, y): + if x >= self._cols: + log.warning("x > cols") + return False + + if y >= self._rows: + log.warning("y > rows") + return False + return True + + def write(self, s, noBackgroudOnSpaces=False): + background = self.qp.backgroundMode() + for c in s: + if self._validatePosition(self._x, self._y): + if noBackgroudOnSpaces and c == ' ': + self.qp.setBackgroundMode(0) + + self.qp.drawText(self._x * self.fontWidth, self.fontHeight + self._y * self.fontHeight, c) + self.incrementPosition() + self.qp.setBackgroundMode(background) + + def write_c(self, c, noBackgroudOnSpaces=False): + background = self.qp.backgroundMode() + if self._validatePosition(self._x, self._y): + if noBackgroudOnSpaces and c == ' ': + self.qp.setBackgroundMode(0) + + self.qp.drawText(self._x * self.fontWidth, self.fontHeight + self._y * self.fontHeight, c) + self.incrementPosition() + self.qp.setBackgroundMode(background) + + def getXY(self): + return self._x, self._y + + def writeAt(self, x, y, s, noBackgroudOnSpaces=False): + self.gotoXY(x, y) + self.write(s, noBackgroudOnSpaces) + + def writeAt_c(self, x, y, c, noBackgroudOnSpaces=False): + self.gotoXY(x, y) + self.write_c(c, noBackgroudOnSpaces) + + def writeLn(self): + if True: # self._validatePosition(self._x, self._y): + self._y += 1 + self._x = 0 + + def gotoXY(self, x, y): + if self._validatePosition(x, y): + self._x = x + self._y = y diff --git a/androguard/gui/fileloading.py b/androguard/gui/fileloading.py new file mode 100644 index 0000000..080ce3e --- /dev/null +++ b/androguard/gui/fileloading.py @@ -0,0 +1,53 @@ +from PyQt5 import QtCore + +import androguard.session as session +from androguard.core import androconf +import logging + +log = logging.getLogger("androguard.gui") + + +class FileLoadingThread(QtCore.QThread): + """ + Loads a file into the session and emits a bool value + """ + + file_loaded = QtCore.pyqtSignal(bool) + + def __init__(self, parent=None): + QtCore.QThread.__init__(self, parent) + self.parent = parent + + self.file_path = None + self.incoming_file = () + + def load(self, file_path): + self.file_path = file_path + if file_path.endswith(".ag"): + self.incoming_file = (file_path, 'SESSION') + else: + file_type = androconf.is_android(file_path) + log.debug("Found filetype: {}".format(file_type)) + self.incoming_file = (file_path, file_type) + self.start(QtCore.QThread.LowestPriority) + + def run(self): + if self.incoming_file: + try: + file_path, file_type = self.incoming_file + if file_type in ["APK", "DEX", "DEY"]: + # session.add returns sha256 or None + ret = self.parent.session.add(file_path, open(file_path, 'rb').read()) + self.file_loaded.emit(ret != None) + elif file_type == "SESSION": + self.parent.session = session.Load(file_path) + self.file_loaded.emit(True) + else: + self.file_loaded.emit(False) + except Exception as e: + log.exception("Error loading the file into the Session!") + self.file_loaded.emit(False) + + self.incoming_file = () + else: + self.file_loaded.emit(False) diff --git a/androguard/gui/helpers.py b/androguard/gui/helpers.py new file mode 100644 index 0000000..3cdb6c8 --- /dev/null +++ b/androguard/gui/helpers.py @@ -0,0 +1,87 @@ +from builtins import object +import logging +log = logging.getLogger("androguard.gui") + + +class Signature(object): + def __init__(self, cls, method=None, descriptor=None): + self.cls = cls + self.class_components = self.cls.name.strip('L').strip(';').split('/') + self.class_path = self.class_components[:-1] + self.class_name = self.class_components[-1] + self.full_class_name = self.cls.name + self.method = method + self.descriptor = descriptor + + +def class2func(path): + """ Convert a path such as 'Landroid/support/v4/app/ActivityCompat;' + into a method string 'CLASS_Landroid_support_v4_app_ActivityCompat' + so we can call d.CLASS_Landroid_support_v4_app_ActivityCompat.get_source() + """ + + func = "CLASS_" + path.replace("/", "_").replace("$", "_").replace(";", "") + return func + + +def method2func(method): + return "METHOD_" + method.replace("/", "_").replace("[", "").replace( + "(", "").replace(")", "").replace(";", "") + + +def classmethod2func(class_, method_): + """Convert two strings such as "Lcom/mwr/example/sieve/AddEntryActivity;" and "onCreate" + into a string "CLASS_Lcom_example_sieve_AddEntryActivity.METHOD_onCreate" + so we can access d.CLASS_Lcom_example_sieve_AddEntryActivity.METHOD_onCreate.XREFfrom + """ + + return "%s.%s" % (class2func(class_), method2func(method_)) + + +def classmethod2display(class_, method_, descriptor_): + """Convert two strings such as "Lcom/mwr/example/sieve/AddEntryActivity;" and "onCreate" + into a beautiful :) string to display Xrefs: + "Lcom/mwr/example/sieve/AddEntryActivity; -> onCreate" + """ + + return "%s -> %s ( %s )" % (class_, method_, descriptor_) + + +def display2classmethod(display): + """Opposite of classmethod2display. + """ + + L = display.split(" -> ") + return L[0], L[1] + + +def classdot2func(path): + """ Convert a path such as 'android.support.v4.app.ActivityCompat' + into a method string 'CLASS_Landroid_support_v4_app_ActivityCompat' + so we can call d.CLASS_Landroid_support_v4_app_ActivityCompat.get_source() + """ + + func = "CLASS_L" + path.replace(".", "_").replace("$", "_") + return func + + +def classdot2class(path): + """ Convert a path such as 'android.support.v4.app.ActivityCompat' + into a string 'Landroid/support/v4/app/ActivityCompat' + so we can change name of a class by d.CLASS_Landroid_support_v4_app_ActivityCompat.set_name(new_name) + """ + if path[0] == 'L' and path[-1] == ';': + log.debug("WARNING: %s already a Lclass; name" % path) + return path + + new_name = 'L' + path.replace('.', '/') + ';' + return new_name + + +def proto2methodprotofunc(proto): + """Convert a prototype such as 'Ljava/lang/String;' + into a string 'Ljava_lang_String" so we can append that to the + 'METHOD_myMethod' if its export python name contains the prototype + """ + return proto.replace(' ', '').replace('(', '').replace('[', '').replace( + ')', '').replace('/', '_').replace(';', '') diff --git a/androguard/gui/mainwindow.py b/androguard/gui/mainwindow.py new file mode 100644 index 0000000..7a82f4a --- /dev/null +++ b/androguard/gui/mainwindow.py @@ -0,0 +1,446 @@ +import sys + +from PyQt5 import QtWidgets, QtGui, QtCore + +import androguard.session as session_module +from androguard.gui.DataModel import ApkModel, DexClassModel +from androguard.gui.apiwindow import APIWindow +from androguard.gui.binwindow import binWidget +from androguard.gui.fileloading import FileLoadingThread +from androguard.gui.helpers import class2func +from androguard.gui.methodswindow import MethodsWindow +from androguard.gui.resourceswindow import ResourcesWindow +from androguard.gui.sourcewindow import SourceWindow +from androguard.gui.stringswindow import StringsWindow +from androguard.gui.treewindow import TreeWindow +import os + +import logging +log = logging.getLogger("androguard.gui") + + +def load_module(module_name, file_path): + """ + Load a module by name and search path + + This function should work with python 2.7 and 3.x + + Returns None if Module could not be loaded. + """ + if sys.version_info >= (3,5,): + import importlib.util + + spec = importlib.util.spec_from_file_location(module_name, file_path) + if not spec: + return + + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + return module + else: + import imp + mod = imp.load_source(module_name, file_path) + return mod + + +class TabsWindow(QtWidgets.QTabWidget): + def __init__(self, bin_windows, parent=None): + super(TabsWindow, self).__init__(parent) + self.bin_windows = bin_windows + self.setTabsClosable(True) + self.tabCloseRequested.connect(self.tabCloseRequestedHandler) + self.currentChanged.connect(self.currentTabChanged) + + self.closeAllTabs = QtWidgets.QAction( + "Close all tabs", + self, + triggered=self.actioncloseAllTabs) + self.closeOtherTabs = QtWidgets.QAction( + "Close other tabs", + self, + triggered=self.actioncloseOtherTabs) + self.closeLeftTabs = QtWidgets.QAction( + "Close left tabs", + self, + triggered=self.actioncloseLeftTabs) + self.closeRightTabs = QtWidgets.QAction( + "Close right tabs", + self, + triggered=self.actioncloseRightTabs) + + def actioncloseAllTabs(self): + self.clear() + + def actioncloseOtherTabs(self): + for i in range(self.currentIndex() - 1, -1, -1): + self.removeTab(i) + + for i in range(self.count(), self.currentIndex(), -1): + self.removeTab(i) + + def actioncloseLeftTabs(self): + for i in range(self.currentIndex() - 1, -1, -1): + self.removeTab(i) + + def actioncloseRightTabs(self): + for i in range(self.count(), self.currentIndex(), -1): + self.removeTab(i) + + def tabCloseRequestedHandler(self, index): + self.removeTab(index) + + def currentTabChanged(self, index): + log.debug("curentTabChanged -> %d (%s)" % (index, self.tabToolTip(index))) + if index == -1: + return + + current_title = self.tabToolTip(index) + for title in self.bin_windows: + if title != current_title: + log.debug("Disable %s" % title) + self.bin_windows[title].disable() + + if current_title in self.bin_windows: + log.debug("Enable %s" % title) + self.bin_windows[current_title].enable() + + def contextMenuEvent(self, event): + menu = QtWidgets.QMenu(self) + menu.addAction(self.closeAllTabs) + menu.addAction(self.closeOtherTabs) + menu.addAction(self.closeLeftTabs) + menu.addAction(self.closeRightTabs) + menu.exec_(event.globalPos()) + + +class MainWindow(QtWidgets.QMainWindow): + """Main window: + self.central: QTabWidget in center area + self.dock: QDockWidget in left area + self.tree: TreeWindow(QTreeWidget) in self.dock + """ + + def __init__(self, parent=None, session=session_module.Session(), input_file=None, input_plugin=None): + super(MainWindow, self).__init__(parent) + self.session = session + self.bin_windows = {} + + self.setupFileMenu() + self.setupViewMenu() + self.setupPluginsMenu() + self.setupHelpMenu() + + self.setupCentral() + self.setupEmptyTree() + self.setupDock() + + self.setupSession() + + self.setWindowTitle("Androguard GUI") + + self.showStatus("Androguard GUI") + + self.installEventFilter(self) + + self.input_plugin = input_plugin + + if input_file: + self._openFile(input_file) + + root = os.path.dirname(os.path.realpath(__file__)) + self.setWindowIcon(QtGui.QIcon(os.path.join(root, "androguard.ico"))) + + def eventFilter(self, watched, event): + for bin_window in list(self.bin_windows.values()): + bin_window.eventFilter(watched, event) + return False + + def showStatus(self, msg): + """Helper function called by any window to display a message + in status bar. + """ + log.debug(msg) + self.statusBar().showMessage(msg) + + def about(self): + """User clicked About menu. Display a Message box.""" + QtWidgets.QMessageBox.about(self, "About Androguard GUI", + "

Androguard GUI is basically a GUI for Androguard :)." \ + "
Have fun !

") + + def _no_apk_loaded(self): + """Show a message if no APK was loaded yet...""" + QtWidgets.QMessageBox.information(self, "No APK loaded yet!", + "

There was no APK loaded yet. Please load one using File->Open.

") + + def setupSession(self): + log.debug("Setup Session") + self.fileLoadingThread = FileLoadingThread(self) + self.fileLoadingThread.file_loaded.connect(self.loadedFile) + + def loadedFile(self, success): + if not success: + self.showStatus("Analysis of %s failed :(" % + str(self.fileLoadingThread.file_path)) + return + + self.updateDockWithTree() + self.cleanCentral() + + self.showStatus("Analysis of %s done!" % + str(self.fileLoadingThread.file_path)) + if self.input_plugin: + self._runPlugin(self.input_plugin) + + def openFile(self): + self.session.reset() + + filepath, _ = QtWidgets.QFileDialog.getOpenFileName( + self, "Open File", '.', + "Android Files (*.apk *.jar *.dex *.odex *.dey);;Androguard Session (*.ag)") + + self._openFile(filepath) + + def _openFile(self, filepath=None): + if filepath: + self.setupTree() + self.showStatus("Analyzing %s..." % str(filepath)) + self.fileLoadingThread.load(filepath) + + def addFile(self): + if not self.session.isOpen(): + log.debug(self.session.analyzed_digest) + self._no_apk_loaded() + return + + filepath, _ = QtWidgets.QFileDialog.getOpenFileName( + self, "Add File", '', + "Android Files (*.apk *.jar *.dex *.odex *.dey)") + + if filepath: + self.showStatus("Analyzing %s..." % str(filepath)) + self.fileLoadingThread.load(filepath) + + def saveFile(self): + """User clicked Save menu. Display a Dialog to ask whwre to save.""" + filepath, _ = QtWidgets.QFileDialog.getSaveFileName( + self, "Save File", '', "Androguard Session (*.ag)") + + if filepath: + # Ensure .ag as file ending + if not filepath.endswith(".ag"): + filepath = "{}.ag".format(filepath) + + self.showStatus("Saving %s..." % str(filepath)) + self.saveSession(filepath) + self.showStatus("Saved Session to %s!" % str(filepath)) + + def saveSession(self, filepath): + """Save androguard session.""" + try: + session_module.Save(self.session, filepath) + except RuntimeError as e: + log.exception(e) + os.remove(filepath) + log.warning("Session not saved") + + def _runPlugin(self, filepath): + module_name = os.path.splitext(os.path.basename(filepath))[0] + log.debug("RUN plugin '{}' from {}".format(module_name, filepath)) + + mod = load_module(module_name, filepath) + + log.debug("Loaded %s", mod) + if not mod or not hasattr(mod, 'PluginEntry'): + QtWidgets.QMessageBox.warning(self, "Not a valid Plugin", + "

This python file does not look like a valid plugin.

") + return + + mod.PluginEntry(self.session) + + def openRunPluginWindow(self): + filepath, _ = QtWidgets.QFileDialog.getOpenFileName( + self, "Open File", '', + "Python Files (*.py);;") + + if filepath: + self._runPlugin(filepath) + + def closeEvent(self, event): + """Clicked [x] to close main window""" + event.accept() + + def setupEmptyTree(self): + """Setup empty Tree at startup. """ + if hasattr(self, "tree"): + del self.tree + self.tree = QtWidgets.QTreeWidget(self) + self.tree.header().close() + + def setupDock(self): + """Setup empty Dock at startup. """ + self.dock = QtWidgets.QDockWidget("Classes", self) + self.dock.setWidget(self.tree) + self.dock.setFeatures(QtWidgets.QDockWidget.NoDockWidgetFeatures) + self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dock) + + def setupTree(self): + log.debug("Setup Tree") + self.tree = TreeWindow(win=self, session=self.session) + self.tree.setWindowTitle("Tree model") + self.dock.setWidget(self.tree) + + def setupCentral(self): + """Setup empty window supporting tabs at startup. """ + self.central = TabsWindow(self.bin_windows, self) + self.setCentralWidget(self.central) + + def cleanCentral(self): + self.central.actioncloseAllTabs() + + def setupFileMenu(self): + log.debug("Setup File Menu") + self.fileMenu = self.menuBar().addMenu("&File") + + self.fileMenu.addAction("&Open...", self.openFile, "Ctrl+O") + self.fileMenu.addAction("&Add...", self.addFile, "Ctrl+A") + self.fileMenu.addAction("&Save...", self.saveFile, "Ctrl+S") + self.fileMenu.addAction("E&xit", self.close, "Ctrl+Q") + + def setupViewMenu(self): + log.debug("Setup View Menu") + + self.viewMenu = self.menuBar().addMenu("&View") + + self.viewMenu.addAction("&Strings...", self.openStringsWindow) + self.viewMenu.addAction("&Methods...", self.openMethodsWindow) + self.viewMenu.addAction("&API...", self.openAPIWindow) + self.viewMenu.addAction("&APK...", self.openApkWindow) + self.viewMenu.addAction("&Resources...", self.openResourcesWindow) + + def setupPluginsMenu(self): + log.debug("Setup Plugins Menu") + + self.pluginsMenu = self.menuBar().addMenu("&Plugins") + self.pluginsMenu.addAction("&Run...", self.openRunPluginWindow) + + def setupHelpMenu(self): + log.debug("Setup Help Menu") + + self.helpMenu = self.menuBar().addMenu("&Help") + + self.helpMenu.addAction("&About", self.about) + self.helpMenu.addAction("About &Qt", QtWidgets.qApp.aboutQt) + + def updateDockWithTree(self, empty=False): + """Update the classes tree. Called when + - a new APK has been imported + - a classe has been renamed (displayed in the tree) + """ + self.setupTree() + self.tree.fill() + + def openStringsWindow(self): + stringswin = StringsWindow(win=self, session=self.session) + self.central.addTab(stringswin, stringswin.title) + self.central.setTabToolTip(self.central.indexOf(stringswin), + stringswin.title) + self.central.setCurrentWidget(stringswin) + + def openMethodsWindow(self): + methodswin = MethodsWindow(win=self, session=self.session) + self.central.addTab(methodswin, methodswin.title) + self.central.setTabToolTip(self.central.indexOf(methodswin), + methodswin.title) + self.central.setCurrentWidget(methodswin) + + def openResourcesWindow(self): + resourceswin = ResourcesWindow(win=self, session=self.session) + self.central.addTab(resourceswin, resourceswin.title) + self.central.setTabToolTip(self.central.indexOf(resourceswin), + resourceswin.title) + self.central.setCurrentWidget(resourceswin) + + def openAPIWindow(self): + apiwin = APIWindow(win=self, session=self.session) + self.central.addTab(apiwin, apiwin.title) + self.central.setTabToolTip(self.central.indexOf(apiwin), + apiwin.title) + self.central.setCurrentWidget(apiwin) + + def openApkWindow(self): + log.debug("openApkWindow for %s" % self.session.analyzed_apk) + + if not self.fileLoadingThread.file_path: + self._no_apk_loaded() + return + + bin_window = binWidget(self, ApkModel(self.session.get_objects_apk(self.fileLoadingThread.file_path)[0]), "APK") + bin_window.activateWindow() + self.central.addTab(bin_window, bin_window.title) + self.central.setCurrentWidget(bin_window) + + self.bin_windows[bin_window.title] = bin_window + + def openBinWindow(self, current_class): + log.debug("openBinWindow for %s" % current_class) + + dx = self.session.get_analysis(current_class) + + bin_window = self.getMeOpenedWindowIfExists(current_class.current_title) + if not bin_window: + bin_window = binWidget(self, DexClassModel(current_class, dx), current_class.get_name()) + bin_window.activateWindow() + self.central.addTab(bin_window, current_class.current_title) + self.central.setTabToolTip(self.central.indexOf(bin_window), + current_class.current_title) + + self.bin_windows[current_class.current_title] = bin_window + bin_window.enable() + + self.central.setCurrentWidget(bin_window) + + def openSourceWindow(self, current_class, method=None): + """Main function to open a decompile source window + It checks if it already opened and open that tab, + otherwise, initialize a new window. + """ + log.debug("openSourceWindow for %s" % current_class) + + sourcewin = self.getMeOpenedWindowIfExists(current_class.current_title + "(S)") + if not sourcewin: + current_filename = self.session.get_filename_by_class(current_class) + current_digest = self.session.get_digest_by_class(current_class) + + sourcewin = SourceWindow(win=self, + current_class=current_class, + current_title=current_class.current_title + "(S)", + current_filename=current_filename, + current_digest=current_digest, + session=self.session) + sourcewin.reload_java_sources() + self.central.addTab(sourcewin, sourcewin.title) + self.central.setTabToolTip(self.central.indexOf(sourcewin), + sourcewin.title) + + if method: + sourcewin.browse_to_method(method) + + self.central.setCurrentWidget(sourcewin) + + def getMeOpenedWindowIfExists(self, name): + for idx in range(self.central.count()): + if name == self.central.tabToolTip(idx): + log.debug("Tab %s already opened at: %d" % + (name, idx)) + return self.central.widget(idx) + return None + + def doesClassExist(self, path): + arg = class2func(path) + try: + getattr(self.d, arg) + except AttributeError: + return False + return True diff --git a/androguard/gui/methodswindow.py b/androguard/gui/methodswindow.py new file mode 100644 index 0000000..f1c9e4d --- /dev/null +++ b/androguard/gui/methodswindow.py @@ -0,0 +1,97 @@ +from PyQt5 import QtCore, QtGui, QtWidgets +from androguard.gui.xrefwindow import XrefDialogMethod + + +class MethodsWindow(QtWidgets.QWidget): + def __init__(self, parent=None, win=None, session=None): + super(MethodsWindow, self).__init__(parent) + self.mainwin = win + self.session = session + self.title = "Methods" + + self.filterPatternLineEdit = QtWidgets.QLineEdit() + self.filterPatternLabel = QtWidgets.QLabel("&Filter method name pattern:") + self.filterPatternLabel.setBuddy(self.filterPatternLineEdit) + self.filterPatternLineEdit.textChanged.connect(self.filterRegExpChanged) + + self.methodswindow = MethodsValueWindow(self, win, session) + + sourceLayout = QtWidgets.QVBoxLayout() + sourceLayout.addWidget(self.methodswindow) + sourceLayout.addWidget(self.filterPatternLabel) + sourceLayout.addWidget(self.filterPatternLineEdit) + + self.setLayout(sourceLayout) + + def filterRegExpChanged(self, value): + regExp = QtCore.QRegExp(value) + self.methodswindow.proxyModel.setFilterRegExp(regExp) + + +class MethodsValueWindow(QtWidgets.QTreeView): + def __init__(self, parent=None, win=None, session=None): + super(MethodsValueWindow, self).__init__(parent) + self.mainwin = win + self.session = session + self.title = "Methods" + + self.reverse_methods = {} + + self.proxyModel = QtCore.QSortFilterProxyModel() + self.proxyModel.setDynamicSortFilter(True) + + nb = 0 + for digest, d, dx in self.session.get_objects_dex(): + for method in d.get_methods(): + nb += 1 + + self.model = QtGui.QStandardItemModel(nb, 5, + self) + + self.model.setHeaderData(0, QtCore.Qt.Horizontal, "Name") + self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Class Name") + self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Prototype") + self.model.setHeaderData(3, QtCore.Qt.Horizontal, "Address") + self.model.setHeaderData(4, QtCore.Qt.Horizontal, "Digest") + + row = 0 + for digest, d, dx in self.session.get_objects_dex(): + for method in d.get_methods(): + self.model.setData(self.model.index( + row, 0, QtCore.QModelIndex()), method.get_name()) + self.model.setData(self.model.index( + row, 1, QtCore.QModelIndex()), method.get_class_name()) + self.model.setData(self.model.index( + row, 2, QtCore.QModelIndex()), method.get_descriptor()) + self.model.setData(self.model.index( + row, 3, QtCore.QModelIndex()), "0x%x" % method.get_address()) + self.model.setData(self.model.index( + row, 4, QtCore.QModelIndex()), digest) + self.reverse_methods[method.get_name() + method.get_class_name() + method.get_descriptor() + digest + ] = dx.get_method_analysis(method) + row += 1 + + self.proxyModel.setSourceModel(self.model) + + self.setRootIsDecorated(False) + self.setAlternatingRowColors(True) + self.setModel(self.proxyModel) + self.setSortingEnabled(True) + self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + + self.doubleClicked.connect(self.slotDoubleClicked) + + def slotDoubleClicked(self, mi): + mi = self.proxyModel.mapToSource(mi) + row = mi.row() + column = mi.column() + + if column == 0: + xwin = XrefDialogMethod( + parent=self.mainwin, + win=self.mainwin, + method_analysis=self.reverse_methods[self.model.item(row).text() + + self.model.item(row, 1).text() + + self.model.item(row, 2).text() + + self.model.item(row, 4).text()]) + xwin.show() diff --git a/androguard/gui/renamewindow.py b/androguard/gui/renamewindow.py new file mode 100644 index 0000000..1643a5b --- /dev/null +++ b/androguard/gui/renamewindow.py @@ -0,0 +1,41 @@ +from PyQt5 import QtWidgets + + +class RenameDialog(QtWidgets.QDialog): + """ + parent: SourceWindow that started the new XrefDialog + """ + + def __init__(self, parent=None, win=None, element="", info=()): + super(RenameDialog, self).__init__(parent) + + self.sourceWin = parent + self.info = info + self.element = element + title = "Rename: " + element + self.setWindowTitle(title) + + layout = QtWidgets.QGridLayout() + question = QtWidgets.QLabel("Please enter new name:") + layout.addWidget(question, 0, 0) + self.lineEdit = QtWidgets.QLineEdit() + layout.addWidget(self.lineEdit, 0, 1) + self.buttonOK = QtWidgets.QPushButton("OK", self) + layout.addWidget(self.buttonOK, 1, 1) + self.buttonCancel = QtWidgets.QPushButton("Cancel", self) + layout.addWidget(self.buttonCancel, 1, 0) + + self.lineEdit.setText(self.element) + + self.setLayout(layout) + + self.buttonCancel.clicked.connect(self.cancelClicked) + self.buttonOK.clicked.connect(self.okClicked) + + def cancelClicked(self): + self.close() + + def okClicked(self): + self.sourceWin.renameElement(self.element, self.lineEdit.text(), + self.info) + self.close() diff --git a/androguard/gui/resourceswindow.py b/androguard/gui/resourceswindow.py new file mode 100644 index 0000000..7b46c3a --- /dev/null +++ b/androguard/gui/resourceswindow.py @@ -0,0 +1,81 @@ +from builtins import str +from PyQt5 import QtCore, QtGui, QtWidgets + + +class ResourcesWindow(QtWidgets.QWidget): + def __init__(self, parent=None, win=None, session=None): + super(ResourcesWindow, self).__init__(parent) + self.mainwin = win + self.session = session + self.title = "Resources" + + self.filterPatternLineEdit = QtWidgets.QLineEdit() + self.filterPatternLabel = QtWidgets.QLabel("&Filter resource integer pattern:") + self.filterPatternLabel.setBuddy(self.filterPatternLineEdit) + self.filterPatternLineEdit.textChanged.connect(self.filterRegExpChanged) + + self.resourceswindow = ResourcesValueWindow(self, win, session) + + sourceLayout = QtWidgets.QVBoxLayout() + sourceLayout.addWidget(self.resourceswindow) + sourceLayout.addWidget(self.filterPatternLabel) + sourceLayout.addWidget(self.filterPatternLineEdit) + + self.setLayout(sourceLayout) + + def filterRegExpChanged(self, value): + regExp = QtCore.QRegExp(value) + self.resourceswindow.proxyModel.setFilterRegExp(regExp) + + +class ResourcesValueWindow(QtWidgets.QTreeView): + def __init__(self, parent=None, win=None, session=None): + super(ResourcesValueWindow, self).__init__(parent) + self.mainwin = win + self.session = session + self.title = "Resources" + + self.proxyModel = QtCore.QSortFilterProxyModel() + self.proxyModel.setDynamicSortFilter(True) + + string_resources = [] + nb = 0 + for digest, apk in self.session.get_all_apks(): + a = apk[0] + resources = a.get_android_resources() + + string_resources = resources.get_resolved_strings() + for p in string_resources: + for l in string_resources[p]: + nb += len(string_resources[p][l]) + + self.model = QtGui.QStandardItemModel(nb, 4, self) + + self.model.setHeaderData(0, QtCore.Qt.Horizontal, "Package name") + self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Locale") + self.model.setHeaderData(2, QtCore.Qt.Horizontal, "ID") + self.model.setHeaderData(3, QtCore.Qt.Horizontal, "Value") + + row = 0 + for p_name in string_resources: + for locale in string_resources[p_name]: + for id_value in string_resources[p_name][locale]: + self.model.setData(self.model.index( + row, 0, QtCore.QModelIndex()), p_name) + self.model.setData(self.model.index( + row, 1, QtCore.QModelIndex()), str(locale)) + self.model.setData(self.model.index( + row, 2, QtCore.QModelIndex()), str(id_value)) + self.model.setData(self.model.index( + row, 3, QtCore.QModelIndex()), + string_resources[p_name][locale][id_value]) + row += 1 + + self.proxyModel.setSourceModel(self.model) + self.proxyModel.setFilterKeyColumn(2) + + self.setRootIsDecorated(False) + self.setAlternatingRowColors(True) + self.setModel(self.proxyModel) + self.setSortingEnabled(True) + self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) diff --git a/androguard/gui/search.ui b/androguard/gui/search.ui new file mode 100644 index 0000000..c6ae67e --- /dev/null +++ b/androguard/gui/search.ui @@ -0,0 +1,43 @@ + + + searchform + + + + 0 + 0 + 430 + 116 + + + + Search + + + + + + Search + + + + + + + + + + hex + + + + + + + lineEdit + checkHex + pushButton + + + + diff --git a/androguard/gui/sourcewindow.py b/androguard/gui/sourcewindow.py new file mode 100644 index 0000000..c96d32e --- /dev/null +++ b/androguard/gui/sourcewindow.py @@ -0,0 +1,733 @@ +import pyperclip +from PyQt5 import QtCore, QtGui, QtWidgets +from builtins import str +from pygments.formatters.html import HtmlFormatter +from pygments.lexers import JavaLexer +from pygments.style import Style +from pygments.token import Token, Comment, Name, Keyword, Generic, Number, Operator, String + +from androguard.gui.helpers import classdot2class, proto2methodprotofunc +from androguard.gui.renamewindow import RenameDialog +from androguard.gui.xrefwindow import XrefDialogMethod, XrefDialogField + +import logging + +log = logging.getLogger("androguard.gui") + +BINDINGS_NAMES = [ + 'NAME_PACKAGE', 'NAME_PROTOTYPE', 'NAME_SUPERCLASS', 'NAME_INTERFACE', + 'NAME_FIELD', 'NAME_METHOD_PROTOTYPE', 'NAME_ARG', 'NAME_CLASS_ASSIGNMENT', + 'NAME_PARAM', 'NAME_BASE_CLASS', 'NAME_METHOD_INVOKE', 'NAME_CLASS_NEW', + 'NAME_CLASS_INSTANCE', 'NAME_VARIABLE', 'NAME_CLASS_EXCEPTION' +] + + +class SourceDocument(QtGui.QTextDocument): + """QTextDocument associated with the SourceWindow.""" + + def __init__(self, parent=None, lines=[]): + super(SourceDocument, self).__init__(parent) + self.parent = parent + + self.setDefaultFont(QtGui.QFont('Monaco', 9, QtGui.QFont.Light)) + + cursor = QtGui.QTextCursor(self) # position=0x0 + self.binding = {} + + # save the cursor position before each interesting element + for section, L in lines: + for t in L: + if t[0] in BINDINGS_NAMES: + self.binding[cursor.position()] = t + cursor.insertText(t[1]) + + +class PygmentsBlockUserData(QtGui.QTextBlockUserData): + """ Storage for the user data associated with each line. + """ + + syntax_stack = ('root',) + + def __init__(self, **kwds): + for key, value in list(kwds.items()): + setattr(self, key, value) + QtGui.QTextBlockUserData.__init__(self) + + def __repr__(self): + attrs = ['syntax_stack'] + kwds = ', '.join(['%s=%r' % (attr, getattr(self, attr)) + for attr in attrs]) + return 'PygmentsBlockUserData(%s)' % kwds + + +BASE03 = '#002B36' +BASE02 = '#073642' +BASE01 = '#586E75' +BASE00 = '#657B83' +BASE0 = '#839496' +BASE1 = '#93A1A1' +BASE2 = '#EEE8D5' +BASE3 = '#FDF6E3' +YELLOW = '#B58900' +ORANGE = '#CB4B16' +RED = '#DC322F' +MAGENTA = '#D33682' +VIOLET = '#6C71C4' +BLUE = '#268BD2' +CYAN = '#2AA198' +GREEN = '#859900' + + +class SolarizedStyle(Style): + background_color = BASE03 + styles = { + Keyword: GREEN, + Keyword.Constant: ORANGE, + Keyword.Declaration: BLUE, + # Keyword.Namespace + # Keyword.Pseudo + Keyword.Reserved: BLUE, + Keyword.Type: RED, + + # Name + Name.Attribute: BASE1, + Name.Builtin: YELLOW, + Name.Builtin.Pseudo: BLUE, + Name.Class: BLUE, + Name.Constant: ORANGE, + Name.Decorator: BLUE, + Name.Entity: ORANGE, + Name.Exception: ORANGE, + Name.Function: BLUE, + # Name.Label + # Name.Namespace + # Name.Other + Name.Tag: BLUE, + Name.Variable: BLUE, + # Name.Variable.Class + # Name.Variable.Global + # Name.Variable.Instance + + # Literal + # Literal.Date + String: CYAN, + String.Backtick: BASE01, + String.Char: CYAN, + String.Doc: BASE1, + # String.Double + String.Escape: ORANGE, + String.Heredoc: BASE1, + # String.Interpol + # String.Other + String.Regex: RED, + # String.Single + # String.Symbol + Number: CYAN, + # Number.Float + # Number.Hex + # Number.Integer + # Number.Integer.Long + # Number.Oct + + Operator: GREEN, + # Operator.Word + + # Punctuation: ORANGE, + + Comment: BASE01, + # Comment.Multiline + Comment.Preproc: GREEN, + # Comment.Single + Comment.Special: GREEN, + + # Generic + Generic.Deleted: CYAN, + Generic.Emph: 'italic', + Generic.Error: RED, + Generic.Heading: ORANGE, + Generic.Inserted: GREEN, + # Generic.Output + # Generic.Prompt + Generic.Strong: 'bold', + Generic.Subheading: ORANGE, + # Generic.Traceback + + Token: BASE1, + Token.Other: ORANGE, + } + + +class MyHighlighter(QtGui.QSyntaxHighlighter): + """ Syntax highlighter that uses Pygments for parsing. """ + + # --------------------------------------------------------------------------- + # 'QSyntaxHighlighter' interface + # --------------------------------------------------------------------------- + + def __init__(self, parent, lexer=None): + super(MyHighlighter, self).__init__(parent) + + self._document = self.document() + self._formatter = HtmlFormatter(nowrap=True) + self._lexer = lexer + self.set_style('paraiso-dark') + + def highlightBlock(self, string): + """ Highlight a block of text. + """ + prev_data = self.currentBlock().previous().userData() + if prev_data is not None: + self._lexer._saved_state_stack = prev_data.syntax_stack + elif hasattr(self._lexer, '_saved_state_stack'): + del self._lexer._saved_state_stack + + # Lex the text using Pygments + index = 0 + for token, text in self._lexer.get_tokens(string): + length = len(text) + self.setFormat(index, length, self._get_format(token)) + index += length + + if hasattr(self._lexer, '_saved_state_stack'): + data = PygmentsBlockUserData( + syntax_stack=self._lexer._saved_state_stack) + self.currentBlock().setUserData(data) + # Clean up for the next go-round. + del self._lexer._saved_state_stack + + # --------------------------------------------------------------------------- + # 'PygmentsHighlighter' interface + # --------------------------------------------------------------------------- + + def set_style(self, style): + """ Sets the style to the specified Pygments style. + """ + style = SolarizedStyle # get_style_by_name(style) + self._style = style + self._clear_caches() + + def set_style_sheet(self, stylesheet): + """ Sets a CSS stylesheet. The classes in the stylesheet should + correspond to those generated by: + pygmentize -S