Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy am I receiving a "thread exiting with uncaught exception”?
    text
    copied!<p>I'm using Parse.com for push notifications. When I receive a push notification, this class executes:</p> <pre><code>public class MyCustomReceiver extends BroadcastReceiver { protected ObjetoMensaje DatosObjecto; protected SerializacionDeDatos Sdd; protected String alert, fecha, name, tipo; private static final String TAG = "MyCustomReceiver"; @Override public void onReceive(Context context, Intent intent) { try { DatosObjecto = new ObjetoMensaje(); Sdd = new SerializacionDeDatos(); String action = intent.getAction(); String channel = intent.getExtras().getString("com.parse.Channel"); JSONObject json = new JSONObject(intent.getExtras().getString("com.parse.Data")); Log.d(TAG, "got action " + action + " on channel " + channel + " with:"); Iterator&lt;?&gt; itr = json.keys(); Log.i("",""); while (itr.hasNext()) { String key = (String) itr.next(); Log.d(TAG, "..." + key + " =&gt; " + json.getString(key)); Log.d(TAG,""); } alert = json.getString("alert").toString(); name = json.getString("name").toString(); tipo = json.getString("tipo").toString(); DatosObjecto.setAlert(alert); DatosObjecto.setName(name); DatosObjecto.setTipo(tipo); Sdd.Serializa(DatosObjecto); //this line, I use for call the class "SerializacionDeDatos" } catch (JSONException e) { Log.d(TAG, "JSONException: " + e.getMessage()); } } } </code></pre> <p>These lines:</p> <pre><code> alert = json.getString("alert").toString(); name = json.getString("name").toString(); tipo = json.getString("tipo").toString(); DatosObjecto.setAlert(alert); DatosObjecto.setName(name); DatosObjecto.setTipo(tipo); </code></pre> <p>When I receive the push, I'm extracting the values of "alert", "name" and "tipo". I put them in an ObjetoMensaje Object. Code:</p> <pre><code>public class ObjetoMensaje extends Activity implements Serializable{ private static final long serialVersionUID = 5680898935329497057L; private String alert, name, tipo; protected String filename = "datos.dat"; public ObjetoMensaje(){}; public ObjetoMensaje(String alert, String name, String tipo){ super(); this.alert = alert; this.name = name; this.tipo = tipo; } public String getAlert(){ return alert; } public void setAlert(String alert){ this.alert = alert; Log.i("Set Alert", "Excitoso"); } public String getName(){ return name; } public void setName(String name){ this.name = name; Log.i("Set Name", "Excitoso"); } public String getTipo(){ return tipo; } public void setTipo(String tipo){ this.tipo = tipo; Log.i("Set tipo", "Excitoso"); } } </code></pre> <p>I want to serialize the values "alert", "name", and "tipo", so I've created a class for serialization:</p> <pre><code>public class SerializacionDeDatos extends Activity{ protected String filename = "datos.dat"; protected void Serializa(ObjetoMensaje DatosObjecto){ FileOutputStream fos; try { fos = openFileOutput(filename, Context.MODE_PRIVATE); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(DatosObjecto); oos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } </code></pre> <p>When I call the class, I get this error:</p> <pre><code>08-08 13:15:32.976: W/dalvikvm(8360): threadid=1: thread exiting with uncaught exception (group=0x4001c578) 08-08 13:15:33.070: E/AndroidRuntime(8360): FATAL EXCEPTION: main 08-08 13:15:33.070: E/AndroidRuntime(8360): java.lang.RuntimeException: Unable to start receiver mx.nivel9.apps.MyCustomReceiver: java.lang.NullPointerException 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1809) 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.app.ActivityThread.access$2400(ActivityThread.java:117) 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985) 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.os.Handler.dispatchMessage(Handler.java:99) 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.os.Looper.loop(Looper.java:130) 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.app.ActivityThread.main(ActivityThread.java:3687) 08-08 13:15:33.070: E/AndroidRuntime(8360): at java.lang.reflect.Method.invokeNative(Native Method) 08-08 13:15:33.070: E/AndroidRuntime(8360): at java.lang.reflect.Method.invoke(Method.java:507) 08-08 13:15:33.070: E/AndroidRuntime(8360): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 08-08 13:15:33.070: E/AndroidRuntime(8360): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 08-08 13:15:33.070: E/AndroidRuntime(8360): at dalvik.system.NativeStart.main(Native Method) 08-08 13:15:33.070: E/AndroidRuntime(8360): Caused by: java.lang.NullPointerException 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158) 08-08 13:15:33.070: E/AndroidRuntime(8360): at mx.nivel9.apps.SerializacionDeDatos.Serializa(SerializacionDeDatos.java:23) 08-08 13:15:33.070: E/AndroidRuntime(8360): at mx.nivel9.apps.MyCustomReceiver.onReceive(MyCustomReceiver.java:50) 08-08 13:15:33.070: E/AndroidRuntime(8360): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1798) 08-08 13:15:33.070: E/AndroidRuntime(8360): ... 10 more </code></pre> <p>What am I doing wrong?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload