Reputation: 9295
Here is how I am getting an image from android camera:
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();
}
Then I am calling this function with the file I have created:
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;
}
I have a crash on this line: 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 com.android.internal.policy.impl.PhoneWindow$DecorView@a70e4b40 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 com.android.internal.policy.impl.PhoneWindow$DecorView@a70e4b40 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)
What I am missing? Can't find any ideas from the logcat.
NOTE: after commenting out the dialog show method and the problematic line, I am getting this trace in 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
Upvotes: 0
Views: 682
Reputation: 7694
Your error is here:
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)
Window leaked errors are mostly because you try to show something in a activity that doesn't exist anymore. Check this route.
Because you use a asyncTask
often unhandled Exceptions
cause your activity to shutdown, opening a progress dialog of any kind will cause the above error because this activity does not exists. Make sure the dialog is dismissed or not made when this happens
Edit
Now we see your real error now you commented dialog:
The class seems to be missing the Apache HttpCore library
http://hc.apache.org/downloads.cgi
Upvotes: 2