从Android 11开始,具有以太网和WiFi硬件的设备可以提供以太网连接,即设备可以通过WiFi与插入以太网的设备共享互联网连接.

而且效果相当不错. 以太网上的所有设备都可以通过WiFi访问互联网.

然而,如果你在Android上开发Kiosk应用程序,并且你有需要通过以太网与之通信的专用设备,但你也需要互联网接入,你必须要求用户启用以太网连接才能访问这些专用设备.

这会给最终用户带来困惑.

为了解决这个问题,我希望应用程序以编程方式启用以太网连接,这样我们就不必乞求和纠缠用户来做到这一点.

但是,不幸的是,对于我的场景,Android没有提供这样一种方法,除非该应用是一个"系统"应用,因为这是唯一一种可以获得执行此操作所需的适当权限的apply.

所以...我需要建立一个系统应用程序提供给我们的供应商.

多么?有没有什么地方我可以比较容易地集中起来:

  • 一个开发本系统应用程序的环境
  • 测试此系统应用程序的方法(虚拟设备就可以了)

到目前为止,我读到的所有东西都让人感觉必须成为一名成熟的嵌入式Android开发人员,虽然这会很有趣,但对于我试图在这里做的事情来说,似乎有点过头了.

推荐答案

你真走运!这并不像你可能担心的那样复杂.

就应用程序本身而言,源代码及其构建和测试方式可以完全相同.您可以在Android Studio中编写、编译和测试您的应用,如果您习惯使用该IDE,则同样如此.

但你也没必要这么做.传统上,系统和平台应用程序是使用.mk构建文件和忍者开发的.但那是另一回事了.预构建的APK(和AAR、JAR)文件也可以预装在系统中.

应用程序能做什么的主要区别在于你可能想要授予应用程序的权限,以及在安装时或运行时授予的权限,或者不授予.是否会发生这种情况有两种方式:如何对其进行签名(即使用平台密钥),或将其安装到供应商系统的系统文件系统中(例如/system/priv-app).

从你的问题看,你可能想要授予android.permission.TETHER_PRIVILEGED权限,我猜是为系统应用程序保留的.

若要测试您的应用程序,您需要访问供应商的平台密钥.在安装之前,您必须使用该密钥对应用程序进行签名(并对齐).然后像往常一样通过ADB安装这款应用程序.当你的应用程序准备好后,供应商可以考虑将其放在系统的正确位置,作为官方形象的一部分.

Android相关问答推荐

Android使用参数编写齐射后请求

未解析的引用:背景 colored颜色

为什么使用. DeliverveAsState()时会出现空指针异常?

广播接收者意图从服务内设置,而不被其他服务接收

处理Room数据库中的嵌套实体

无法将Kotlin序列化添加到Android项目

Android App Google AdMob";广告加载失败:3;带有测试ID,&q;广告加载失败:1 for My Gahad

如何从sqlite数据库中检索数据到碎片android?

页面更改时不显示 cogo toast 消息

将输出写入已发布的 Android 应用程序中的日志(log)文件?

如何从 firebase 实时数据库中检索最后一个值

为什么@PrimaryKey val id: Int? = null 在创建 Room 实体时有效吗?

try 使用 ViewPager2 实现滑动视图时出现类型不匹配错误

您如何衡量条形图的 4 个类别?

喷气背包组成影子奇怪的行为

Android Studio:如何添加应用程序质量洞察窗口以查看 Android Studio 中的 Crashlytics 数据?

Android - 水平(从右到左)圆形背景 colored颜色 过渡

WearOS - 有没有办法从心电图传感器收集原始数据?

Android Java Keystore 在另一台机器上损坏

在使用 Retrofit 和 Room 时,我是否需要提及协程调度程序?