title: Serialize android.net.Uri object
body: <p>I want to serialize the state of an object of type android.net.Uri.</p>
  
  <p>Below is my model class with writeObject and readObject methoods</p>
  
  <pre><code>public class ReminderObject implements Serializable {
  private boolean isReminderOn;
  private int fromHours, toHours;
  private int interval;
  private ArrayList&lt;CharSequence&gt; daysToRepeat;
  private Uri toneToPlay;
  private AdvanceSettingsObject adv;
  
  public ReminderObject(boolean isReminderOn, int fromHours, int toHours,
          int interval, ArrayList&lt;CharSequence&gt; daysToRepeat, Uri toneToPlay,
          AdvanceSettingsObject adv) {
      super();
      this.isReminderOn = isReminderOn;
      this.fromHours = fromHours;
      this.toHours = toHours;
      this.interval = interval;
      this.daysToRepeat = daysToRepeat;
      this.toneToPlay = toneToPlay;
      this.adv = adv;
  } 
  /*
  getters and setters
  */
      public void writeObject(ObjectOutputStream op){
      try {
          op.defaultWriteObject();
          op.writeChars(toneToPlay.toString());
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  }
  public void readObject(ObjectInputStream in){
      try{
          in.defaultReadObject();
          toneToPlay = Uri.parse(in.readUTF());
      }catch(Exception e){
  
      }
  }
  
  }
  </code></pre>
  
  <p>Code snippet for MainActivity:</p>
  
  <pre><code>try {
          ObjectOutputStream os = new ObjectOutputStream(new     FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath()+"/ReminderData.txt")    );
          os.writeObject(reminder); // Getting above mentioned Exception here
          Log.i("TAG","reminder serialized");
          ObjectInputStream is = new ObjectInputStream(new FileInputStream(Environment.getExternalStorageDirectory().getAbsolutePath()+"/ReminderData.txt"));
          ReminderObject reminderRead = (ReminderObject) is.readObject();
          if(reminderRead!=null)
              Log.i("TAG", "Deserialized Reminder object is : "+reminderRead.toString());
          else{
              Log.i("TAG", "Null received");
          }
      } catch(ClassNotFoundException cnf){
          cnf.printStackTrace();
      } catch (FileNotFoundException e) {     
          // TODO Auto-generated catch block
          e.printStackTrace();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  </code></pre>
  
  <p>Exception faced :</p>
  
  <p><code>03-31 23:47:59.246: W/System.err(12681): java.io.NotSerializableException: android.net.Uri$HierarchicalUri
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
  03-31 23:47:59.246: W/System.err(12681):    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
  03-31 23:47:59.246: W/System.err(12681):    at com.navkar.navkarreminder.SetReminderActivity.scheduleReminder(SetReminderActivity.java:595)</code></p>
  
  <p>Requesting help.</p>