Сервер Nanohttpd в Android

я разрабатываю приложение для Android, которое использует nanohttpd для создания веб-сервера, и когда я запускаю его, он говорит, что активность остановлена, это мой код, пожалуйста, помогите мне, любая помощь будет оценена. вот код:

  package dolphin.developers.com;


import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

import android.content.Context;
import android.os.Environment;


public class MyHTTPD extends NanoHTTPD{

private Context ctx;


public MyHTTPD(Context ctx) throws IOException {
super(8080);
   this.ctx = ctx; 
}


@Override
public Response serve( String uri, Method method,

        Map<String, String> header, Map<String, String> parms,
       Map<String, String> files )
       {
        String html = null;
        InputStream is = null;
        try {
            is = ctx.getAssets().open(Environment.getExternalStorageDirectory()+"/index.htm");
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        byte[] b;
        try {
            b = new byte[is.available()];
            is.read(b);
            html = new String(b);
        } catch (IOException e) { // TODO Auto-generated catch block
            e.printStackTrace();
        }
           return new NanoHTTPD.Response(html);
       }
}

Логкат:

07-17 12:06:22.538: E/AndroidRuntime(1137): FATAL EXCEPTION: main
07-17 12:06:22.538: E/AndroidRuntime(1137): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{dolphin.devlopers.com/dolphin.developers.com.MyHTTPD}: java.lang.ClassCastException: dolphin.developers.com.MyHTTPD cannot be cast to android.app.Activity
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.os.Looper.loop(Looper.java:137)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.app.ActivityThread.main(ActivityThread.java:5039)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at java.lang.reflect.Method.invokeNative(Native Method)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at java.lang.reflect.Method.invoke(Method.java:511)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at dalvik.system.NativeStart.main(Native Method)
07-17 12:06:22.538: E/AndroidRuntime(1137): Caused by: java.lang.ClassCastException: dolphin.developers.com.MyHTTPD cannot be cast to android.app.Activity
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
07-17 12:06:22.538: E/AndroidRuntime(1137):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
07-17 12:06:22.538: E/AndroidRuntime(1137):     ... 11 more

person Prakhar    schedule 17.07.2013    source источник
comment
у вас есть MyHTTPD, объявленный в файле манифеста?   -  person mromer    schedule 17.07.2013
comment
да, я объявил оба класса this и NanoHTTPD   -  person Prakhar    schedule 17.07.2013


Ответы (2)


Вы можете объявлять только классы, которые расширяют «Активность» Android в манифесте как действия. Попробуйте создать его и в жизненном цикле Activity (onCreate/onDestroy или onStart/onStop) попробуйте запустить и остановить сервер NanoHttpd.

person Paul Hawke    schedule 31.07.2013

MyHTTPD не является действием, поэтому вы не можете добавить его в файл манифеста.

Вот пример:

https://gist.github.com/komamitsu/1893396

в этом примере вам нужно только добавить в манифест активность AndroidWebServerActivity

person mromer    schedule 17.07.2013