我正在使用NanoHttpd在设备上创建WebServer(我可能只想将其用于我的应用程序或允许其他应用程序使用它)。
但是我必须提供INTERNET权限。
我已经创建了一个执行此操作的应用程序,并且只有在清单中提供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)
我不想提供Internet权限,因为我想向用户保证我的应用程序提供的隐私。
我只想访问http://127.0.0.1:<port>
。有可能吗?
答案 0 :(得分:1)
否,您需要INTERNET权限才能使用网络套接字,无论是用于服务器还是客户端,甚至用于本地主机。由于这是普通权限,因此您无需要求它,并且用户也不能拒绝它。
如果服务器是可选功能,则可以在与您的应用程序共享sharedUserId
属性的另一个APK中声明许可,以便只有对此功能感兴趣的用户才能安装第二个(空)APK