腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
标签
android
#
android
基于 Linux 内核的开放源代码移动操作系统
关注
专栏文章
(27K)
技术视频
(107)
互动问答
(3.5K)
腾讯移动推送android非gradle方式依赖使用?
0
回答
android
、
腾讯移动推送
、
gradle
Android语音识别报错,怎么解决?
1
回答
语音识别
、
java
、
android
、
anchor
、
message
技术流浪者
江湖人称“山哥”,在数字化、人工智能、电商和金融等领域积累了丰富的平台架构设计经验
报错的本质是“Android 无法找到可信的证书信任锚”。
优先在服务端补齐并正确配置证书链;确保域名匹配与证书有效。
客户端仅在必须时进行兼容性配置(添加企业 CA、Conscrypt、pinning),避免不安全的“全信任”。
赞
1
收藏
0
评论
0
分享
报错的本质是“Android 无法找到可信的证书信任锚”。 优先在服务端补齐并正确配置证书链;确保域名匹配与证书有效。 客户端仅在必须时进行兼容性配置(添加企业 CA、Conscrypt、pinning),避免不安全的“全信任”。
android 数据库的作用是什么
1
回答
android
、
数据库
gavin1024
Android数据库的作用是**在移动设备上本地存储和管理结构化数据**,为应用提供持久化数据支持,使数据在应用关闭或设备重启后仍可访问,同时支持高效的数据查询和操作。 ### 解释: 1. **数据持久化**:将用户数据(如设置、缓存、用户生成内容)保存在本地,避免依赖网络或临时存储。 2. **离线功能**:即使没有网络连接,应用也能通过本地数据库提供基础服务(如笔记应用查看已保存的笔记)。 3. **性能优化**:本地查询比网络请求更快,适合频繁访问的数据(如应用配置、历史记录)。 4. **数据结构化管理**:通过表、字段等关系型模型组织数据,便于复杂查询和关联操作。 ### 例子: - **待办事项应用**:使用数据库存储任务列表,即使卸载重装应用(若未清除数据),任务仍可恢复。 - **电商应用**:缓存商品分类信息到本地数据库,减少重复网络请求,提升首页加载速度。 - **健康类应用**:记录用户的步数、心率等数据,长期保存供分析展示。 ### 腾讯云相关产品推荐: 若需将本地数据同步到云端或扩展存储能力,可使用 **腾讯云数据库 TencentDB**(如 MySQL、Redis 等托管服务),或通过 **腾讯云移动开发平台** 的 **数据同步服务** 实现本地与云端数据库的双向同步。对于轻量级需求,也可结合 **腾讯云对象存储 COS** 存储非结构化数据(如图片附件)。...
展开详请
赞
0
收藏
0
评论
0
分享
Android数据库的作用是**在移动设备上本地存储和管理结构化数据**,为应用提供持久化数据支持,使数据在应用关闭或设备重启后仍可访问,同时支持高效的数据查询和操作。 ### 解释: 1. **数据持久化**:将用户数据(如设置、缓存、用户生成内容)保存在本地,避免依赖网络或临时存储。 2. **离线功能**:即使没有网络连接,应用也能通过本地数据库提供基础服务(如笔记应用查看已保存的笔记)。 3. **性能优化**:本地查询比网络请求更快,适合频繁访问的数据(如应用配置、历史记录)。 4. **数据结构化管理**:通过表、字段等关系型模型组织数据,便于复杂查询和关联操作。 ### 例子: - **待办事项应用**:使用数据库存储任务列表,即使卸载重装应用(若未清除数据),任务仍可恢复。 - **电商应用**:缓存商品分类信息到本地数据库,减少重复网络请求,提升首页加载速度。 - **健康类应用**:记录用户的步数、心率等数据,长期保存供分析展示。 ### 腾讯云相关产品推荐: 若需将本地数据同步到云端或扩展存储能力,可使用 **腾讯云数据库 TencentDB**(如 MySQL、Redis 等托管服务),或通过 **腾讯云移动开发平台** 的 **数据同步服务** 实现本地与云端数据库的双向同步。对于轻量级需求,也可结合 **腾讯云对象存储 COS** 存储非结构化数据(如图片附件)。
android数据库有什么查看器
1
回答
android
、
数据库
gavin1024
Android数据库查看器用于查看和调试应用中的SQLite数据库,常见工具包括: 1. **Database Inspector(Android Studio内置)** - **解释**:Android Studio提供的官方工具,可直接连接运行中的应用进程,实时查看SQLite数据库内容,支持查询、编辑数据。 - **适用场景**:开发阶段调试本地数据库。 - **示例**:在Android Studio中打开项目,点击底部工具栏的 **Database Inspector**,选择应用进程后即可浏览数据库表。 2. **Stetho(Facebook开源库)** - **解释**:通过Chrome开发者工具查看数据库,需集成到应用代码中,适合深度调试。 - **示例**:在`build.gradle`中添加依赖后,启动应用并在Chrome访问 `chrome://inspect` 查看数据库。 3. **第三方工具(如SQLite Browser)** - **解释**:导出数据库文件(通常位于`/data/data/<package>/databases/`)后用工具打开,但需Root权限或调试版本。 - **示例**:使用 **DB Browser for SQLite** 打开导出的`.db`文件分析结构。 4. **腾讯云相关产品推荐** - 若需云端数据库管理,腾讯云提供 **TDSQL**(关系型数据库服务),搭配 **数据库审计** 和 **控制台可视化工具**,可远程管理MySQL等数据库,适合生产环境。开发测试时也可将Android数据同步至云端分析。 其他工具如 **aSQLiteManager**(需导出文件)或 **SQLiteStudio** 也支持离线分析。...
展开详请
赞
0
收藏
0
评论
0
分享
Android数据库查看器用于查看和调试应用中的SQLite数据库,常见工具包括: 1. **Database Inspector(Android Studio内置)** - **解释**:Android Studio提供的官方工具,可直接连接运行中的应用进程,实时查看SQLite数据库内容,支持查询、编辑数据。 - **适用场景**:开发阶段调试本地数据库。 - **示例**:在Android Studio中打开项目,点击底部工具栏的 **Database Inspector**,选择应用进程后即可浏览数据库表。 2. **Stetho(Facebook开源库)** - **解释**:通过Chrome开发者工具查看数据库,需集成到应用代码中,适合深度调试。 - **示例**:在`build.gradle`中添加依赖后,启动应用并在Chrome访问 `chrome://inspect` 查看数据库。 3. **第三方工具(如SQLite Browser)** - **解释**:导出数据库文件(通常位于`/data/data/<package>/databases/`)后用工具打开,但需Root权限或调试版本。 - **示例**:使用 **DB Browser for SQLite** 打开导出的`.db`文件分析结构。 4. **腾讯云相关产品推荐** - 若需云端数据库管理,腾讯云提供 **TDSQL**(关系型数据库服务),搭配 **数据库审计** 和 **控制台可视化工具**,可远程管理MySQL等数据库,适合生产环境。开发测试时也可将Android数据同步至云端分析。 其他工具如 **aSQLiteManager**(需导出文件)或 **SQLiteStudio** 也支持离线分析。
android一般用什么数据库
1
回答
android
、
数据库
gavin1024
Android 一般使用 **SQLite** 作为内置轻量级关系型数据库,适合本地数据存储。此外,根据需求也可能选用 **Room**(官方推荐的 SQLite 封装库)、**Realm**(NoSQL 数据库)、**Firebase Realtime Database/Firestore**(云端同步数据库)等。 ### 解释: 1. **SQLite** - 轻量级、无需服务器、零配置,直接集成在 Android 系统中,适合存储结构化数据,如用户信息、本地缓存等。 - 是 Android 官方支持的数据库,通过 `SQLiteDatabase` 类进行操作。 2. **Room** - 是 Google 官方推出的 ORM(对象关系映射)库,基于 SQLite 封装,提供了更安全、便捷的数据库操作方式,支持编译时 SQL 校验,推荐在新项目中使用。 - 属于 Jetpack 组件之一,简化了数据库的创建、查询和版本管理。 3. **Realm** - 是一个跨平台的 NoSQL 移动端数据库,性能高,支持对象直接存储,适合复杂数据模型或对读写性能要求较高的场景。 4. **Firebase Realtime Database / Firestore** - 如果需要数据在多个设备间实时同步,比如社交应用、聊天应用,可以使用 Firebase 提供的云端数据库服务,支持实时更新和离线缓存。 --- ### 举例: #### 使用 SQLite(原生方式): ```java SQLiteDatabase db = openOrCreateDatabase("my_db", Context.MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS Users (id INTEGER PRIMARY KEY, name TEXT)"); db.execSQL("INSERT INTO Users (name) VALUES ('Alice')"); Cursor cursor = db.rawQuery("SELECT * FROM Users", null); ``` #### 使用 Room(推荐): 1. 添加依赖: ```gradle implementation "androidx.room:room-runtime:2.x.x" annotationProcessor "androidx.room:room-compiler:2.x.x" ``` 2. 定义 Entity 和 DAO: ```java @Entity public class User { @PrimaryKey public int id; public String name; } @Dao public interface UserDao { @Insert void insert(User user); @Query("SELECT * FROM user") List<User> getAllUsers(); } @Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); } ``` 3. 使用: ```java AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "my-database").build(); db.userDao().insert(new User(1, "Alice")); ``` --- ### 腾讯云相关产品推荐: 如果你的应用需要**云端数据库服务**,比如数据同步、高可用、弹性扩展,推荐使用 **腾讯云数据库 TencentDB** 系列: - **TencentDB for MySQL / PostgreSQL / MongoDB**:适合需要关系型或文档型云端数据库的场景,支持高可用、备份恢复、自动扩容。 - **TencentDB for Redis**:适合缓存、会话存储等高性能需求。 - **云开发 CloudBase**:提供 **云数据库(NoSQL)**,支持实时数据同步、云函数、云存储等能力,非常适合快速开发小程序、移动应用后端,无需搭建服务器。 例如,使用 **腾讯云云开发 CloudBase** 的 NoSQL 数据库,可以轻松实现数据存储与实时同步,非常适合社交类、协作类移动应用。...
展开详请
赞
0
收藏
0
评论
0
分享
Android 一般使用 **SQLite** 作为内置轻量级关系型数据库,适合本地数据存储。此外,根据需求也可能选用 **Room**(官方推荐的 SQLite 封装库)、**Realm**(NoSQL 数据库)、**Firebase Realtime Database/Firestore**(云端同步数据库)等。 ### 解释: 1. **SQLite** - 轻量级、无需服务器、零配置,直接集成在 Android 系统中,适合存储结构化数据,如用户信息、本地缓存等。 - 是 Android 官方支持的数据库,通过 `SQLiteDatabase` 类进行操作。 2. **Room** - 是 Google 官方推出的 ORM(对象关系映射)库,基于 SQLite 封装,提供了更安全、便捷的数据库操作方式,支持编译时 SQL 校验,推荐在新项目中使用。 - 属于 Jetpack 组件之一,简化了数据库的创建、查询和版本管理。 3. **Realm** - 是一个跨平台的 NoSQL 移动端数据库,性能高,支持对象直接存储,适合复杂数据模型或对读写性能要求较高的场景。 4. **Firebase Realtime Database / Firestore** - 如果需要数据在多个设备间实时同步,比如社交应用、聊天应用,可以使用 Firebase 提供的云端数据库服务,支持实时更新和离线缓存。 --- ### 举例: #### 使用 SQLite(原生方式): ```java SQLiteDatabase db = openOrCreateDatabase("my_db", Context.MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS Users (id INTEGER PRIMARY KEY, name TEXT)"); db.execSQL("INSERT INTO Users (name) VALUES ('Alice')"); Cursor cursor = db.rawQuery("SELECT * FROM Users", null); ``` #### 使用 Room(推荐): 1. 添加依赖: ```gradle implementation "androidx.room:room-runtime:2.x.x" annotationProcessor "androidx.room:room-compiler:2.x.x" ``` 2. 定义 Entity 和 DAO: ```java @Entity public class User { @PrimaryKey public int id; public String name; } @Dao public interface UserDao { @Insert void insert(User user); @Query("SELECT * FROM user") List<User> getAllUsers(); } @Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); } ``` 3. 使用: ```java AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "my-database").build(); db.userDao().insert(new User(1, "Alice")); ``` --- ### 腾讯云相关产品推荐: 如果你的应用需要**云端数据库服务**,比如数据同步、高可用、弹性扩展,推荐使用 **腾讯云数据库 TencentDB** 系列: - **TencentDB for MySQL / PostgreSQL / MongoDB**:适合需要关系型或文档型云端数据库的场景,支持高可用、备份恢复、自动扩容。 - **TencentDB for Redis**:适合缓存、会话存储等高性能需求。 - **云开发 CloudBase**:提供 **云数据库(NoSQL)**,支持实时数据同步、云函数、云存储等能力,非常适合快速开发小程序、移动应用后端,无需搭建服务器。 例如,使用 **腾讯云云开发 CloudBase** 的 NoSQL 数据库,可以轻松实现数据存储与实时同步,非常适合社交类、协作类移动应用。
Android系统内置腾讯会议APP合法吗?
1
回答
android
、
腾讯会议
、
app
、
开发
、
系统
用户8056358
开发的Android会议机系统,将腾讯会议预置到系统中会不会有法律风险? - 属于未经授权的预装,有法律风险。 另外产品宣传时,图片、文字中出现腾讯会议的是不是也不行? - 可能属于未经许可使用腾讯会议商标行为,具体需要视具体宣传文字、图片内容确认。 如果您有相关开发需求,安卓会议机推荐选用腾讯会议Rooms通用包,附上申请链接: https://doc.weixin.qq.com/forms/AJEAIQdfAAoADAAmAYIACgCNz1UIz0Qff?page=1...
展开详请
赞
1
收藏
0
评论
0
分享
开发的Android会议机系统,将腾讯会议预置到系统中会不会有法律风险? - 属于未经授权的预装,有法律风险。 另外产品宣传时,图片、文字中出现腾讯会议的是不是也不行? - 可能属于未经许可使用腾讯会议商标行为,具体需要视具体宣传文字、图片内容确认。 如果您有相关开发需求,安卓会议机推荐选用腾讯会议Rooms通用包,附上申请链接: https://doc.weixin.qq.com/forms/AJEAIQdfAAoADAAmAYIACgCNz1UIz0Qff?page=1
腾讯会议Android端sdk报错,请问一下怎么处理?
1
回答
android
、
腾讯会议
、
sdk
、
腾讯会议SDK
liquid
可以提个工单查下,https://console.cloud.tencent.com/workorder/category?level1_id=517&level2_id=992&source=14&data_title=%E8%85%BE%E8%AE%AF%E4%BC%9A%E8%AE%AE&step=1...
展开详请
赞
0
收藏
0
评论
0
分享
可以提个工单查下,https://console.cloud.tencent.com/workorder/category?level1_id=517&level2_id=992&source=14&data_title=%E8%85%BE%E8%AE%AF%E4%BC%9A%E8%AE%AE&step=1
android系统使用的数据库是什么
1
回答
android
、
数据库
、
系统
gavin1024
Android系统默认使用的数据库是SQLite。 **解释问题:** SQLite是一个轻量级、无服务器、零配置、自包含的关系型数据库引擎,特别适合移动设备和嵌入式系统。Android系统内置了SQLite库,开发者可以直接通过Android提供的API(如`SQLiteDatabase`类)来操作SQLite数据库,无需额外安装或配置。 **举例:** 比如一个Android应用需要存储用户的登录信息(如用户名和密码),开发者可以创建一个SQLite数据库表来存储这些数据。代码示例如下(Kotlin): ```kotlin // 定义数据库帮助类 class UserDbHelper(context: Context) : SQLiteOpenHelper(context, "UserDB", null, 1) { override fun onCreate(db: SQLiteDatabase) { // 创建用户表 val createTable = """ CREATE TABLE Users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, password TEXT NOT NULL ) """.trimIndent() db.execSQL(createTable) } override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { // 数据库升级逻辑 } } // 使用示例 val dbHelper = UserDbHelper(context) val db = dbHelper.writableDatabase // 插入一条用户记录 val values = ContentValues().apply { put("username", "user1") put("password", "pass123") } db.insert("Users", null, values) ``` **腾讯云相关产品推荐:** 如果应用需要云端数据库服务(如数据同步、多端共享或大规模数据存储),可以结合腾讯云的**云数据库TencentDB for MySQL**(关系型数据库)或**云数据库TencentDB for SQLite(通过云函数或容器化部署)**,以及**移动开发平台(MPS)**提供的云端数据同步能力,实现本地SQLite与云端数据库的无缝结合。对于移动端数据缓存和快速访问,也可以使用**腾讯云对象存储COS**存储数据库备份文件。...
展开详请
赞
0
收藏
0
评论
0
分享
Android系统默认使用的数据库是SQLite。 **解释问题:** SQLite是一个轻量级、无服务器、零配置、自包含的关系型数据库引擎,特别适合移动设备和嵌入式系统。Android系统内置了SQLite库,开发者可以直接通过Android提供的API(如`SQLiteDatabase`类)来操作SQLite数据库,无需额外安装或配置。 **举例:** 比如一个Android应用需要存储用户的登录信息(如用户名和密码),开发者可以创建一个SQLite数据库表来存储这些数据。代码示例如下(Kotlin): ```kotlin // 定义数据库帮助类 class UserDbHelper(context: Context) : SQLiteOpenHelper(context, "UserDB", null, 1) { override fun onCreate(db: SQLiteDatabase) { // 创建用户表 val createTable = """ CREATE TABLE Users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, password TEXT NOT NULL ) """.trimIndent() db.execSQL(createTable) } override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { // 数据库升级逻辑 } } // 使用示例 val dbHelper = UserDbHelper(context) val db = dbHelper.writableDatabase // 插入一条用户记录 val values = ContentValues().apply { put("username", "user1") put("password", "pass123") } db.insert("Users", null, values) ``` **腾讯云相关产品推荐:** 如果应用需要云端数据库服务(如数据同步、多端共享或大规模数据存储),可以结合腾讯云的**云数据库TencentDB for MySQL**(关系型数据库)或**云数据库TencentDB for SQLite(通过云函数或容器化部署)**,以及**移动开发平台(MPS)**提供的云端数据同步能力,实现本地SQLite与云端数据库的无缝结合。对于移动端数据缓存和快速访问,也可以使用**腾讯云对象存储COS**存储数据库备份文件。
android中用到的数据库是什么
1
回答
android
、
数据库
gavin1024
答案:Android中默认用到的数据库是SQLite。 解释:SQLite是一款轻量级的关系型数据库,它不需要独立的服务器进程,直接以文件形式存储在设备本地,非常适合移动设备使用。Android系统内置了SQLite数据库支持,开发者可以通过Android提供的API(如SQLiteDatabase类)方便地进行数据的增删改查操作。 举例:比如一个简单的记账App,可以用SQLite存储每笔收入和支出的记录,包括日期、金额、类别等字段。通过创建一张名为"transactions"的表,使用INSERT语句添加记录,用SELECT语句查询特定时间段的账单。 腾讯云相关产品推荐:如果需要将本地SQLite数据同步到云端或构建更强大的后端服务,可以使用腾讯云的云数据库MySQL/PostgreSQL(提供稳定可靠的关系型数据库服务),或使用腾讯云移动开发平台(提供数据同步、离线缓存等移动端数据库解决方案)。对于需要NoSQL解决方案的场景,可以考虑腾讯云的云数据库MongoDB。...
展开详请
赞
0
收藏
0
评论
0
分享
答案:Android中默认用到的数据库是SQLite。 解释:SQLite是一款轻量级的关系型数据库,它不需要独立的服务器进程,直接以文件形式存储在设备本地,非常适合移动设备使用。Android系统内置了SQLite数据库支持,开发者可以通过Android提供的API(如SQLiteDatabase类)方便地进行数据的增删改查操作。 举例:比如一个简单的记账App,可以用SQLite存储每笔收入和支出的记录,包括日期、金额、类别等字段。通过创建一张名为"transactions"的表,使用INSERT语句添加记录,用SELECT语句查询特定时间段的账单。 腾讯云相关产品推荐:如果需要将本地SQLite数据同步到云端或构建更强大的后端服务,可以使用腾讯云的云数据库MySQL/PostgreSQL(提供稳定可靠的关系型数据库服务),或使用腾讯云移动开发平台(提供数据同步、离线缓存等移动端数据库解决方案)。对于需要NoSQL解决方案的场景,可以考虑腾讯云的云数据库MongoDB。
android为什么要拷贝数据库
1
回答
android
、
数据库
gavin1024
在 Android 中,通常不直接拷贝数据库文件,而是通过备份或迁移数据的方式管理数据库。但某些场景下可能需要拷贝数据库文件(如 `.db` 或 `.sqlite` 文件),原因包括: 1. **数据备份与恢复** 直接拷贝数据库文件是一种快速备份方式,适合离线保存或迁移到其他设备。例如,用户卸载应用前手动备份数据库,重新安装后替换文件以恢复数据。 2. **开发调试** 开发者可能需要复制数据库文件到电脑,用工具(如 SQLite Browser)直接查看或修改数据,便于调试。 3. **多进程/多应用共享数据** 若多个应用需要访问同一份数据库(需配置 `MODE_WORLD_READABLE` 等权限,但已不推荐),可能通过拷贝文件实现数据共享(更安全的做法是使用 ContentProvider)。 4. **版本升级兼容** 数据库结构变更时,旧版数据库文件可能需临时保留,拷贝后用于数据迁移或回滚。 **示例**: 在 Android 代码中,可通过以下方式获取数据库文件路径并拷贝: ```java File dbFile = getDatabasePath("my_database.db"); File backupFile = new File(Environment.getExternalStorageDirectory(), "backup.db"); copyFile(dbFile, backupFile); // 自定义文件拷贝方法 ``` **腾讯云相关产品推荐**: 若需云端备份或同步数据库,可使用 **腾讯云对象存储(COS)** 存储数据库文件,或通过 **腾讯云移动开发平台(MTP)** 的数据同步服务实现更安全的云端管理。...
展开详请
赞
0
收藏
0
评论
0
分享
在 Android 中,通常不直接拷贝数据库文件,而是通过备份或迁移数据的方式管理数据库。但某些场景下可能需要拷贝数据库文件(如 `.db` 或 `.sqlite` 文件),原因包括: 1. **数据备份与恢复** 直接拷贝数据库文件是一种快速备份方式,适合离线保存或迁移到其他设备。例如,用户卸载应用前手动备份数据库,重新安装后替换文件以恢复数据。 2. **开发调试** 开发者可能需要复制数据库文件到电脑,用工具(如 SQLite Browser)直接查看或修改数据,便于调试。 3. **多进程/多应用共享数据** 若多个应用需要访问同一份数据库(需配置 `MODE_WORLD_READABLE` 等权限,但已不推荐),可能通过拷贝文件实现数据共享(更安全的做法是使用 ContentProvider)。 4. **版本升级兼容** 数据库结构变更时,旧版数据库文件可能需临时保留,拷贝后用于数据迁移或回滚。 **示例**: 在 Android 代码中,可通过以下方式获取数据库文件路径并拷贝: ```java File dbFile = getDatabasePath("my_database.db"); File backupFile = new File(Environment.getExternalStorageDirectory(), "backup.db"); copyFile(dbFile, backupFile); // 自定义文件拷贝方法 ``` **腾讯云相关产品推荐**: 若需云端备份或同步数据库,可使用 **腾讯云对象存储(COS)** 存储数据库文件,或通过 **腾讯云移动开发平台(MTP)** 的数据同步服务实现更安全的云端管理。
RISC-V会重演Android的碎片化悲剧吗?
0
回答
android
、
架构师
、
跨平台
、
模型
android怎么把数据库的数据显示出来
1
回答
android
、
数据库
、
数据
gavin1024
在Android中,可以通过以下步骤将数据库数据显示出来: 1. **创建数据库和表**:使用SQLiteOpenHelper类创建和管理数据库及表结构。 2. **查询数据**:通过SQLiteDatabase的query()或rawQuery()方法执行SQL查询语句获取数据。 3. **使用Cursor适配器**:将查询结果(Cursor对象)与ListView或RecyclerView等视图组件绑定显示。 **示例代码**: ```java // 1. 定义数据库帮助类 public class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, "mydb.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} } // 2. 在Activity中查询并显示数据 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatabaseHelper dbHelper = new DatabaseHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); // 查询数据 Cursor cursor = db.query("users", null, null, null, null, null, null); // 使用SimpleCursorAdapter绑定到ListView String[] fromColumns = {"name"}; int[] toViews = {android.R.id.text1}; SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, android.R.layout.simple_list_item_1, cursor, fromColumns, toViews, 0 ); ListView listView = findViewById(R.id.listView); listView.setAdapter(adapter); } } ``` **腾讯云相关产品推荐**: - 如果需要云端数据库服务,可以使用**腾讯云数据库MySQL**或**腾讯云数据库TDSQL**(兼容MySQL和PostgreSQL),通过SDK或REST API与Android应用交互。 - 数据同步场景可使用**腾讯云移动数据库TBase**,支持多端数据同步。 - 对于大规模数据存储,可考虑**腾讯云对象存储COS**配合数据库使用。...
展开详请
赞
0
收藏
0
评论
0
分享
在Android中,可以通过以下步骤将数据库数据显示出来: 1. **创建数据库和表**:使用SQLiteOpenHelper类创建和管理数据库及表结构。 2. **查询数据**:通过SQLiteDatabase的query()或rawQuery()方法执行SQL查询语句获取数据。 3. **使用Cursor适配器**:将查询结果(Cursor对象)与ListView或RecyclerView等视图组件绑定显示。 **示例代码**: ```java // 1. 定义数据库帮助类 public class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, "mydb.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} } // 2. 在Activity中查询并显示数据 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatabaseHelper dbHelper = new DatabaseHelper(this); SQLiteDatabase db = dbHelper.getReadableDatabase(); // 查询数据 Cursor cursor = db.query("users", null, null, null, null, null, null); // 使用SimpleCursorAdapter绑定到ListView String[] fromColumns = {"name"}; int[] toViews = {android.R.id.text1}; SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, android.R.layout.simple_list_item_1, cursor, fromColumns, toViews, 0 ); ListView listView = findViewById(R.id.listView); listView.setAdapter(adapter); } } ``` **腾讯云相关产品推荐**: - 如果需要云端数据库服务,可以使用**腾讯云数据库MySQL**或**腾讯云数据库TDSQL**(兼容MySQL和PostgreSQL),通过SDK或REST API与Android应用交互。 - 数据同步场景可使用**腾讯云移动数据库TBase**,支持多端数据同步。 - 对于大规模数据存储,可考虑**腾讯云对象存储COS**配合数据库使用。
android如何判断数据库是否存在
1
回答
android
、
数据库
gavin1024
在Android中,可以通过查询`SQLiteDatabase`或检查数据库文件是否存在来判断数据库是否存在。 **方法1:通过`SQLiteDatabase`尝试打开数据库** 使用`SQLiteDatabase.openDatabase()`方法,若抛出`SQLiteCantOpenDatabaseException`异常则说明数据库不存在。 示例代码: ```java File databaseFile = getDatabasePath("your_database_name.db"); if (databaseFile.exists()) { // 数据库文件存在 } else { // 数据库文件不存在 } ``` 或通过尝试打开数据库: ```java try { SQLiteDatabase db = SQLiteDatabase.openDatabase( getDatabasePath("your_database_name.db").getPath(), null, SQLiteDatabase.OPEN_READONLY ); db.close(); // 数据库存在 } catch (SQLiteCantOpenDatabaseException e) { // 数据库不存在 } ``` **方法2:直接检查文件系统** 通过`Context.getDatabasePath()`获取数据库文件路径,再检查文件是否存在。 示例代码: ```java File dbFile = getDatabasePath("your_database_name.db"); boolean isDatabaseExist = dbFile.exists(); ``` **腾讯云相关产品推荐** 若需云端数据库服务,可使用腾讯云的**TencentDB for MySQL**或**TencentDB for SQLite**(需结合移动开发场景,如通过SDK同步本地与云端数据)。移动端数据同步可结合**腾讯云移动开发套件**(如移动推送、数据同步服务)实现。...
展开详请
赞
0
收藏
0
评论
0
分享
在Android中,可以通过查询`SQLiteDatabase`或检查数据库文件是否存在来判断数据库是否存在。 **方法1:通过`SQLiteDatabase`尝试打开数据库** 使用`SQLiteDatabase.openDatabase()`方法,若抛出`SQLiteCantOpenDatabaseException`异常则说明数据库不存在。 示例代码: ```java File databaseFile = getDatabasePath("your_database_name.db"); if (databaseFile.exists()) { // 数据库文件存在 } else { // 数据库文件不存在 } ``` 或通过尝试打开数据库: ```java try { SQLiteDatabase db = SQLiteDatabase.openDatabase( getDatabasePath("your_database_name.db").getPath(), null, SQLiteDatabase.OPEN_READONLY ); db.close(); // 数据库存在 } catch (SQLiteCantOpenDatabaseException e) { // 数据库不存在 } ``` **方法2:直接检查文件系统** 通过`Context.getDatabasePath()`获取数据库文件路径,再检查文件是否存在。 示例代码: ```java File dbFile = getDatabasePath("your_database_name.db"); boolean isDatabaseExist = dbFile.exists(); ``` **腾讯云相关产品推荐** 若需云端数据库服务,可使用腾讯云的**TencentDB for MySQL**或**TencentDB for SQLite**(需结合移动开发场景,如通过SDK同步本地与云端数据)。移动端数据同步可结合**腾讯云移动开发套件**(如移动推送、数据同步服务)实现。
android怎么查看数据库数据
1
回答
android
、
数据库
、
数据
gavin1024
在Android中查看数据库数据可以通过以下方法: 1. **使用Android Studio的Database Inspector** - 适用于调试阶段,直接查看应用数据库内容。 - 步骤: 1. 运行应用到设备或模拟器。 2. 在Android Studio顶部菜单选择 **View > Tool Windows > Database Inspector**。 3. 选择应用进程,即可浏览数据库表及数据。 2. **通过代码导出数据库文件** - 数据库默认存储在设备路径:`/data/data/<package_name>/databases/<db_name>`。 - 需要root权限或通过ADB命令导出: ```bash adb shell run-as <package_name> # 无需root的调试应用 cp /data/data/<package_name>/databases/<db_name> /sdcard/ exit adb pull /sdcard/<db_name> # 导出到电脑 ``` - 用工具(如SQLite Browser)打开导出的文件查看数据。 3. **代码中打印查询结果** - 使用`SQLiteDatabase`查询后遍历`Cursor`: ```java SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("table_name", null, null, null, null, null, null); while (cursor.moveToNext()) { String data = cursor.getString(cursor.getColumnIndex("column_name")); Log.d("DB_DATA", data); } cursor.close(); ``` **腾讯云相关产品推荐** 若需云端数据库管理,可使用**腾讯云数据库TDSQL**(兼容MySQL/PostgreSQL),搭配**腾讯云移动开发平台**的日志服务,远程查看应用数据库操作日志。...
展开详请
赞
0
收藏
0
评论
0
分享
在Android中查看数据库数据可以通过以下方法: 1. **使用Android Studio的Database Inspector** - 适用于调试阶段,直接查看应用数据库内容。 - 步骤: 1. 运行应用到设备或模拟器。 2. 在Android Studio顶部菜单选择 **View > Tool Windows > Database Inspector**。 3. 选择应用进程,即可浏览数据库表及数据。 2. **通过代码导出数据库文件** - 数据库默认存储在设备路径:`/data/data/<package_name>/databases/<db_name>`。 - 需要root权限或通过ADB命令导出: ```bash adb shell run-as <package_name> # 无需root的调试应用 cp /data/data/<package_name>/databases/<db_name> /sdcard/ exit adb pull /sdcard/<db_name> # 导出到电脑 ``` - 用工具(如SQLite Browser)打开导出的文件查看数据。 3. **代码中打印查询结果** - 使用`SQLiteDatabase`查询后遍历`Cursor`: ```java SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("table_name", null, null, null, null, null, null); while (cursor.moveToNext()) { String data = cursor.getString(cursor.getColumnIndex("column_name")); Log.d("DB_DATA", data); } cursor.close(); ``` **腾讯云相关产品推荐** 若需云端数据库管理,可使用**腾讯云数据库TDSQL**(兼容MySQL/PostgreSQL),搭配**腾讯云移动开发平台**的日志服务,远程查看应用数据库操作日志。
腾讯会议Android SDK入会的使用方式是怎样的?
2
回答
android
、
腾讯会议
、
sdk
、
代理
、
腾讯会议SDK
谢苏
无限热爱计算机,为技术而窒息!
腾讯会议Android SDK的入会功能支持直接在客户端(App)内完成入会,无需依赖已安装的腾讯会议App,也不是通过云端代理入会。 SDK入会的核心机制 独立客户端入会: 腾讯会议Android SDK提供了完整的会议功能(包括入会、音视频、屏幕共享等),开发者集成后,用户可直接在集成SDK的App内完成入会操作,无需跳转到外部腾讯会议App。 优势:用户体验更流畅,避免跳转;适合需要深度定制会议功能的场景(如企业IM集成、垂直行业应用)。 与腾讯会议App的关系: SDK和腾讯会议App是独立的客户端实现,但底层通过相同的腾讯会议服务端协议通信。SDK入会时,会议信令和媒体流直接由SDK处理,不依赖外部App。 功能完整性: SDK支持入会、发言、屏幕共享、聊天等核心功能,但部分高级功能(如虚拟背景)可能需要额外授权或依赖服务端能力。账号体系: 入会时可选择: 游客模式:无需登录,直接输入会议号入会(适合临时用户)。 账号登录:通过腾讯云账号或企业账号认证(适合企业级应用)。 平台兼容性: SDK支持Android 5.0+设备,需注意摄像头、麦克风等硬件权限管理。 腾讯会议Android SDK的入会功能是完全客户端化的解决方案,既不依赖外部App,也不通过云端代理媒体流,适合需要自主控制会议体验的场景。如果需要快速集成且不介意跳转,也可以选择通过URL Scheme唤起腾讯会议App(但功能受限)。...
展开详请
赞
0
收藏
0
评论
0
分享
腾讯会议Android SDK的入会功能支持直接在客户端(App)内完成入会,无需依赖已安装的腾讯会议App,也不是通过云端代理入会。 SDK入会的核心机制 独立客户端入会: 腾讯会议Android SDK提供了完整的会议功能(包括入会、音视频、屏幕共享等),开发者集成后,用户可直接在集成SDK的App内完成入会操作,无需跳转到外部腾讯会议App。 优势:用户体验更流畅,避免跳转;适合需要深度定制会议功能的场景(如企业IM集成、垂直行业应用)。 与腾讯会议App的关系: SDK和腾讯会议App是独立的客户端实现,但底层通过相同的腾讯会议服务端协议通信。SDK入会时,会议信令和媒体流直接由SDK处理,不依赖外部App。 功能完整性: SDK支持入会、发言、屏幕共享、聊天等核心功能,但部分高级功能(如虚拟背景)可能需要额外授权或依赖服务端能力。账号体系: 入会时可选择: 游客模式:无需登录,直接输入会议号入会(适合临时用户)。 账号登录:通过腾讯云账号或企业账号认证(适合企业级应用)。 平台兼容性: SDK支持Android 5.0+设备,需注意摄像头、麦克风等硬件权限管理。 腾讯会议Android SDK的入会功能是完全客户端化的解决方案,既不依赖外部App,也不通过云端代理媒体流,适合需要自主控制会议体验的场景。如果需要快速集成且不介意跳转,也可以选择通过URL Scheme唤起腾讯会议App(但功能受限)。
android的数据库的作用是什么
1
回答
android
、
数据库
gavin1024
Android的数据库主要用于在应用内持久化存储结构化数据,支持离线访问、快速查询和数据管理。其核心作用包括: 1. **本地数据存储**:将用户数据(如设置、缓存、历史记录)保存在设备上,避免依赖网络请求。 2. **高效数据操作**:提供SQL接口,支持增删改查(CRUD)操作,适合结构化数据管理。 3. **应用状态维护**:保存应用运行时的临时或长期数据(如游戏进度、登录状态)。 **举例**: - 笔记类应用用数据库存储用户笔记内容,即使关闭应用也不会丢失。 - 购物类应用缓存商品列表,减少重复网络请求,提升加载速度。 **腾讯云相关产品推荐**: 若需云端数据库扩展(如同步多设备数据),可使用**腾讯云数据库TDSQL**(兼容MySQL/PostgreSQL),或**腾讯云移动数据库**(针对移动端优化的轻量级方案)。...
展开详请
赞
0
收藏
0
评论
0
分享
Android的数据库主要用于在应用内持久化存储结构化数据,支持离线访问、快速查询和数据管理。其核心作用包括: 1. **本地数据存储**:将用户数据(如设置、缓存、历史记录)保存在设备上,避免依赖网络请求。 2. **高效数据操作**:提供SQL接口,支持增删改查(CRUD)操作,适合结构化数据管理。 3. **应用状态维护**:保存应用运行时的临时或长期数据(如游戏进度、登录状态)。 **举例**: - 笔记类应用用数据库存储用户笔记内容,即使关闭应用也不会丢失。 - 购物类应用缓存商品列表,减少重复网络请求,提升加载速度。 **腾讯云相关产品推荐**: 若需云端数据库扩展(如同步多设备数据),可使用**腾讯云数据库TDSQL**(兼容MySQL/PostgreSQL),或**腾讯云移动数据库**(针对移动端优化的轻量级方案)。
android系统使用的数据库是什么软件
1
回答
android
、
数据库
、
软件
、
系统
gavin1024
Android系统默认使用的数据库是SQLite。 解释:SQLite是一款轻量级、嵌入式的关系型数据库管理系统,它不需要独立的服务器进程,直接读写硬盘上的文件,非常适合移动设备等资源受限的环境。SQLite支持标准的SQL语法,具备事务处理、数据完整性约束等功能,且占用资源少、性能高效,因此被Android系统选为内置数据库解决方案。 举例:在Android开发中,当需要存储用户配置、本地缓存数据或小型结构化数据集时,开发者通常会使用SQLite。例如开发一个记账APP,可以用SQLite存储用户的收支记录;或开发天气APP时,用SQLite缓存近期天气数据以减少网络请求。 腾讯云相关产品推荐:虽然Android原生使用SQLite,但若需云端数据库服务,腾讯云提供云数据库SQL Server版、云数据库MySQL版等关系型数据库产品,适合需要云端数据存储和同步的场景。对于移动端开发,腾讯云还提供移动数据库TBase(分布式数据库)及移动开发平台,可配合实现本地与云端数据协同。...
展开详请
赞
0
收藏
0
评论
0
分享
Android系统默认使用的数据库是SQLite。 解释:SQLite是一款轻量级、嵌入式的关系型数据库管理系统,它不需要独立的服务器进程,直接读写硬盘上的文件,非常适合移动设备等资源受限的环境。SQLite支持标准的SQL语法,具备事务处理、数据完整性约束等功能,且占用资源少、性能高效,因此被Android系统选为内置数据库解决方案。 举例:在Android开发中,当需要存储用户配置、本地缓存数据或小型结构化数据集时,开发者通常会使用SQLite。例如开发一个记账APP,可以用SQLite存储用户的收支记录;或开发天气APP时,用SQLite缓存近期天气数据以减少网络请求。 腾讯云相关产品推荐:虽然Android原生使用SQLite,但若需云端数据库服务,腾讯云提供云数据库SQL Server版、云数据库MySQL版等关系型数据库产品,适合需要云端数据存储和同步的场景。对于移动端开发,腾讯云还提供移动数据库TBase(分布式数据库)及移动开发平台,可配合实现本地与云端数据协同。
android有什么数据库文件夹
1
回答
android
、
数据库
gavin1024
Android 中常见的数据库文件夹是 **`/data/data/<package_name>/databases/`**,这是应用私有数据库的默认存储路径。 ### 解释: 1. **`/data/data/`** 是 Android 系统为每个应用分配的私有目录,其他应用无法直接访问。 2. **`<package_name>`** 是应用的包名(如 `com.example.app`)。 3. **`databases/`** 是该应用所有 SQLite 数据库文件的存放位置。 ### 举例: 如果应用包名为 `com.myapp`,其数据库文件通常位于: `/data/data/com.myapp/databases/my_database.db` ### 腾讯云相关产品推荐: 如果需要云端数据库服务,可以使用 **腾讯云数据库 MySQL** 或 **腾讯云数据库 TDSQL**,支持高可用、弹性扩展和数据备份,适合 Android 应用的后端数据存储需求。...
展开详请
赞
0
收藏
0
评论
0
分享
Android 中常见的数据库文件夹是 **`/data/data/<package_name>/databases/`**,这是应用私有数据库的默认存储路径。 ### 解释: 1. **`/data/data/`** 是 Android 系统为每个应用分配的私有目录,其他应用无法直接访问。 2. **`<package_name>`** 是应用的包名(如 `com.example.app`)。 3. **`databases/`** 是该应用所有 SQLite 数据库文件的存放位置。 ### 举例: 如果应用包名为 `com.myapp`,其数据库文件通常位于: `/data/data/com.myapp/databases/my_database.db` ### 腾讯云相关产品推荐: 如果需要云端数据库服务,可以使用 **腾讯云数据库 MySQL** 或 **腾讯云数据库 TDSQL**,支持高可用、弹性扩展和数据备份,适合 Android 应用的后端数据存储需求。
android数据库文件怎么打开
1
回答
android
、
数据库
gavin1024
Android数据库文件通常是SQLite格式,可以使用以下工具打开: 1. **SQLite浏览器**:如DB Browser for SQLite(开源工具),支持查看、编辑和导出数据。 2. **Android Studio的Database Inspector**:在开发时可直接查看应用数据库。 3. **命令行工具**:使用`sqlite3`命令行工具(需安装SQLite)。 4. **第三方App**:如"SQLite Editor"(需Root权限)。 **举例**: 若应用数据库路径为`/data/data/com.example.app/databases/mydb.db`,可通过以下步骤打开: 1. 将文件复制到电脑(需Root或通过ADB导出)。 2. 用DB Browser for SQLite打开`mydb.db`,即可查看表结构和数据。 **腾讯云相关推荐**: 若需云端数据库管理,可使用**腾讯云数据库MySQL**或**TDSQL**,支持可视化工具(如MySQL Workbench)或控制台直接操作,适合迁移或备份Android数据库到云端。...
展开详请
赞
0
收藏
0
评论
0
分享
Android数据库文件通常是SQLite格式,可以使用以下工具打开: 1. **SQLite浏览器**:如DB Browser for SQLite(开源工具),支持查看、编辑和导出数据。 2. **Android Studio的Database Inspector**:在开发时可直接查看应用数据库。 3. **命令行工具**:使用`sqlite3`命令行工具(需安装SQLite)。 4. **第三方App**:如"SQLite Editor"(需Root权限)。 **举例**: 若应用数据库路径为`/data/data/com.example.app/databases/mydb.db`,可通过以下步骤打开: 1. 将文件复制到电脑(需Root或通过ADB导出)。 2. 用DB Browser for SQLite打开`mydb.db`,即可查看表结构和数据。 **腾讯云相关推荐**: 若需云端数据库管理,可使用**腾讯云数据库MySQL**或**TDSQL**,支持可视化工具(如MySQL Workbench)或控制台直接操作,适合迁移或备份Android数据库到云端。
语音合成如何实现跨平台(iOS/Android)兼容?
1
回答
ios
、
android
、
语音合成
、
跨平台
gavin1024
语音合成实现跨平台(iOS/Android)兼容可通过以下方案: 1. **使用统一的后端服务** 将语音合成功能放在服务器端处理,客户端通过API调用。这样无论iOS还是Android,只需发送文本请求,后端返回音频文件或流数据。 *示例*:用户输入文本后,App将文本发送到服务器,服务器调用语音合成引擎生成音频并返回,App播放音频。 2. **跨平台开发框架** 使用Flutter、React Native等框架开发App,这些框架支持多平台代码复用,语音合成逻辑可在共享代码层实现。 *示例*:在Flutter中集成语音合成SDK(如腾讯云的语音合成API),通过平台通道调用原生功能或直接使用HTTP请求。 3. **客户端集成多平台SDK** 分别集成iOS和Android的原生语音合成SDK(如iOS的AVSpeechSynthesizer、Android的TextToSpeech),但保持业务逻辑一致。 *示例*:在App中封装统一的接口,内部根据平台调用对应的SDK,确保用户操作体验一致。 4. **WebRTC或音频流传输** 若需实时合成,可通过WebRTC或自定义音频流协议传输合成结果,客户端负责播放。 *示例*:服务器合成音频后通过WebSocket推送二进制流,iOS和Android分别解码播放。 **腾讯云推荐产品**: - **腾讯云语音合成(TTS)**:提供多语言、多音色的语音合成服务,支持通过HTTP API调用,可直接集成到App后端或客户端(需处理平台差异)。 - **实时音视频(TRTC)**:若需低延迟合成,可结合TRTC传输音频流,兼容多端播放。 *跨平台调用示例*: iOS和Android均通过HTTP请求腾讯云TTS API,传入文本参数,获取音频URL或二进制数据后本地播放。...
展开详请
赞
0
收藏
0
评论
0
分享
语音合成实现跨平台(iOS/Android)兼容可通过以下方案: 1. **使用统一的后端服务** 将语音合成功能放在服务器端处理,客户端通过API调用。这样无论iOS还是Android,只需发送文本请求,后端返回音频文件或流数据。 *示例*:用户输入文本后,App将文本发送到服务器,服务器调用语音合成引擎生成音频并返回,App播放音频。 2. **跨平台开发框架** 使用Flutter、React Native等框架开发App,这些框架支持多平台代码复用,语音合成逻辑可在共享代码层实现。 *示例*:在Flutter中集成语音合成SDK(如腾讯云的语音合成API),通过平台通道调用原生功能或直接使用HTTP请求。 3. **客户端集成多平台SDK** 分别集成iOS和Android的原生语音合成SDK(如iOS的AVSpeechSynthesizer、Android的TextToSpeech),但保持业务逻辑一致。 *示例*:在App中封装统一的接口,内部根据平台调用对应的SDK,确保用户操作体验一致。 4. **WebRTC或音频流传输** 若需实时合成,可通过WebRTC或自定义音频流协议传输合成结果,客户端负责播放。 *示例*:服务器合成音频后通过WebSocket推送二进制流,iOS和Android分别解码播放。 **腾讯云推荐产品**: - **腾讯云语音合成(TTS)**:提供多语言、多音色的语音合成服务,支持通过HTTP API调用,可直接集成到App后端或客户端(需处理平台差异)。 - **实时音视频(TRTC)**:若需低延迟合成,可结合TRTC传输音频流,兼容多端播放。 *跨平台调用示例*: iOS和Android均通过HTTP请求腾讯云TTS API,传入文本参数,获取音频URL或二进制数据后本地播放。
热门
专栏
Technology Share
70 文章
187 订阅
况鹰的专栏
4 文章
13 订阅
张戈的专栏
328 文章
102 订阅
张绍文的专栏
7 文章
24 订阅
领券