我计划开发一个android应用程序,与我操作的服务器进行通信。android, httpurlconnection error的答案说明HttpURLConnectionHttpsURLConnection类需要授予应用程序“完全网络访问”权限(android.permission.INTERNET)。某论坛上有人告诉我,对于绝大多数应用程序来说,android.permission.INTERNET对用户隐私的侵犯是不可接受的,应用程序还有其他方式可以与由其开发人员操作的服务器进行通信,而不需要这样的侵犯权限。从AA>
同样的应用程序也会要求完全的网络访问,即使你查看流量,几乎所有的应用程序都在使用http与他们的服务对话,而且他们没有完全的网络访问的合法需求。但是,它可以让他们看到你所有的网络连接是什么。
[…]
另外,不,您不需要“完全网络访问”来访问Web浏览器之外的任何内容。您只需要它离开端口80http。您仍然可以为远程应用程序API使用子域。您将两种不同的权限合并在一起。
当我要求进一步澄清如何在android中实现这一点,以便在developer.android.com上查找时,得到的答复是“你的无知并不能证明什么”。
那么,一个应用程序应该如何在没有android.permission.INTERNET的情况下与由其开发人员操作的服务器通信呢?或者有可靠的消息来源说这在android中是不可能的?

最佳答案

应用程序与由其开发人员操作的服务器进行通信的其他方式不需要这样的侵入权限
不是真的。
据我所知,从你链接到的咆哮中,咆哮者抱怨Android的权限系统中没有IP或主机级别的白名单。INTERNET允许访问整个互联网。这是对操作系统的有效投诉,但应用程序开发人员对此无能为力。用户可以,只要他们愿意安装防火墙类型的应用程序(伪vpn或真防火墙,后者需要根)。ROM模块可以。谷歌可以。设备制造商可以。应用程序开发人员不能。
我的意思是,理论上,应用程序可以使用蓝牙(有限范围)或NFC(有限范围)与服务器通话,但这些通常被认为是不切实际的。
至于ranter所说的“您不需要”完全网络访问“来访问web浏览器之外的任何内容。你只需要它离开端口80http“,这是相当荒谬的。例如,解析域名需要“离开端口80http”,这肯定会使sansINTERNET权限失败。
我没有一个可以用普通IP地址运行的示例应用程序,因此我现在无法绝对验证访问端口80上的普通IP地址是否可以在没有INTERNET的情况下运行。如果这被证明是真的,那就是安卓系统中需要修复的安全缺陷,如果真是这样的话,我会非常惊讶。
或者有可靠的消息来源说这在android中是不可能的?
我要说的是,除了不涉及localhost权限的INTERNET,android应用程序没有实际的方法与服务器通信。
消息来源是否可靠是一种意见陈述。不过,我会把my track record贴在任意的Slashdot海报上。

10-05 21:31