gpt4 book ai didi

android - 在 Intent 中显示特定类型的应用程序

转载 作者:搜寻专家 更新时间:2023-11-01 08:50:26 25 4
gpt4 key购买 nike

我有一个在 webView 中显示结果的应用程序。结果可能包括 .pdf、.ps、.dwf、.kml、.kmz、.xls、.ppt、.doc、.docx、.rtf 和 .swf 等格式
现在用户点击 .pdf 类型链接,我想显示可以支持 pdf 格式的应用程序,如“google docs”、“pdf 阅读器”等。同样,当用户点击任何 .swf 文件时,然后应用程序支持 swf 文件,如“swf 播放器”在 intent 中列出。
我有这样的下载监听器:

webView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setDataAndType(Uri.parse(url).normalizeScheme(), Intent.normalizeMimeType(mimetype));
startActivity(Intent.createChooser(intent, "Open link via..."));
}
});


但我没有得到预期的结果。
如何实现?

我不想先下载文件然后打开它。此外,我避免使用这种方法:
webView.loadUrl("http://docs.google.com/gview?embedded=true&url=http://example.com/xyz.pdf");

最佳答案

我在我的项目中使用了类似的东西,所以只需将您的链接/下载文件附加到它:

SharedMethods.openFile(getActivity(), new File(filePath));

和我的SharedMethods.openFile:

public static void openFile(Context context, File url) throws IOException {
Uri uri = Uri.fromFile(url);

Intent intent = new Intent(Intent.ACTION_VIEW);
if (url.toString().contains(".doc") || url.toString().contains(".docx")) {
intent.setDataAndType(uri, "application/msword");
} else if(url.toString().contains(".pdf")) {
intent.setDataAndType(uri, "application/pdf");
} else if(url.toString().contains(".ppt") || url.toString().contains(".pptx")) {
intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
} else if(url.toString().contains(".xls") || url.toString().contains(".xlsx")) {
intent.setDataAndType(uri, "application/vnd.ms-excel");
} else if(url.toString().contains(".rtf")) {
intent.setDataAndType(uri, "application/rtf");
} else if(url.toString().contains(".gif")) {
intent.setDataAndType(uri, "image/gif");
} else if(url.toString().contains(".jpg") || url.toString().contains(".jpeg") || url.toString().contains(".png")) {
intent.setDataAndType(uri, "image/jpeg");
} else if(url.toString().contains(".txt")) {
intent.setDataAndType(uri, "text/plain");
} else if(url.toString().contains(".odt")) {
intent.setDataAndType(uri, "application/vnd.oasis.opendocument.text");
} else if(url.toString().contains(".ods")) {
intent.setDataAndType(uri, "application/vnd.oasis.opendocument.spreadsheet");
} else if(url.toString().contains(".wps")) {
intent.setDataAndType(uri, "application/vnd.ms-works");
} else {
intent.setDataAndType(uri, "*/*");
}

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}

希望对您有所帮助。

关于android - 在 Intent 中显示特定类型的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com