【问题标题】:Android: Open/read or copy file in local networkAndroid:在本地网络中打开/读取或复制文件
【发布时间】:2015-02-26 12:21:35
【问题描述】:

Android 中的新手,来自 c# world.. 我已经为 android 编写了一个小私人应用程序,并且不能在 Play 商店等上使用...... 该应用程序使用 JTDS 直接连接到本地 SQL Server 以管理来自设备的“输入”,它按预期工作:)

再一次,该应用程序无法通过 Play 商店更新,但现在我想提供一个更新它的功能 [偶尔会 :)] 所以我想在本地网络上验证一个包含可用最新版本的文本文件,并最终将“新”apk 复制到 android \Download 目录... 但我仍然必须找到一种方法来“读取\连接”局域网的共享...... 我看过其他线程,例如 How to use httpget in my app 基本上我的代码遵循How to get file via HttpGet from pc in local network on android

但代码“失败”并显示 404 状态代码... 在 HttpGet(file) 中,我提供了需要读取的文件的 LAN 位置,例如 字符串文件 = "http://192.168.x.xxx/NetworkShare/file2read.txt";

共享位于具有只读权限且无需身份验证的 Windows7 计算机上...它不是 Windows 域,它只是一个工作组,因此应排除权限问题... 我仍在检查模拟器而不是物理设备... manifest 已经包含 Internet 权限、WIFI_STATE、NETWORK_STATE 如果有帮助,我正在使用 Android Studio 1.1.0

任何提示或替代方法?

TIA

asql

【问题讨论】:

  • 我没用过HttpGet。但是,如果我理解正确,您将需要运行一个网络服务器(理解 Http 协议的东西,以“提供”文件并使其在给定的 url 上可用。根据您的需要,您可以尝试这样的事情:cnet.com/how-to/… Good运气!
  • 您好,谢谢您的意见...实际上我不想使用网络服务,而是直接转到Windows共享并执行读取/复制IO操作...其他建议? TIA

标签: java android


【解决方案1】:

您尝试使用 HttpGet 执行的操作不适用于 LAN 位置,因为当您共享目录时,您使用的是 SMB、CIFS 或 NFS 协议,并且无法通过 HTTP 访问这些文件。如果您想使用 HttpGet,您必须通过 HTTP 服务器发布您的文件。

我认为在 Android 中无法以编程方式安装驱动器。使用busybox是可能的,但也许你需要root。

做你想做的最好的方法是从网络服务获取信息,或者从 ftp 服务器下载你的文件。

【讨论】:

  • 您关于 http 与网络文件系统协议之间区别的一般观点非常重要且正确。你是对的,你不能从非特权的 3rd 方代码中安装网络文件系统。但是,可以在不挂载网络文件服务器的情况下从网络文件服务器获取数据 - 实际上,您构建代码以实现对应用程序的访问,并以某种内部格式收集数据,而不是试图使其显示为文件您可以使用文件 api 打开它。当然,一旦您在内部获得了数据,您就可以将本地副本写成文件。
  • 您好,感谢您的意见。我知道 http & ftp 会遇到麻烦,因为我没有连接到“服务器”查看 jcifs,但找不到有价值的文档我确实得到 jcifs.smb.SmbException: 0xC000009A 试图提供像 NtlmPasswordAuthentication auth 这样的身份验证信息= new NtlmPasswordAuthentication(null, "user", "pwd");但后来我得到 jcifs smbfile 纯文本密码被禁用并添加 jcifs.Config.setProperty("smb.client.disablePlainTextPasswords", "false");对连接到 Windows 工作组中的 Win7 共享没有任何其他建议/示例?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
相关资源
最近更新 更多