title: read data from sdcard in android
body: <p>I just wanna display the contents of files from sdcard on emulator (as image files/video files/music files like that).</p>
  
  <p>Below is my code.</p>
  
  <pre><code>public class listfiles extends ListActivity {
   private ArrayList&lt;String&gt; item = null;
   private ArrayList&lt;String&gt; path = null;
   private String root="/";
   private TextView myPath;
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.sub);
          myPath = (TextView)findViewById(R.id.path);
          getDir(root);
      }
  
      private void getDir(String dirPath)
      {
       myPath.setText("Location: " + dirPath);
  
       item = new ArrayList&lt;String&gt;();
       path = new ArrayList&lt;String&gt;();
  
       File f = new File(dirPath);
       File[] files = f.listFiles();
  
       if(!dirPath.equals(root))
       {
  
        item.add(root);
        path.add(root);
  
        item.add("../");
        path.add(f.getParent());
  
       }
  
       for(int i=0; i &lt; files.length; i++)
       {
         File file = files[i];
         path.add(file.getPath());
         if(file.isDirectory())
          item.add(file.getName() + "/");
         else
          item.add(file.getName());
       }
  
       ArrayAdapter&lt;String&gt; fileList =
        new ArrayAdapter&lt;String&gt;(this, R.layout.row, item);
       setListAdapter(fileList);
      }
  
   @Override
   protected void onListItemClick(ListView l, View v, int position, long id) {
  
    File file = new File(path.get(position));
  
    if (file.isDirectory())
    {
     if(file.canRead())
      getDir(path.get(position));
     else
     {
      new AlertDialog.Builder(this)
      .setIcon(R.drawable.icon)
      .setTitle("[" + file.getName() + "] folder can't be read!")
      .setPositiveButton("OK", 
        new DialogInterface.OnClickListener() {
  
         @Override
         public void onClick(DialogInterface dialog, int which) {
          // TODO Auto-generated method stub
         }
        }).show();
     }
    }
    else
    {
     new AlertDialog.Builder(this)
      .setIcon(R.drawable.icon)
      .setTitle("[" + file.getName() + "]")
      .setPositiveButton("OK", 
        new DialogInterface.OnClickListener() {
  
         @Override
         public void onClick(DialogInterface dialog, int which) {
          // TODO Auto-generated method stub
         }
        }).show();
    }
   }
  }
  </code></pre>
  
  <p>In my output I got file path &amp; file name. But when i click the file, it won't show the contents. What should I do for that? Thanks</p>
  
  <p>Finally i got it.My corrected code is shown below..</p>
  
  <pre><code>public class SDCardActivity extends ListActivity {
   private List&lt;String&gt; item = null;
   private List&lt;String&gt; path = null;
   private String root="/sdcard";
   private TextView myPath;
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
         // Intent intent=getIntent();
  
          setContentView(R.layout.sub);
          myPath = (TextView)findViewById(R.id.path);
          getDir(root);
      }
  
      private void getDir(String dirPath)
      {
       myPath.setText("Location: " + dirPath);
  
       item = new ArrayList&lt;String&gt;();
       path = new ArrayList&lt;String&gt;();
  
       File f = new File(dirPath);
       File[] files = f.listFiles();
  
       if(!dirPath.equals(root))
       {
  
        item.add(root);
        path.add(root);
  
        item.add("../");
        path.add(f.getParent());
  
       }
  
       for(int i=0; i &lt; files.length; i++)
       {
         File file = files[i];
         path.add(file.getPath());
         if(file.isDirectory())
          item.add(file.getName() + "/");
         else
          item.add(file.getName());
       }
  
       ArrayAdapter&lt;String&gt; fileList =
        new ArrayAdapter&lt;String&gt;(this, R.layout.row, item);
       setListAdapter(fileList);
      }
  
   @Override
   protected void onListItemClick(ListView l, View v, int position, long id) {
  
    File file = new File(path.get(position));
  
    if (file.isDirectory())
    {
     if(file.canRead())
      getDir(path.get(position));
     else
     {
      new AlertDialog.Builder(this)
      .setIcon(R.drawable.icon)
      .setTitle("[" + file.getName() + "] folder can't be read!")
      .setPositiveButton("OK", 
        new DialogInterface.OnClickListener() {
  
         public void onClick(DialogInterface dialog, int which){
          // TODO Auto-generated method stub
             dialog.dismiss();
         }
        }).show();
     }
    }
    else
    {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        Uri uri = Uri.parse("file://" + file.getPath());
        String fname=file.getName();
        if(fname.endsWith(".jpeg")||fname.endsWith("png")||fname.endsWith(".gif"))
        {
            intent.setDataAndType(uri, "image/*");
            startActivity(intent);
        }
        else if(fname.endsWith(".mp4")||fname.endsWith(".3gp"))
        {
            intent.setDataAndType(uri, "video/*");
            startActivity(intent);
        }
        else if(fname.endsWith(".mp3"))
        {
            intent.setDataAndType(uri, "audio/*");
            startActivity(intent);
        }
        else  
            try {
                EditText tv = (EditText)findViewById(R.id.tn);
                StringBuilder text = new StringBuilder();
  
                  BufferedReader br = new BufferedReader(new FileReader(file));
                  String line;
  
                  while ((line = br.readLine()) != null) {
                      text.append(line);
                      text.append('\n');
  
                      //Set the text
                      tv.setText(text);
  
                  }
              }//try
              catch (IOException e) {
                  //You'll need to add proper error handling here
              }//catch
  
    }
   }
  }
  </code></pre>