내 안드로이드 앱에 다른 유형의 파일을 표시하려고하는데 PDF 파일에서만 작동하고 다른 유형의 파일을 표시하려고 할 때만 작동했습니다. 다음과 같은 오류가 발생합니다.
PDF를 표시 할 수 없습니다. 잘못된 파일 형식입니다.
다음은 내 코드의 일부입니다.
else if (currentFile.toString().contains(".pdf")) {
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".PDF");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(currentFile), mime);
startActivityForResult(intent, 10);
} else if (currentFile.toString().contains(".doc")||currentFile.toString().contains(".docx")) {
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".doc");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(currentFile), mime);
startActivityForResult(intent, 10);
} else if (currentFile.toString().contains(".jpg") || currentFile.toString().contains(".jpeg") || currentFile.toString().contains(".png")){
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".jpg");
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(currentFile), mime);
startActivityForResult(intent, 10);
}
직접 솔루션을 찾을 수 있으며 여기에 내가 사용한 코드 스 니펫이 있습니다.
private void openFile(File currentFile, String fileFormat) {
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(currentFile),fileFormat);
startActivity(intent);
}
이 방법을 다음과 같이 호출했습니다.
...........
} else if (currentFile.toString().contains(".pdf"))
openFile(currentFile,"application/pdf");
else if (currentFile.toString().contains(".doc") || currentFile.toString().contains(".docx"))
openFile(currentFile,"application/msword");
else if (currentFile.toString().contains(".jpg") ||
currentFile.toString().contains(".jpeg") || currentFile.toString().contains(".png"))
openFile(currentFile,"image/jpeg");
else if(currentFile.toString().contains(".ppt") || currentFile.toString().contains(".pptx"))
// Powerpoint file
openFile(currentFile,"application/vnd.ms-powerpoint");
else if(currentFile.toString().contains(".xls") || currentFile.toString().contains(".xlsx"))
// Excel file
openFile(currentFile, "application/vnd.ms-excel");
else if(currentFile.toString().contains(".zip") || currentFile.toString().contains(".rar"))
// WAV audio file
openFile(currentFile,"application/x-wav");
else if(currentFile.toString().contains(".rtf"))
// RTF file
openFile(currentFile,"application/rtf");
else if(currentFile.toString().contains(".wav") || currentFile.toString().contains(".mp3"))
// WAV audio file
openFile(currentFile,"audio/x-wav");
else if(currentFile.toString().contains(".gif"))
// GIF file
openFile(currentFile,"image/gif");
else if(currentFile.toString().contains(".txt"))
// Text file
openFile(currentFile,"text/plain");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다