If your app needs all your sd card file list & want to open corresponding application like Music player for .mp3 file, Gallery for .jpeg file, then you can use below activity. So lets go.
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
public class OpenFolderActivity extends Activity {
private File root;
private ArrayList<File> fileList = new ArrayList<File>();
private LinearLayout view;
ListView file_listView;
// Folder Directory
public static String FOLDER_PATH = "/sdcard/NCTB/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actiivty_file_list);
// give your folder path
// root = new File(FOLDER_PATH);
// getting SDcard root path
root = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath());
file_listView = (ListView) findViewById(R.id.file_listView);
file_listView
.setAdapter(new ArrayAdapter<File>(getApplicationContext(),
R.layout.list_item_file, getfile(root)));
file_listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int postion, long arg3) {
File myFile = new File(fileList.get(postion).getAbsolutePath());
try {
openFile(getApplicationContext(), myFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
fileList.add(listFile[i]);
getfile(listFile[i]);
} else {
// add more file type what you can
if (listFile[i].getName().endsWith(".pdf")
|| listFile[i].getName().endsWith(".jpg")
|| listFile[i].getName().endsWith(".jpeg")
|| listFile[i].getName().endsWith(".gif"))
{
fileList.add(listFile[i]);
}
}
}
}
return fileList;
}
public static void openFile(Context context, File url) throws IOException {
// Create URI
File file = url;
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
// Check what kind of file you are trying to open, by comparing the url
// with extensions.
// When the if condition is matched, plugin sets the correct intent
// (mime) type,
// so Android knew what application to use to open the file
if (url.toString().contains(".doc") || url.toString().contains(".docx")) {
// Word document
intent.setDataAndType(uri, "application/msword");
} else if (url.toString().contains(".pdf")) {
// PDF file
intent.setDataAndType(uri, "application/pdf");
} else if (url.toString().contains(".ppt")
|| url.toString().contains(".pptx")) {
// Powerpoint file
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
} else if (url.toString().contains(".xls")
|| url.toString().contains(".xlsx")) {
// Excel file
intent.setDataAndType(uri, "application/vnd.ms-excel");
} else if (url.toString().contains(".zip")
|| url.toString().contains(".rar")) {
// ZIP Files
intent.setDataAndType(uri, "application/zip");
} else if (url.toString().contains(".rtf")) {
// RTF file
intent.setDataAndType(uri, "application/rtf");
} else if (url.toString().contains(".wav")
|| url.toString().contains(".mp3")) {
// WAV audio file
intent.setDataAndType(uri, "audio/x-wav");
} else if (url.toString().contains(".gif")) {
// GIF file
intent.setDataAndType(uri, "image/gif");
} else if (url.toString().contains(".jpg")
|| url.toString().contains(".jpeg")
|| url.toString().contains(".png")) {
// JPG file
intent.setDataAndType(uri, "image/jpeg");
} else if (url.toString().contains(".txt")) {
// Text file
intent.setDataAndType(uri, "text/plain");
} else if (url.toString().contains(".3gp")
|| url.toString().contains(".mpg")
|| url.toString().contains(".mpeg")
|| url.toString().contains(".mpe")
|| url.toString().contains(".mp4")
|| url.toString().contains(".avi")) {
// Video files
intent.setDataAndType(uri, "video/*");
} else {
// if you want you can also define the intent type for any other
// file
// additionally use else clause below, to manage other unknown
// extensions
// in this case, Android will show all applications installed on the
// device
// so you can choose which application to use
intent.setDataAndType(uri, "*/*");
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
Layout : actiivty_file_list.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/file_listView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</RelativeLayout>
Custom list view item design : >>>
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="20sp" >
</TextView>