资源预览内容
第1页 / 共58页
第2页 / 共58页
第3页 / 共58页
第4页 / 共58页
第5页 / 共58页
第6页 / 共58页
第7页 / 共58页
第8页 / 共58页
第9页 / 共58页
第10页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Android应用程序设计应用程序设计张思张思民编著民编著第第1章章 Android系统及其开发过程系统及其开发过程Android应用程序设计应用程序设计张思张思民编著民编著主要内容主要内容1.1 Android1.1 Android系统概述系统概述1.21.2安装安装Android SDKAndroid SDK开发环境开发环境1.2.1安装安装Android SDK前必要的准备前必要的准备1.2.2安装安装Android SDK详解详解1.3 Android API1.3 Android API和在线帮助文档和在线帮助文档1.4 Android1.4 Android应用项目的开发过程应用项目的开发过程1.4.1 开发开发Android应用项目的一般过程应用项目的一般过程1.4.2 生成生成Android应用项目框架应用项目框架1.4.3 编写代码编写代码HelloAndroidActivity.java1.4.4 配置应用程序的运行参数配置应用程序的运行参数 1.4.5 在模拟器中运行应用程序在模拟器中运行应用程序1.5 Android1.5 Android项目结构项目结构1.6 Android1.6 Android应用项目架构分析应用项目架构分析Android应用程序设计应用程序设计张思张思民编著民编著Android应用程序设计应用程序设计张思张思民编著民编著如日中天的如日中天的AndroidAndroid(安卓)系统(安卓)系统 Android应用程序设计应用程序设计张思张思民编著民编著支持安卓系统的手机支持安卓系统的手机目前。目前。Android应用程序设计应用程序设计张思张思民编著民编著全球正酝酿安卓电视风潮全球正酝酿安卓电视风潮Android应用程序设计应用程序设计张思张思民编著民编著全球正酝酿安卓电视风潮全球正酝酿安卓电视风潮Android应用程序设计应用程序设计张思张思民编著民编著全球正酝酿安卓电视风潮全球正酝酿安卓电视风潮Android应用程序设计应用程序设计张思张思民编著民编著全球正酝酿安卓电视风潮全球正酝酿安卓电视风潮Android应用程序设计应用程序设计张思张思民编著民编著全球正酝酿安卓电视风潮全球正酝酿安卓电视风潮Android应用程序设计应用程序设计张思张思民编著民编著全球正酝酿安卓电视风潮全球正酝酿安卓电视风潮Android应用程序设计应用程序设计张思张思民编著民编著全球正酝酿安卓电视风潮全球正酝酿安卓电视风潮安卓电视机的电路主板安卓电视机的电路主板Android应用程序设计应用程序设计张思张思民编著民编著Android应用程序设计应用程序设计张思张思民编著民编著1.2.1安装安装Android SDK前必要的准备前必要的准备 1 1、AndroidAndroid系统开发的操作平台与软件系统开发的操作平台与软件环境要求环境要求对于Android系统开发的软件环境,主要使用 Eclipse + ADT(Android Development Tools插件)。因此,需要安装Java SDK1.5以上和Eclipse 3.3以上版本的环境。 2 2、下载最新版本的、下载最新版本的Android SDKAndroid SDK软件软件 到Android官方网站:http:/developer.android.com/sdk/index.html下载最新的系统软件Android应用程序设计应用程序设计张思张思民编著民编著1.2.2安装安装Android SDK详解详解 1 1、运行、运行AndroidAndroid系统的安装文件系统的安装文件运行安装文件,得到一个系运行安装文件,得到一个系统安装框架,还需要运行里统安装框架,还需要运行里面的面的 “SDK Manager.exe”来安装来安装Android SDK。Android应用程序设计应用程序设计张思张思民编著民编著 2 2、运行、运行SDK SDK Manager.exeManager.exe文件文件运行运行 “SDK SDK Manager.exeManager.exe”,弹出,弹出SDKSDK管理窗口管理窗口,系统自动系统自动搜索所有版本的系统安搜索所有版本的系统安装包,点击装包,点击“Install Packages”按钮。按钮。 。Android应用程序设计应用程序设计张思张思民编著民编著Android SDKAndroid SDK系统安装完之后,会提示是否要系统安装完之后,会提示是否要安装安装ADBADB。ADBADB(Android Debug BridgeAndroid Debug Bridge)是开)是开发发AndroidAndroid应用项目的调试工具,这里要确认应用项目的调试工具,这里要确认安装。安装。Android SDKAndroid SDK所有系统文件安装完之后,所有系统文件安装完之后,打开安装目录,其目录结构如图打开安装目录,其目录结构如图1.31.3所示。所示。Android应用程序设计应用程序设计张思张思民编著民编著主要目录的作用说明主要目录的作用说明 add-onsadd-ons: : 放置放置googlegoogle提供的提供的APIAPI包,包括包,包括googlegoogle地图地图 APIAPI等。等。docsdocs: : 放置放置AndroidAndroid系统的帮助文档和说明文档。系统的帮助文档和说明文档。platformsplatforms: :针对每个针对每个SDKSDK版本提供了与其相对应的版本提供了与其相对应的APIAPI包。包。toolstools和和platform-toolsplatform-tools: :放置通用的工具文件,如放置通用的工具文件,如AndroidAndroid模拟器模拟器AVDAVD、SQLiteSQLite数据库、调试工具数据库、调试工具ADBADB、创、创建模拟的建模拟的SDSD卡工具卡工具mksdcardmksdcard等。为了能方便的使用这等。为了能方便的使用这些工具,通常要将其设置成些工具,通常要将其设置成 系统环境变量。系统环境变量。samplessamples: :放置每个放置每个SDKSDK版本提供的示例程序。版本提供的示例程序。system-imagessystem-images: :由于由于AndroidAndroid是基于是基于LinuxLinux的系统,的系统,该目录放置不同版本的该目录放置不同版本的imgimg系统映象文件。系统映象文件。Android应用程序设计应用程序设计张思张思民编著民编著(1 1)打开)打开EclipseEclipse(2 2)安装)安装ADTADT插件插件 在在EclipseEclipse中,选择菜单中,选择菜单“帮帮助助”(HelpHelp)“安装新软安装新软件件”(Install New Install New SoftwareSoftware) 3、安装、安装Android开发工具开发工具ADTAndroid应用程序设计应用程序设计张思张思民编著民编著(3 3)设置设置ADTADT的首选项的首选项 在在EclipseEclipse中,选择菜单中,选择菜单“窗口窗口”(WindowWindow)-“-“首选项首选项”(PreferencesPreferences),打开),打开“首选项首选项”的设置对话框,在的设置对话框,在“SDK Location”SDK Location”项设置安装项设置安装Android SDKAndroid SDK的绝对路径。的绝对路径。Android应用程序设计应用程序设计张思张思民编著民编著4 4、创建、创建Android虚拟设备虚拟设备AVDAndroidAndroid程序可以在实体手机上执行,也可以创程序可以在实体手机上执行,也可以创建一个建一个AndroidAndroid虚拟设备虚拟设备AVDAVD(Android Virtual Android Virtual DeviceDevice)来测试。每一个)来测试。每一个AndroidAndroid虚拟设备虚拟设备AVDAVD模拟一套虚拟环境来运行模拟一套虚拟环境来运行AndroidAndroid操作系统平台,操作系统平台,这个平台有自己的内核、系统图像、外观显示、这个平台有自己的内核、系统图像、外观显示、用户数据区和仿真的用户数据区和仿真的SDSD卡等。卡等。Android应用程序设计应用程序设计张思张思民编著民编著下面介绍如何创建一个下面介绍如何创建一个Android虚拟设备虚拟设备AVD(1 1)选择)选择EclipseEclipse菜单菜单“窗口窗口”(WindowWindow)-“AVD -“AVD Manager”Manager”,在弹出的,在弹出的“Android Virtual Device Android Virtual Device Manager”Manager”对话框中可以看见已创建的对话框中可以看见已创建的AVDAVD。单击。单击“New”New”按钮创建一个新的按钮创建一个新的AVDAVD,如图,如图1.71.7所示。所示。Android应用程序设计应用程序设计张思张思民编著民编著(2 2)在弹出的)在弹出的“创建新创建新AVD”AVD”对话框中,输入或选择如图对话框中,输入或选择如图1.81.8所示的各项内容,点击所示的各项内容,点击“Create AVD”Create AVD”按钮,创建一按钮,创建一个新的个新的AVDAVD。(3 3)启动)启动AVDAVD模拟器。模拟器。 Android应用程序设计应用程序设计张思张思民编著民编著Android应用程序设计应用程序设计张思张思民编著民编著1.3 Android API和在线帮助文档和在线帮助文档1 1、Android APIAndroid API AndroidAndroid提供了标准类库提供了标准类库Android APIAndroid API。2 2、AndroidAndroid在线帮助文档在线帮助文档AndroidAndroid的官方网站上提供了目前最新的在线帮助文档的官方网站上提供了目前最新的在线帮助文档 http:/developer.android.com/reference/packages.htmlhttp:/developer.android.com/reference/packages.html Android应用程序设计应用程序设计张思张思民编著民编著Android应用程序设计应用程序设计张思张思民编著民编著1.4.1 开发开发Android应用程序的一般过程应用程序的一般过程 Android应用程序设计应用程序设计张思张思民编著民编著1.4.2 生成生成Android应用程序框架应用程序框架1 1、创创建一个新的建一个新的AndroidAndroid项项目目启动启动Eclipse, Eclipse, 选择选择FileFile(文件)(文件) - New- New(新建)(新建) - - ProjectProject(项目)(项目) 菜单菜单, , 在如图在如图1.121.12所示的所示的“新建项目新建项目”对话框对话框选择选择“Android Application Project”,Android Application Project”,点击点击“Next”Next”按钮。按钮。Android应用程序设计应用程序设计张思张思民编著民编著2 2、填写应用程序的参数、填写应用程序的参数在在“AndroidAndroid新应用程序新应用程序”信息对话框中输入应用程序名称、信息对话框中输入应用程序名称、项目名称、包名等参数。并选择项目名称、包名等参数。并选择Android SDKAndroid SDK的版本的版本 Android应用程序设计应用程序设计张思张思民编著民编著3 3、填写相关程序参数、填写相关程序参数Android应用程序设计应用程序设计张思张思民编著民编著系统自动生成一个系统自动生成一个Android应用项目框架。应用项目框架。 Android应用程序设计应用程序设计张思张思民编著民编著1.4.3编写代码编写代码MainActivity.java系统自动生成的如下代码:系统自动生成的如下代码:1 package com.example.helloandroid;1 package com.example.helloandroid;2 import android.app.Activity;2 import android.app.Activity;3 import android.os.Bundle;3 import android.os.Bundle;4 public class MainActivity extends Activity 4 public class MainActivity extends Activity 5 /* Called when the activity is first created. */5 /* Called when the activity is first created. */6 Override6 Override7 public void onCreate(Bundle savedInstanceState) 7 public void onCreate(Bundle savedInstanceState) 8 8 9 super.onCreate(savedInstanceState);9 super.onCreate(savedInstanceState);10 setContentView(R.layout.10 setContentView(R.layout.mainmain););11 11 12 12 显示显示main.xml定义的定义的用戶界面用戶界面Android应用程序设计应用程序设计张思张思民编著民编著1.4.4 配置应用程序的运行参数配置应用程序的运行参数 (1) (1) 在在“包资源管理器包资源管理器”中,右击项目名称中,右击项目名称“HelloAndroid”HelloAndroid”,选择弹出菜单的,选择弹出菜单的“运行方式运行方式| |运行配运行配置(置(N N)”项,项, Android应用程序设计应用程序设计张思张思民编著民编著1.4.4 配置应用程序的运行参数配置应用程序的运行参数 (2)(2)在弹出的在弹出的“运行配置运行配置”对话框中选择对话框中选择“Android”Android”选项卡,选项卡,单击单击“Browse.”Browse.”按钮,选择需要运行的按钮,选择需要运行的“HelloAndroid”HelloAndroid”项目。项目。 Android应用程序设计应用程序设计张思张思民编著民编著1.4.4 配置应用程序的运行参数配置应用程序的运行参数 (3)(3)在在“运行配置运行配置”对话框中选择对话框中选择“Target”Target”选项卡,选项卡,选择事先已经设置选择事先已经设置的模拟器的模拟器AVDAVD设备。设备。 Android应用程序设计应用程序设计张思张思民编著民编著1.4.5在模拟器中运行应用程序在模拟器中运行应用程序单击工具栏单击工具栏“运行运行Android Application”Android Application”按钮,运行按钮,运行AVDAVD模拟器,可以看到应用程序的运行结果(首次运行模拟器,可以看到应用程序的运行结果(首次运行程序时可能耗时较长)。程序时可能耗时较长)。 Android应用程序设计应用程序设计张思张思民编著民编著Android应用程序设计应用程序设计张思张思民编著民编著1.5 Android项目结构项目结构打开打开HelloAndroidHelloAndroid项目,在项目,在“项目资源项目资源管理器管理器”中可以看到中可以看到应用项目的目录和文应用项目的目录和文件结构。件结构。 Android应用程序设计应用程序设计张思张思民编著民编著1、src源代码目录源代码目录srcsrc目录存放目录存放AndroidAndroid应用程序的应用程序的JavaJava源代码文源代码文件。件。 Android应用程序设计应用程序设计张思张思民编著民编著2、资源目录资源目录res及资源类型及资源类型resres目录用于存放项目所需要的声音、图片、目录用于存放项目所需要的声音、图片、用户界面等资源文件。用户界面等资源文件。目录结构资源类型res/values存放字符串,颜色,尺寸,数组,主题,类型等资源res/layoutxml布局文件res/drawable图片(bmp,png,gif,jpg等)res/animxml格式的动画资源 (帧动画 和 补间动画)res/menu菜单资源res/raw可以放任意类型文件,一般存放比较大的音频、视频、图片或文档,会在R类中生成资源id,封装在apk中。assets可以存放任意类型,不会被编译,与raw相比,不会在R类中生成资源id。Android应用程序设计应用程序设计张思张思民编著民编著2、资源目录资源目录res及资源类型及资源类型(1 1)drawabledrawable细分为细分为 drawable-hdpidrawable-hdpi、drawable-ldpidrawable-ldpi、drawable-mdpidrawable-mdpi、drawable-xhdpidrawable-xhdpi子目录,分别存放分辨子目录,分别存放分辨率大小不同的图标资源率大小不同的图标资源, ,以便相同的应用以便相同的应用程序在分辨率大小不同的显示窗体上都程序在分辨率大小不同的显示窗体上都可以顺利显示。可以顺利显示。 Android应用程序设计应用程序设计张思张思民编著民编著几种分辨率大小不同的图标几种分辨率大小不同的图标Android应用程序设计应用程序设计张思张思民编著民编著2、资源目录资源目录res及资源类型及资源类型(2 2)在)在layoutlayout子目录存放用户界面布局文件。子目录存放用户界面布局文件。其目录中有一个系统自动生成其目录中有一个系统自动生成 activity_main.xmlactivity_main.xml文件,文件,它可以按可视化的图形设计界面显示,也可以按代码它可以按可视化的图形设计界面显示,也可以按代码设计界面显示,如图设计界面显示,如图1.231.23(a a)、()、(b b)所示。)所示。 。 (a a)图形设计界面图形设计界面(a a)代码设计界面代码设计界面Android应用程序设计应用程序设计张思张思民编著民编著2、资源目录资源目录res及资源类型及资源类型(3 3)valuesvalues子目录存放参数描述文件资源。子目录存放参数描述文件资源。 这些参数描述文件都是这些参数描述文件都是XMLXML文件,如字符串文件,如字符串(string.xmlstring.xml)、颜色()、颜色(color.xmlcolor.xml)、数组)、数组(arrays.xmlarrays.xml)等)等 。 Android应用程序设计应用程序设计张思张思民编著民编著3、gen目录目录GenGen目录存放由目录存放由ADTADT系统自动产生的一个系统自动产生的一个R.javaR.java文文件,该文件将件,该文件将resres目录中的资源与目录中的资源与IDID编号进行映编号进行映射。该文件由系统自动生成,用户不能修改。射。该文件由系统自动生成,用户不能修改。Android应用程序设计应用程序设计张思张思民编著民编著当在程序中引用资源需要使用当在程序中引用资源需要使用R R类,其引用形式如下:类,其引用形式如下:R.R.资源文件类型资源文件类型. .资源名称资源名称例如,例如,(1 1)在)在ActivityActivity中显示布局视图:中显示布局视图:setContentView(setContentView(R.layout.mainR.layout.main););(2 2)程序要获得用户界面布局文件中的按钮实例)程序要获得用户界面布局文件中的按钮实例Button1Button1:mButtn = (Button)finadViewById(mButtn = (Button)finadViewById(R.id.Button1R.id.Button1););(3 3)程序要获得用户界面布局文件中的文本组件实例)程序要获得用户界面布局文件中的文本组件实例TextView1TextView1:mEditText = mEditText = (EditText)findViewById(EditText)findViewById(R.id.EditText1R.id.EditText1););Android应用程序设计应用程序设计张思张思民编著民编著4、 AndroidManifest.xml项目配置文件项目配置文件 AndroidManifest.xmlAndroidManifest.xml是每个应用程序都是每个应用程序都需要的系统配置文件,它位于应用程序需要的系统配置文件,它位于应用程序根目录下。根目录下。 Android应用程序设计应用程序设计张思张思民编著民编著AndroidManifest.xml文件代码说明文件代码说明代代码码元素元素说说 明明manifestxmlxml文件的根文件的根结结点,包含了点,包含了package中所有的内容中所有的内容xmlns:android命名空命名空间间的声明。的声明。使得使得Android中各种中各种标标准属性能在文件中使用。准属性能在文件中使用。package声明声明应应用程序包用程序包uses-sdk声明声明应应用程序所使用的用程序所使用的AndroidSDK版本版本applicationapplication级别组级别组件的根件的根结结点。点。声明一些全局或默声明一些全局或默认认的属性,如的属性,如标签标签、图标图标、必要的必要的权权限等。限等。android:icon应应用程序用程序图标图标android:label应应用程序名称用程序名称activityActivity是一个是一个应应用程序与用用程序与用户户交互的交互的图图形界面。每一个形界面。每一个Activity必必须须有一有一个个标记对应标记对应。android:name应应用程序默用程序默认认启启动动的活的活动动程序程序Activity界面界面intent-filter声明一声明一组组组组件支持的件支持的IntentIntent值值。在。在Android中,中,组组件之件之间间可以相互可以相互调调用,用,协调协调工作,工作,IntentIntent提供提供组组件之件之间间通通讯讯所需要的相关信息所需要的相关信息action声明目声明目标组标组件件执执行的行的IntentIntent动动作。作。category指定目指定目标组标组件支持的件支持的Intent Intent 类别类别Android应用程序设计应用程序设计张思张思民编著民编著1.5.2 Android应用程序架构分析应用程序架构分析1 1、逻辑控制层与表现层、逻辑控制层与表现层在在AndroidAndroid应用程序中,逻辑控制层与表现层应用程序中,逻辑控制层与表现层是分开的设计的。逻辑控制层由是分开的设计的。逻辑控制层由JavaJava应用程序应用程序实现,表现层由实现,表现层由XMLXML文档描述,如图所示。文档描述,如图所示。Android应用程序设计应用程序设计张思张思民编著民编著2 2、AndroidAndroid程序的程序的组组成成结结构构Android应用程序设计应用程序设计张思张思民编著民编著其中:其中:(1 1)第)第1 1行是包声明语句,这个名字是在建立应用程序的时候指行是包声明语句,这个名字是在建立应用程序的时候指定。在这里设定为:定。在这里设定为:package com.HelloAndroid。这一行的作用是指出这个文档所在的名称空间。这一行的作用是指出这个文档所在的名称空间。“package”package”(包)(包)是其关键字。使用名称空间的原因是程序一旦扩展到某个大小,是其关键字。使用名称空间的原因是程序一旦扩展到某个大小,程序中的变量名称、方法名称、类名等难免重复,这时就可以通程序中的变量名称、方法名称、类名等难免重复,这时就可以通过定义名称空间,将定义的名称区隔,以避免相互冲突的情形发过定义名称空间,将定义的名称区隔,以避免相互冲突的情形发生。生。(2 2)第)第2 2、3 3行是导入包的声明语句。这二条语句的作用是告诉系行是导入包的声明语句。这二条语句的作用是告诉系统编译器,编译程序时要导入统编译器,编译程序时要导入“android.app.Activity”android.app.Activity”和和“android.os.Bundle”android.os.Bundle”二个包。二个包。“import”import”(导入)是其关键字。(导入)是其关键字。在在JavaJava语言中,使用任何语言中,使用任何APIAPI都要事先导入相对应的包。都要事先导入相对应的包。Android应用程序设计应用程序设计张思张思民编著民编著(3 3)第)第4 41111行是类的定义,这是应用行是类的定义,这是应用程序的主体部分。程序的主体部分。AndroidAndroid应用程序是由应用程序是由类组成的,类的一般结构为:类组成的,类的一般结构为:public class MainAndroid extends Activity /类声明类声明;/ 类体类体(4 4)第)第6 61010行是在行是在MainAndroidMainAndroid类的类体中类的类体中定义一个方法。定义一个方法。 Android应用程序设计应用程序设计张思张思民编著民编著Android应用程序设计应用程序设计张思张思民编著民编著1.6 Android应用程序设计示例应用程序设计示例 【例例1-11-1】在模拟器中显示在模拟器中显示“我对学习我对学习AndroidAndroid很感兴很感兴趣趣!”!”。 (1 1)新建一个)新建一个AndroidAndroid项目,其项目名称为项目,其项目名称为Ex01_01Ex01_01,包名,包名为为com.ex01_01com.ex01_01。(2 2)在系统自动生成的应用程序中,打开修改资源目录)在系统自动生成的应用程序中,打开修改资源目录resvaluesresvalues中的字符串文件中的字符串文件string.xmlstring.xml,找到,找到XMLXML文档元素文档元素 Hello World, Ex01_01Activity!Hello World, Ex01_01Activity! 将其修改为:将其修改为: 我对学习我对学习AndroidAndroid很感兴趣很感兴趣!(3 3)保存程序。设置菜单)保存程序。设置菜单“运行运行”的的“运行配置运行配置”项,运行项,运行项目。项目。Android应用程序设计应用程序设计张思张思民编著民编著【例例1-2】设计一个显示资源目录中图片文件的设计一个显示资源目录中图片文件的程序。程序。(1 1)在)在eclipseeclipse中新建一个中新建一个AndroidAndroid项目,项目,其项目名称其项目名称Application NameApplication Name为为Ex01_02Ex01_02,包名,包名Package NamePackage Name为为com.ex01_02com.ex01_02。(2 2)把事先准备的图片文件)把事先准备的图片文件flower.pngflower.png复制到资源目录复制到资源目录resdrawable-hdpiresdrawable-hdpi中,中,如图如图1.261.26(a a)所示。)所示。(3 3)打开源代码目录)打开源代码目录srcsrc中的中的MainActivity.javaMainActivity.java文件,编写代码如下:文件,编写代码如下:Android应用程序设计应用程序设计张思张思民编著民编著package com.ex01_02;package com.ex01_02;import android.app.Activity;import android.app.Activity;import android.os.Bundle;import android.os.Bundle;import android.widget.ImageView;import android.widget.ImageView;public class MainActivity extends Activity public class MainActivity extends Activity /* Called when the activity is first created. */ /* Called when the activity is first created. */ Override Override public void onCreate(Bundle savedInstanceState) public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); super.onCreate(savedInstanceState); setContentView(R.layout.main);setContentView(R.layout.main); /创建创建ImageViewImageView对象并实例化对象并实例化ImageView img = new ImageView(this); ImageView img = new ImageView(this); /ImageView/ImageView对象设置引用图片资源对象设置引用图片资源 img.setImageResource(R.drawable.flower);img.setImageResource(R.drawable.flower); setContentView(img); setContentView(img); 增加导入增加导入ImageView类的语句类的语句Android应用程序设计应用程序设计张思张思民编著民编著(4 4)保存程序。设置菜单)保存程序。设置菜单“运行运行”的的“运行配置运行配置”项,运行项目。项,运行项目。 Android应用程序设计应用程序设计张思张思民编著民编著上机练习上机练习1 1、编写、编写AndroidAndroid应用程序,在模拟器中应用程序,在模拟器中显示显示“我对我对AndroidAndroid很痴迷很痴迷!”!”。2 2、编写、编写AndroidAndroid应用程序,在模拟器中应用程序,在模拟器中显示一个图形文件。显示一个图形文件。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号