是否可以在不使用 android.permission.INTERNET 的情况下监听 ServerSocket?
Is it possible to listen on ServerSocket without using android.permission.INTERNET?
我正在使用 NanoHttpd 在设备上创建 WebServer(我可能只想将它用于我的应用程序或允许其他应用程序使用它)。
但我必须提供互联网许可。
我已经创建了一个执行此操作的应用程序,只有当我在清单中提供 android.permission.INTERNET
时它才能工作。
我的代码确实有效,但是当我不提供 INTERNET 权限时,我在 logcat:
中遇到异常
Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
at java.net.ServerSocket.createImpl(ServerSocket.java:308)
at java.net.ServerSocket.getImpl(ServerSocket.java:258)
at java.net.ServerSocket.setReuseAddress(ServerSocket.java:716)
at fi.iki.elonen.NanoHTTPD.start(NanoHTTPD.java:2319)
at cc.siara.android.NanoHttpServer.<init>(NanoHttpServer.kt:16)
at cc.siara.android.App.onCreate(App.kt:23)
我不想提供互联网许可,因为我想向用户保证我的应用程序提供的隐私。
我只想访问 http://127.0.0.1:<port>
。可能吗?
不,您需要 INTERNET 权限才能使用网络套接字,无论是对于服务器还是客户端,甚至对于本地主机。因为这是一个正常的权限,你不需要请求它,用户也不能拒绝它。
如果服务器是一项可选功能,您可以在另一个与您的应用程序共享 sharedUserId
属性的 APK 中声明权限,这样只有对此功能感兴趣的用户才会安装第二个(空)APK
我正在使用 NanoHttpd 在设备上创建 WebServer(我可能只想将它用于我的应用程序或允许其他应用程序使用它)。
但我必须提供互联网许可。
我已经创建了一个执行此操作的应用程序,只有当我在清单中提供 android.permission.INTERNET
时它才能工作。
我的代码确实有效,但是当我不提供 INTERNET 权限时,我在 logcat:
中遇到异常 Caused by: java.net.SocketException: socket failed: EACCES (Permission denied)
at java.net.ServerSocket.createImpl(ServerSocket.java:308)
at java.net.ServerSocket.getImpl(ServerSocket.java:258)
at java.net.ServerSocket.setReuseAddress(ServerSocket.java:716)
at fi.iki.elonen.NanoHTTPD.start(NanoHTTPD.java:2319)
at cc.siara.android.NanoHttpServer.<init>(NanoHttpServer.kt:16)
at cc.siara.android.App.onCreate(App.kt:23)
我不想提供互联网许可,因为我想向用户保证我的应用程序提供的隐私。
我只想访问 http://127.0.0.1:<port>
。可能吗?
不,您需要 INTERNET 权限才能使用网络套接字,无论是对于服务器还是客户端,甚至对于本地主机。因为这是一个正常的权限,你不需要请求它,用户也不能拒绝它。
如果服务器是一项可选功能,您可以在另一个与您的应用程序共享 sharedUserId
属性的 APK 中声明权限,这样只有对此功能感兴趣的用户才会安装第二个(空)APK