Open Files (pdf , Mp3 , Mp4 , ...) When Clicking On The Recyclerview
I have a RecyclerView that shows the list of files exist in the app directory . Now, when user click on a particular row , that file will open. This is the Screenshot of my Recy
Solution 1:
This is the Best Solution for this work , (Source)
// =========================== ViewHolder ==========================publicclassViewHolderextendsRecyclerView.ViewHolder implementsView.OnClickListener {
private TextView txtTitle;
private ImageView imgDelete;
publicViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
txtTitle = (TextView) itemView.findViewById(R.id.txt_file_title);
imgDelete = (ImageView) itemView.findViewById(R.id.img_delete_row_show);
}
@OverridepublicvoidonClick(View v) {
StringselectedFilePath= Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/my.package.name/files/downloaded/" + txtTitle.getText().toString();
Filefile=newFile(selectedFilePath);
try {
FileOpen.openFile(v.getContext(),file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
And This is the Helper class for handling all formats :
publicclassFileOpen {
publicstaticvoidopenFile(Context context, File url)throws IOException {
// Create URI
File file=url;
Uriuri= Uri.fromFile(file);
Intentintent=newIntent(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 fileif (url.toString().contains(".doc") || url.toString().contains(".docx")) {
// Word document
intent.setDataAndType(uri, "application/msword");
} elseif(url.toString().contains(".pdf")) {
// PDF file
intent.setDataAndType(uri, "application/pdf");
} elseif(url.toString().contains(".ppt") || url.toString().contains(".pptx")) {
// Powerpoint file
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
} elseif(url.toString().contains(".xls") || url.toString().contains(".xlsx")) {
// Excel file
intent.setDataAndType(uri, "application/vnd.ms-excel");
} elseif(url.toString().contains(".zip") || url.toString().contains(".rar")) {
// WAV audio file
intent.setDataAndType(uri, "application/x-wav");
} elseif(url.toString().contains(".rtf")) {
// RTF file
intent.setDataAndType(uri, "application/rtf");
} elseif(url.toString().contains(".wav") || url.toString().contains(".mp3")) {
// WAV audio file
intent.setDataAndType(uri, "audio/x-wav");
} elseif(url.toString().contains(".gif")) {
// GIF file
intent.setDataAndType(uri, "image/gif");
} elseif(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) {
// JPG file
intent.setDataAndType(uri, "image/jpeg");
} elseif(url.toString().contains(".txt")) {
// Text file
intent.setDataAndType(uri, "text/plain");
} elseif(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);
}
}
Solution 2:
You need to use the following code inside your onClick(View v) method
//For pdf file
file = newFile ("/mnt/sdcard/test.pdf");
Intentintent=newIntent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
// for mp3 file
file = newFile ("/mnt/sdcard/test.mp3");
Intentintent=newIntent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "audio/*");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Set the path of the file in the file object and put up the appropriate MIME type as the second parameter to the intent.setDataAndType() method and you are good to go
Post a Comment for "Open Files (pdf , Mp3 , Mp4 , ...) When Clicking On The Recyclerview"