2014-02-05 2 views
0

Вот как я получаю изображение от андроида камеры:Краш на изображение загрузить

Bitmap photo = (Bitmap) data.getExtras().get("data"); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
byte[] byteArrayImage = stream.toByteArray(); 
File f; 
try 
{ 
    f = File.createTempFile("temp-file-name", ".png"); 
    f.createNewFile(); 
    FileOutputStream fos = new FileOutputStream(f); 
    fos.write(byteArrayImage); 
    fos.close(); 
} 
catch (IOException e) 
{ 
    e.printStackTrace(); 
} 

Тогда я звоню эту функцию с помощью файла я создал:

public String multiPartExecute(String url, String keyOfString, String request, String keyForFile, File file) 
    { 
     HttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost(url); 
     MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create(); 
     multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 
     multipartEntity.addPart(keyForFile, new FileBody(file)); //here is the crash 
     multipartEntity.addTextBody(keyOfString, request); 
     post.setEntity(multipartEntity.build()); 
     HttpResponse response = null; 
     String line = "", output = ""; 

     try 
     { 
      response = client.execute(post); 
      BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent()))); 

      while ((line = br.readLine()) != null) 
      { 
       output += line; 
      } 
     } 
     catch (ClientProtocolException e) 
     { 
      e.printStackTrace(); 
      return null; 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
      return null; 
     } 

     if (response.getStatusLine().getStatusCode() != 200) 
     { 
      response.getStatusLine().getStatusCode(); 
      return null; 
     } 

     HttpEntity entity = response.getEntity(); 
     try 
     { 
      entity.consumeContent(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
      return null; 
     } 

     client.getConnectionManager().shutdown(); 

     return output; 
    } 

У меня есть аварии по этой строке: multipartEntity.addPart(keyForFile, new FileBody(file));.

Here is the log cat output: 
02-05 11:46:40.359: E/WindowManager(9773): Activity com.evapp.activities.NewEventActivity has leaked window [email protected] that was originally added here 
02-05 11:46:40.359: E/WindowManager(9773): android.view.WindowLeaked: Activity com.evapp.activities.NewEventActivity has leaked window [email protected] that was originally added here 
02-05 11:46:40.359: E/WindowManager(9773): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:374) 
02-05 11:46:40.359: E/WindowManager(9773): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292) 
02-05 11:46:40.359: E/WindowManager(9773): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 
02-05 11:46:40.359: E/WindowManager(9773): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 
02-05 11:46:40.359: E/WindowManager(9773): at android.view.Window$LocalWindowManager.addView(Window.java:547) 
02-05 11:46:40.359: E/WindowManager(9773): at android.app.Dialog.show(Dialog.java:277) 
02-05 11:46:40.359: E/WindowManager(9773): at com.evapp.activities.BaseActivity.showLoadingDialog(BaseActivity.java:39) 
02-05 11:46:40.359: E/WindowManager(9773): at com.evapp.activities.NewEventActivity$CreateNewActivityTask.onPreExecute(NewEventActivity.java:470) 
02-05 11:46:40.359: E/WindowManager(9773): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 
02-05 11:46:40.359: E/WindowManager(9773): at android.os.AsyncTask.execute(AsyncTask.java:534) 
02-05 11:46:40.359: E/WindowManager(9773): at com.evapp.activities.NewEventActivity.createEvent(NewEventActivity.java:423) 
02-05 11:46:40.359: E/WindowManager(9773): at com.evapp.activities.NewEventActivity$11.onClick(NewEventActivity.java:277) 
02-05 11:46:40.359: E/WindowManager(9773): at android.view.View.performClick(View.java:4084) 
02-05 11:46:40.359: E/WindowManager(9773): at android.view.View$PerformClick.run(View.java:16966) 
02-05 11:46:40.359: E/WindowManager(9773): at android.os.Handler.handleCallback(Handler.java:615) 
02-05 11:46:40.359: E/WindowManager(9773): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-05 11:46:40.359: E/WindowManager(9773): at android.os.Looper.loop(Looper.java:137) 
02-05 11:46:40.359: E/WindowManager(9773): at android.app.ActivityThread.main(ActivityThread.java:4745) 
02-05 11:46:40.359: E/WindowManager(9773): at java.lang.reflect.Method.invokeNative(Native Method) 
02-05 11:46:40.359: E/WindowManager(9773): at java.lang.reflect.Method.invoke(Method.java:511) 
02-05 11:46:40.359: E/WindowManager(9773): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
02-05 11:46:40.359: E/WindowManager(9773): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
02-05 11:46:40.359: E/WindowManager(9773): at dalvik.system.NativeStart.main(Native Method) 

