Android는 Word, Excel, PPT, PDF 등의 문서를 타사 소프트웨어로 엽니다.
6666 단어 엉터리 필치
첫째, 모두 앱에서 열고 텐센트에 접속할 수 있는 TBS(시도는 하지 않음), 링크를 참고하여 TBS 글에 접속할 수 있습니다
둘째, PDF는 안드로이드 pdfViewer를 사용하여 앱에서 다운로드하여 열면 되고,Word, Excel을 다운로드한 후 제3자 소프트웨어로 바로 이동하여 열면 된다.
나는 두 번째 방법을 선택했으니 나중에 틈이 나면 첫 번째 해결 방법을 다시 시도해 보자.
상기 두 가지 방법은 모두 먼저 파일을 다운로드한 다음에 열어서 조회해야 한다. 다운로드한 해결 방안은 여기서 설명하지 않는다. 인터넷에 매우 많다. 내가 사용한 것은 랴오쯔요의 제3자 프레임워크인 OkDownload이다. 랴오쯔요 GitHub은 배울 수 있고 개인적인 느낌은 그래도 매우 유용하다.
여기에는 주로 열기 방법과 주의해야 할 점을 기록하고 싶다.
Google 공식 설명에 따르면 Google 7.0에 개인 디렉터리 접근 권한이 추가되었습니다. 개인 파일의 안전성을 높이기 위해 안드로이드 7.0 또는 더 높은 버전의 응용 프로그램에 대한 개인 디렉터리 접근이 제한되었습니다. (0700)이 설정은 개인 파일의 메타데이터 유출을 방지합니다.따라서 다운로드한 파일 저장 경로에 접근할 때 시스템 버전에 파일 읽기 권한을 추가하는 것을 동태적으로 판단하고 FileProvider로 경로를 가져와야 한다. 그렇지 않으면 FileUriExposedException 이상을 촉발할 수 있다.
다음은 파일 유형을 여는 세 가지 쓰기 방법을 보여 줍니다.
private void openFileIntent(String path, String type) {
if (!StringUtils.isNullOrWhiteSpace(path)) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
Uri uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
uri = FileProvider.getUriForFile(getActivity(), getApplicationContext().getPackageName() + ".provider", new File(path));
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);// ,
} else {
uri = Uri.fromFile(new File(path));
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
if (StringUtils.isEqual(type, "doc")) {
intent.setDataAndType(uri, "application/msword");
this.startActivity(intent);
this.finish();
} else if (StringUtils.isEqual(type, "xls")) {
intent.setDataAndType(uri, "application/vnd.ms-excel");
this.startActivity(intent);
this.finish();
} else if (StringUtils.isEqual(type, "ppt")) {
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
this.startActivity(intent);
this.finish();
}
} catch (Exception e) {
MessageUtils.showCusToast(getActivity(), " ");
finish();
}
}
}
setDataAndType 설정에 대한 값을 기록합니다.
private final String[][] MIME_MapTable = {
//{ ,MIME }
{".3gp", "video/3gpp"},
{".apk", "application/vnd.android.package-archive"},
{".asf", "video/x-ms-asf"},
{".avi", "video/x-msvideo"},
{".bin", "application/octet-stream"},
{".bmp", "image/bmp"},
{".c", "text/plain"},
{".class", "application/octet-stream"},
{".conf", "text/plain"},
{".cpp", "text/plain"},
{".doc", "application/msword"},
{".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},
{".xls", "application/vnd.ms-excel"},
{".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},
{".exe", "application/octet-stream"},
{".gif", "image/gif"},
{".gtar", "application/x-gtar"},
{".gz", "application/x-gzip"},
{".h", "text/plain"},
{".htm", "text/html"},
{".html", "text/html"},
{".jar", "application/java-archive"},
{".java", "text/plain"},
{".jpeg", "image/jpeg"},
{".jpg", "image/jpeg"},
{".js", "application/x-javascript"},
{".log", "text/plain"},
{".m3u", "audio/x-mpegurl"},
{".m4a", "audio/mp4a-latm"},
{".m4b", "audio/mp4a-latm"},
{".m4p", "audio/mp4a-latm"},
{".m4u", "video/vnd.mpegurl"},
{".m4v", "video/x-m4v"},
{".mov", "video/quicktime"},
{".mp2", "audio/x-mpeg"},
{".mp3", "audio/x-mpeg"},
{".mp4", "video/mp4"},
{".mpc", "application/vnd.mpohun.certificate"},
{".mpe", "video/mpeg"},
{".mpeg", "video/mpeg"},
{".mpg", "video/mpeg"},
{".mpg4", "video/mp4"},
{".mpga", "audio/mpeg"},
{".msg", "application/vnd.ms-outlook"},
{".ogg", "audio/ogg"},
{".pdf", "application/pdf"},
{".png", "image/png"},
{".pps", "application/vnd.ms-powerpoint"},
{".ppt", "application/vnd.ms-powerpoint"},
{".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"},
{".prop", "text/plain"},
{".rc", "text/plain"},
{".rmvb", "audio/x-pn-realaudio"},
{".rtf", "application/rtf"},
{".sh", "text/plain"},
{".tar", "application/x-tar"},
{".tgz", "application/x-compressed"},
{".txt", "text/plain"},
{".wav", "audio/x-wav"},
{".wma", "audio/x-ms-wma"},
{".wmv", "audio/x-ms-wmv"},
{".wps", "application/vnd.ms-works"},
{".xml", "text/plain"},
{".z", "application/x-compress"},
{".zip", "application/x-zip-compressed"},
{"", "*/*"}
};