Android 浏览器无法连接到本地 nanohttpd 服务

Android browser can't connect to local nanohttpd service

我正在使用 WakefulBroadcastReceiver 方法将服务创建为 root 用于某些测试目的(请注意,我刚刚使用 Activity 启动服务器进行了测试,发生了同样的事情):

MyService.java

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(TAG, "Server starting");

    // Create the server
    server = new WebServer(6666);
    new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                server.start();
            } catch (IOException e) {
                Log.d(TAG, e.getMessage());
            }
        }
    }).start();
    ...
    return START_STICKY;
}

WebServer.java :

public class WebServer extends NanoHTTPD {
  @Override
  public Response serve(IHTTPSession session) {
    Log.d(TAG, "Serving");

    return new NanoHTTPD.Response("<html><body>test</body></html>");
}

push 使用 adb /system/app 中的 APK,因此无需先使用 activity 即可调用该服务。然后重启shell.

我可以看到等待连接的服务器日志,然后:

我使用 API18 和默认的 Nexus7 AVD(也尝试使用 Genymotion 和三星平板电脑)但没有任何效果。网络设置中没有配置代理。

我不明白为什么浏览器(在设备上)没有到达我在 127.0.0.1 上的 6666 端口(也在设备上)

这是清单:

<application android:allowBackup="true" android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme">

        <service android:name=".MyService" android:label="Tool" android:enabled="true"/>

        <receiver android:name=".receiver.BootCompleteReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
    </application>

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我 运行 疯了,终于有人给我发了这个 link : https://superuser.com/questions/188058/which-ports-are-considered-unsafe-on-chrome

端口6666被认为是不安全的...我希望它能写在页面上而不是无法到达服务器。