Что мне не хватает? Невозможно найти какие-либо идеи из логарифма.

Примечания: после закомментировать метод диалога шоу и проблемную линию, я получаю этот след в LogCat:

02-05 12:14:09.591: E/AndroidRuntime(10499): FATAL EXCEPTION: AsyncTask #4 
02-05 12:14:09.591: E/AndroidRuntime(10499): java.lang.RuntimeException: An error occured while executing doInBackground() 
02-05 12:14:09.591: E/AndroidRuntime(10499): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.lang.Thread.run(Thread.java:856) 
02-05 12:14:09.591: E/AndroidRuntime(10499): Caused by: java.lang.NoClassDefFoundError: org.apache.http.entity.ContentType 
02-05 12:14:09.591: E/AndroidRuntime(10499): at org.apache.http.entity.mime.MultipartEntityBuilder.addTextBody(MultipartEntityBuilder.java:126) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at com.evapp.serverlayer.BaseServer.multiPartExecute(BaseServer.java:183) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at com.evapp.serverlayer.AppServer.createNewEvent(AppServer.java:77) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at com.evapp.services.EventService.createNewEvent(EventService.java:14) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at com.evapp.logic.NewEventActivityLogic.createNewEvent(NewEventActivityLogic.java:16) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at com.evapp.activities.NewEventActivity$CreateNewActivityTask.doInBackground(NewEventActivity.java:476) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at com.evapp.activities.NewEventActivity$CreateNewActivityTask.doInBackground(NewEventActivity.java:1) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
02-05 12:14:09.591: E/AndroidRuntime(10499): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
02-05 12:14:09.591: E/AndroidRuntime(10499): ... 5 more 
+0

проверка 'showLoadingDialog' в' BaseActivity' –

ответ

2

Ваша ошибка здесь:

02-05 11:46:40.359: E/WindowManager(9773): at android.app.Dialog.show(Dialog.java:277) 
02-05 11:46:40.359: E/WindowManager(9773): at com.evapp.activities.BaseActivity.showLoadingDialog(BaseActivity.java:39) 
02-05 11:46:40.359: E/WindowManager(9773): at com.evapp.activities.NewEventActivity$CreateNewActivityTask.onPreExecute(NewEventActivity.java:470) 

окна просочилось ошибки в основном потому, что вы пытаетесь показать что-то в деятельности, которая больше не существует. Проверьте этот маршрут.

Поскольку вы используете asyncTask часто необработанный Exceptions, вы можете отключить свою деятельность, открыв диалоговое окно прогресса любого типа, вы получите указанную выше ошибку, поскольку эта активность не существует. Убедитесь, что диалог увольняют или не сделано, когда это происходит

Редактировать

Теперь мы видим вашу реальную ошибку теперь вы комментировали диалог:

Класс, кажется, отсутствует библиотека Apache HttpCore

http://hc.apache.org/downloads.cgi

+0

Ok, но проблема с файлом, который я хочу загрузить. Вероятно, это исключает это исключение, которое убивает мое приложение. – vlio20

+0

Отредактированный ответ для вас – Timmetje

+0

Итак, какого типа содержимого я должен добавить здесь? – vlio20

Смежные вопросы