在应用程序中使用多个网络接口

2024-01-31

我编写了一个应用程序,通过 wifi 触发索尼 qx 智能手机可连接相机。但是,我需要通过另一个本地网络实时传输手机上的图像。由于 wifi 卡用于 qx 连接,我需要能够通过 USB 使用以太网从手机传输图像。 HTTP 请求将用于触发相机并将图像从手机发送出去。

是否可以在具有两个网络接口设置的手机上的一个 Android 应用程序中指定某些 http 请求使用一个网络接口,而其他请求则使用另一个网络接口?这是否需要通过路由表而不是java来完成?

我使用的手机是 root 后的 Nexus 6p。

Update:

目前,我可以获得与该设备 (Nexus 6P) 配合使用的以太网适配器。该设备通过以太网连接到本地网络。当 Wi-Fi 接口关闭时,我可以 ping 设备通过以太网连接到的本地网络上的所有设备。但是,我无法访问该网络上任何设备(我知道它们正在运行)的 Web 服务器(不使用 DNS),即通过浏览器应用程序访问 Http。 Nexus 6p 通过 Ubiquiti Station 通过以太网连接到网络。这似乎是一个路由问题。

我可以在一个应用程序中连接(USB 接口)并使用 Wi-Fi,这让我相信可以使用以太网和 Wi-Fi。

Update2:

经过多次测试,似乎是权限问题。因为当我 ping 网络时,设备已通过以太网连接到,而无需先运行su在终端中网络不存在。然而,当我跑步时su然后ping一下,就可以ping通网络了。因此,我的应用程序似乎需要在访问以太网之前获得超级用户许可。我已授予它超级用户访问权限,但没有任何改变。我读到只是运行su这篇评论中的一条还不够post https://stackoverflow.com/questions/7295873/how-do-i-request-root-access-in-android。这是因为su只是产生一个死亡的根壳。这也解释了为什么我无法通过浏览器应用程序访问该网络上的任何 Web 服务器。在进行 HTTP 调用(例如 Give)时,是否可以授予我的应用程序对以太网接口的访问权限HttpURLConnectionroot 访问权限,如果有任何意义的话(运行su不起作用)?似乎肯定有一个解决方案,因为 HttpURLConnection 可以通过 USB 网络共享接口进行调用(Nexus 6P 将其称为rndis0) fine.

Update 3:

我在网上找到的here http://www.addictivetips.com/mobile/how-to-install-any-app-as-system-app-on-android/,我可以使我的应用程序成为系统应用程序(认为这可能会授予应用程序 eth0 访问权限)。我刚刚将我的应用程序移至/system/app然后重新启动。然而,这似乎并没有给应用程序更多的特权(因此没有解决问题),或者需要做一些其他的事情来制作应用程序系统,而不仅仅是将其复制到/system/app.

Update 4:

因此,我无需 root 权限即可在每个应用程序上使用以太网!它似乎只能通过 DHCP 工作,不喜欢我正在使用的静态连接。它可以在启用 Wi-Fi 的情况下工作,但是,当启用以太网时,我无法联系 Wi-Fi 网络上的任何设备。有没有解决的办法?这与设置两个默认网关有关吗?


由于您是在 Nexus 6P 中编程,因此您可以尝试使用中添加的新 APIConnectivityManager选择以太网作为您的流程的首选网络连接。

