Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<pre><code>import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Vector; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import com.androidpeople.tab.FindFilesByType.DownloadFileAsync; import android.app.Activity; import android.app.AlertDialog; import android.app.ExpandableListActivity; import android.app.ProgressDialog; import android.content.Context; import android.content.res.Resources; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.KeyEvent; import android.widget.ArrayAdapter; import android.widget.ExpandableListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import android.widget.ExpandableListView.OnGroupExpandListener; public class SongList extends ExpandableListActivity { private RingtoneAdapter expListAdapter; public static SongList self; int myProgress = 0; public static final int DIALOG_DOWNLOAD_PROGRESS = 0; ProgressBar myProgressBar; ProgressDialog mProgressDialog; List&lt;String&gt; items = new ArrayList&lt;String&gt;(); final Context myApp = this; // private static final String DIRECTORY = "/system/media/audio/ringtones/"; private static final String DIRECTORY = "/sdcard/download/"; // private MediaPlayer mp = new MediaPlayer(); List&lt;String&gt; Ringtones = new ArrayList&lt;String&gt;(); ArrayAdapter&lt;String&gt; adapter; TextView tv, empty; ExpandableListView exlv1; // ListView lv1; Boolean hasErrors = false; int currentPosition = 0; private static final String LOG_TAG = "TEST"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); self=this; setContentView(R.layout.main); refreshList(); } } public void refreshList() { File ringtones_directory = new File(DIRECTORY); if (!ringtones_directory.exists()) { AlertDialog.Builder ad = new AlertDialog.Builder(SongList.this); ad.setTitle("Directory Not Found"); ad.setMessage("Sorry! The ringtones directory doesn't exist."); ad.setPositiveButton("OK", null); ad.show(); hasErrors = true; } if (!ringtones_directory.canRead()) { AlertDialog.Builder ad = new AlertDialog.Builder(SongList.this); ad.setTitle("Permissions"); ad .setMessage("Sorry! You don't have permission to list the files in that folder"); ad.setPositiveButton("OK", null); ad.show(); hasErrors = true; } else { Ringtones = FindFiles(false); if (Ringtones.size() &lt; 1) { AlertDialog.Builder ad = new AlertDialog.Builder(SongList.this); ad.setTitle("Permissions"); ad.setMessage("Sorry! No ringtones exists in " + DIRECTORY + "."); ad.setPositiveButton("OK", null); ad.show(); Log.e(LOG_TAG, "No ringtones were found."); hasErrors = true; } } try { if (!hasErrors) { ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;( SongList.this, android.R.layout.test_list_item, Ringtones); ArrayList&lt;String&gt; GrouppList = new ArrayList&lt;String&gt;(); GrouppList.addAll(Ringtones); ArrayList&lt;ArrayList&lt;Rington&gt;&gt; colors = new ArrayList&lt;ArrayList&lt;Rington&gt;&gt;(); for (int i = 0; i &lt;= Ringtones.size(); i++) { ArrayList&lt;Rington&gt; color = new ArrayList&lt;Rington&gt;(); color = new ArrayList&lt;Rington&gt;(); color.add(new Rington("", "", true)); colors.add(color); } expListAdapter = new RingtoneAdapter(this, GrouppList, colors); exlv1 = (ExpandableListView) findViewById(R.id.expandableListView1); this.exlv1.setAdapter(this.expListAdapter); } } catch (Exception e) { Log.i(LOG_TAG, e.toString()); } } private List&lt;String&gt; FindFiles(Boolean fullPath) { final List&lt;String&gt; tFileList = new ArrayList&lt;String&gt;(); Resources resources = getResources(); // array of valid audio file extensions String[] audioTypes = resources.getStringArray(R.array.audio); FilenameFilter[] filter = new FilenameFilter[audioTypes.length]; int i = 0; for (final String type : audioTypes) { filter[i] = new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith("." + type); } }; i++; } FileUtils fileUtils = new FileUtils(); File[] allMatchingFiles = fileUtils.listFilesAsArray( new File(DIRECTORY), filter, -1); for (File f : allMatchingFiles) { if (fullPath) { tFileList.add(f.getAbsolutePath()); } else { tFileList.add(f.getName()); } } return tFileList; }// find fil @SuppressWarnings("unchecked") public List&lt;String&gt; loadArray(String filename) { try { FileInputStream fis = new FileInputStream(filename); GZIPInputStream gzis = new GZIPInputStream(fis); ObjectInputStream in = new ObjectInputStream(gzis); List&lt;String&gt; read_field = (List&lt;String&gt;) in.readObject(); in.close(); return read_field; } catch (Exception e) { e.getStackTrace(); } return null; } public Collection&lt;File&gt; listFiles(File directory, FilenameFilter[] filter, int recurse) { Vector&lt;File&gt; files = new Vector&lt;File&gt;(); File[] entries = directory.listFiles(); if (entries != null) { for (File entry : entries) { for (FilenameFilter filefilter : filter) { if (filter == null || filefilter.accept(directory, entry.getName())) { files.add(entry); Log.v(LOG_TAG, "Added: " + entry.getName()); } } if ((recurse &lt;= -1) || (recurse &gt; 0 &amp;&amp; entry.isDirectory())) { recurse--; files.addAll(listFiles(entry, filter, recurse)); recurse++; } } } return files; } public class FileUtils { public void saveArray(String filename, List&lt;String&gt; output_field) { try { FileOutputStream fos = new FileOutputStream(filename); GZIPOutputStream gzos = new GZIPOutputStream(fos); ObjectOutputStream out = new ObjectOutputStream(gzos); out.writeObject(output_field); out.flush(); out.close(); } catch (IOException e) { e.getStackTrace(); } } public File[] listFilesAsArray(File directory, FilenameFilter[] filter, int recurse) { Collection&lt;File&gt; files = listFiles(directory, filter, recurse); File[] arr = new File[files.size()]; return files.toArray(arr); } } } </code></pre> <p>The above code will list all the below contain extention files from sdcard you can change them according to your requirement Happy coding :Pragna</p> <p>this is <strong>mimetypes.xml</strong> inside the <code>res</code> folder</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;resources&gt; &lt;string-array name="audio"&gt; &lt;item&gt;aif&lt;/item&gt; &lt;item&gt;aifc&lt;/item&gt; &lt;item&gt;aiff&lt;/item&gt; &lt;item&gt;au&lt;/item&gt; &lt;item&gt;mid&lt;/item&gt; &lt;item&gt;mp3&lt;/item&gt; &lt;item&gt;ogg&lt;/item&gt; &lt;item&gt;snd&lt;/item&gt; &lt;item&gt;wav&lt;/item&gt; &lt;/string-array&gt; &lt;/resources&gt; </code></pre>
 

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