由于我无法构建像你这样的类似环境,所以我不确定它是否有效。这只是一个建议的解决方案,完全未经测试和验证。

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
Network etherNetwork = null;
for (Network network : connectivityManager.getAllNetworks()) {
    NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
    if (networkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
        etherNetwork = network;
    }
}
Network boundNetwork = connectivityManager.getBoundNetworkForProcess();
if (boundNetwork != null) {
    NetworkInfo boundNetworkInfo = connectivityManager.getNetworkInfo(boundNetwork);
    if (boundNetworkInfo.getType() != ConnectivityManager.TYPE_ETHERNET) {
        if (etherNetwork != null) {
            connectivityManager.bindProcessToNetwork(etherNetwork);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在应用程序中使用多个网络接口 的相关文章

  • Android - 如何创建可点击的列表视图?

    我想让列表视图中的所有列表项打开到一个新页面 因此每个列表视图项目都打开到一个我可以使用的新黑色页面 我根本不知道如何实现这个 我已经连续搜索了几个小时 但找不到解决方案的答案 如果有人能够展示和 或解释如何执行此操作而不是提供链接 我们将
  • Android:如何测试自定义视图?

    Android 中有多种单元测试方法 测试我编写的自定义视图的最佳方法是什么 我目前正在将其作为仪器测试用例活动的一部分进行测试 但我宁愿只测试孤立的视图 对于缺乏以视图为中心的测试用例实现的一个简单解决方案是在包含视图的测试项目中创建一个
  • 在 Android 中存储照片相关数据的最佳方式是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要为我的应用程序存储一些照片相关信息 据我所知 您可以向图像内容提供商读取 写入 GPS 位置和图像描述 我还需要添加用于云同步的字段 标志
  • 进入沉浸式全屏模式时状态栏为白色

    我根据以下内容做了一个关于沉浸式全屏模式的简单项目使用沉浸式全屏模式 https developer android com training system ui immersive html But first of all it per
  • 有人知道如何在android中实现像Unfold(这是iphone中的应用程序)这样的效果吗?

    我怎样才能实现这个效果呢 任何建议都会对我有帮助 None
  • 无法解析符号“AuthUI”

    我正在添加 firebase google 和 Gmail 登录 但是当我粘贴代码时 onAuthStateChanged NonNull FirebaseAuth firebaseAuth 方法我收到此错误 无法解析符号 AuthUI 在
  • 如何刷新 Android 上的 MediaStore?

    这最初是 Android 论坛上的一个一般用户问题 然而 它必然成为一个编程问题 这是我的问题 Android 有一个服务 MediaScanner 每当 我相信 SD 卡卸载和重新安装时它都会在后台运行 该服务收集卡上所有媒体文件的数据
  • Android 和 Facebook 共享意图

    我正在开发一个 Android 应用程序 并且有兴趣了解如何使用 Android 的共享意图在应用程序内更新应用程序用户的状态 浏览过 Facebook 的 SDK 后 这似乎很容易做到 但是我很想允许用户通过常规的共享意图弹出窗口来做到这
  • Android 4.4 (kitkat) 版本中的短信阻止和允许问题

    我们在 Google Play 上推出了短信拦截应用程序 如果满足任何阻止条件 它就会阻止短信 否则我们允许短信发送到本机收件箱 它在除 android 4 4 Kitkat 之外的所有版本上都运行良好 我们尝试实现适用于 4 4 的新短信
  • GPSTracker 类不工作

    我尝试在我的应用程序中使用我在网上找到的 GPSTracker 类 并且我之前让它工作过 但现在似乎莫名其妙地不起作用 public class GPSTracker extends Service implements LocationL
  • 如何在手机解锁时显示消息

    我想制作一个应用程序 当用户解锁他 她的 Android 手机时会显示一条消息 我不知道这是否可能 如果有人有办法做到这一点 请您指出正确的方向 Only android intent action USER PRESENT action
  • getExternalCacheDir() 在 Android 上如何工作?

    据我了解 我们将经常访问的对象缓存在比普通磁盘读取更容易访问的内存段中 getExternalCacheDir 相对于getCacheDir 指向外部文件系统 在我看来这是正常的getExternalFilesDir Android 如何优
  • DP5 7.0 - 向待处理意图添加额外内容是否会失败?

    在跟踪器上添加链接的问题 因此 我今天在我的 Nexus 5X 上安装了 DP5 Android 7 0 版本 我一直在开发一个应用程序 它使用 Android 的 AlarmManager 类在特定时间安排本地通知 在此版本之前 代码在运
  • 使用 KitKat 存储访问框架后打开 Google Drive 文件内容 URI

    我正在使用 android 4 4 的存储访问框架并打开文件选择器 一切正常 除了从 Google Drive 选择文件时 我只能弄清楚如何将其作为输入流打开 但我想获得一个 java File 对象 返回的内容 uri 如下所示 cont
  • 三星 Galaxy Note 上的布局

    我有一个奇怪的问题 只出现在 Samsung Galaxy Note 上 我有横向和纵向布局 正常和大 如下 http developer android com guide practices screens support html h
  • org.apache.http 软件包在 API 级别 23 中被删除。替代方案是什么?

    在更新到最新的 android API 级别 23 Marshmallow 后 通过 build gradle 添加以下更改后 所有 org apache http 类都不起作用 android compileSdkVersion 23 b
  • 具有 jsonObject 的 android 列表视图

    我正在开展一项活动 该活动请求服务器上的一个 php 文件 此 php 文件将返回给我一个JSONArray having JSONObjects作为它的元素 我明白了jArray并提取其内容 例如所有jsonObjects 每个 json
  • React Native - 方向锁定;我还能获得传感器的方向吗?

    我正在开发一个 React Native 应用程序 该应用程序设计为以纵向模式运行 方向通过清单锁定
  • SDK管理器不显示示例包选项

    我关注的是安卓安装示例的开发人员链接 http developer android com tools samples index html包裹 但是 当我展开Android平台的包列表时 没有 SDK示例 选项 复选框 可用 为什么 我已
  • 如何使用 androidX 不破坏片段

    现在 我尝试 androidX 导航和底部导航栏 当我像下面一样使用它时 supportFragmentManager getSupportFragmentManager navHostFragment NavHostFragment su

随机推荐

  • 将 SSIS 连接到 PostgreSQL 时出现问题(通过 OLEDB)

    我正在开发一个项目 我必须为数据迁移创建 SSIS 包 我使用 PostgreSQL 进行数据库连接 最初 我使用 ODBC 驱动程序将 SSIS 项目连接到 PostgreSQL 后来 我发现 ODBC 不支持在发生任何故障时回滚以前的事
  • 为什么ProgressDialog的背景没有设置为透明?

    我想将背景设置为透明 所以我在中设置了以下代码 styles xml
  • 避免“缓冲区溢出”C6386 警告

    在我的代码中 我使用数组xyz共 10 个对象 当我尝试使用 unsigned int 索引访问数组的元素时 如下所示 xyz level I get 缓冲区溢出 http msdn microsoft com en us library
  • 将所有函数折叠到 R-Studio 脚本中

    基本上我已经在一个 R 脚本中编写了相当多的函数 为了创建更好的概述并且不必滚动太多 我通常按函数定义左侧的箭头 将其折叠 对于 30 多个函数来说 这可能非常烦人 因为当我运行它们时 它们会不断 展开 我所说的折叠的意思可以在这张照片中看
  • code::blocks 是否保留除 C++ 关键字之外的名称?

    我是 code blocks 的新手 而且在 C 方面也没有经验 我知道有很多关键字 我不应该将它们用于变量名称 并且它们通常以不同的颜色显示 就像在 Visualstudio 中一样 现在 当我将一些代码片段从旧的 vs 项目复制到新的
  • Azure - 无法连接到 RDP

    我必须更改管理员密码 因为它已通过 RDP 过期 更改后服务器工作正常 后来我断开了会话 然后再次启动它 现在我们收到以下错误消息 发生身份验证错误 无法联系当地安全机构 远程计算机 cloudapp net 即使两台服务器重新启动后 同样
  • 实际安装模块时 pip install 期间出现 ModuleNotFoundError

    我尝试使用安装 python 包 BentoML pip install bentoml 我收到以下错误 该错误给出了ModuleNotFoundError No module named wrapt 但是 那wrapt模块实际上包含在我的
  • 使用 Powershell 将文件检入 TFS

    作为持续集成构建的一部分 我正在创建一个 SQL 脚本 该 SQL 脚本生成后必须重新签入 TFS 我在 Powershell 中使用 TFS Powertools 我在我的机器上使用的代码是 Add TfsPendingChange Ad
  • iOS 7 UIWebView 304 缓存错误,空白页

    我在具有 UIWebView 的应用程序中发现了一个问题 iOS 7 缓存了空白正文 304 响应 导致用户刷新 UIWebView 时显示空白页面 这不是良好的用户体验 我正在尝试找出如何在 iOS 端解决此问题 因为我无法控制 Amaz
  • unmodifierList 线程安全吗?

    我有一个字符串 tagList 列表 需要在多个线程之间共享以供读取 因此我创建了它的不可修改版本并将其传递给线程 我不确定它是否是线程安全的 因为线程只读取该列表 所以我猜应该可以吧 另外 当我将不可修改的列表传递给线程时 它是传递单个副
  • 将自纪元以来的时间戳转换为 datetime.datetime

    自纪元以来我有以下时间戳 Timestamp 1346114717972 1354087827000 如何将这些时间戳转换为某种特定的输出格式 例如mm dd yyyy hr min sec 我尝试将它们转换为datetime dateti
  • 如何为 RabbitMQ 连接设置自定义名称?

    能够通过连接名称识别 RabbitMQ 客户端将非常有用 我正在使用 Spring Cloud Streams 抽象 并且使用默认设置我得到类似的东西 如何在 Spring Boot 客户端中设置自定义 RabbitMQ 连接名称 EDIT
  • Gridview 中的 TimeSpan DataFormatString

    我有一个带有来自 linq 查询的 ObjectDataSource 的 gridview 源的变量之一是时间跨度 我将绑定字段与 DataField MyTimeSpanVariable 绑定 数据包含以秒和分钟为单位的时间 很少以小时为
  • EF5 收到此错误消息:无法检查模型兼容性,因为数据库不包含模型元数据

    每次运行该应用程序时 都会显示此错误消息 我正在使用实体Framework 5 Code First 这是错误消息 System NotSupportedException Model compatibility cannot be che
  • 分布式 Elixir 示例不起作用

    我有一个非常简单的 Elixir 代码示例 我想在不同的节点上运行 第一个节点位于我的笔记本电脑上 第二个节点是 Raspberry Pi 通过 SSH 访问 代码很简单 node1 my computer defmodule Hello
  • Visual Studio 和 SQL Server - 安装顺序正确吗?

    我正在重建我的开发机器 这个问题对我来说并不新鲜 但我不记得解决方案 我从 SQL 2008 Developer 开始 然后是 VS 2008 Pro SQL SP1 VS SP1 结果是我无法打开SSIS项目 参见下面的错误 正确的顺序是
  • 监听 Flutter 中的 API 变化

    假设我有一个 API 它提供一个返回 id 和名称的 JSON 响应 在移动应用程序中 通常我会发出一个 http GET 响应 以便在与服务器的一次性连接中获取此数据 并在应用程序中显示结果 但是 如果数据随着时间的推移而变化 并且我想在
  • 如何在asp.net中显示Page_Load函数中设置的变量值

    我有一个从数据库获取的变量 我想在 html 之间的 aspx 页面中输出该变量 我试图将其公开 但它显示一些错误 如何在其 aspx 页面中使用页面加载函数中设置的变量 第一种方式 您将 Literal 控件放置在要显示变量的位置 然后在
  • 带有选项的简单选择标签在 Chrome 上不起作用

    我遇到了这个问题 我无法在我的 chrome 上扩展这个简单的选择标签
  • 在应用程序中使用多个网络接口

    我编写了一个应用程序 通过 wifi 触发索尼 qx 智能手机可连接相机 但是 我需要通过另一个本地网络实时传输手机上的图像 由于 wifi 卡用于 qx 连接 我需要能够通过 USB 使用以太网从手机传输图像 HTTP 请求将用于触发相机