9

我有一个应用程序,用户可以在其中上传带有任何 exetention 的文件(.png.mp3.txt.pdf.bmp.apk等)

简而言之-->** 带有任何 exe 的文件..!**

这些文件 r 显示在列表视图中。

当用户从列表视图意图中“点击”或“单击”项目时,将调用 ( android.content.Intent.ACTION_VIEW),它应该打开安装在设备中的相应应用程序。

例如

如果用户点击nature.png然后intent将被调用并建议应用程序,如Gallery、PS Touch..etc(如屏幕截图1所示

如果用户单击 book.pdf,则会调用意图并建议 MuPdf、Polaris Office、apv..etc 等应用程序(如屏幕截图2所示

对于 .txt,.pdf,.png,.jpg - 我已经通过 set mime type 解决了这个问题intent.setDataAndType(Uri.fromFile(file), mime);

适用于 URL

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(https://www.google.co.in/));

它运行良好,但对于文件扩展名的其余部分,我仍然感到困惑 - 该怎么办?怎么办?

我已经四处寻找,但无法得到满意的答案..!

我的问题:

  1. 我如何为任何文件扩展名编写代码,以便它调用安装在设备中的相应应用程序?
  2. 如何在 XML 中定义自定义文件扩展名?
4

3 回答 3

8

以下代码适用于每种文件类型:

try {
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(file), fileMimeType);
    startActivity(intent);
} catch (ActivityNotFoundException e) {
    // no Activity to handle this kind of files
}

当然,Activity系统中应该有一个知道如何处理某种类型的文件。希望这可以帮助。

于 2013-02-21T11:30:27.263 回答
1

指向您问题的第一部分:

try
{
  Intent intent = new Intent(Intent.ACTION_VIEW, uri);
  startActivity(intent);
}
catch (ActivityNotFoundException e)
{
  //tel the user to install viewer to perform this action
}

无需指定类型。它将从数据 URI 中获取。

于 2013-02-21T11:31:53.820 回答
0
public void openFile() {
    try {
        File file = new File(G.DIR_APP + fileName);
        fileExtension = fileName.substring(fileName.lastIndexOf("."));
        Uri path = Uri.fromFile(file);
        Intent fileIntent = new Intent(Intent.ACTION_VIEW);
        fileIntent.setDataAndType(path, "application/" + fileExtension);
        startActivity(fileIntent);
    } catch (ActivityNotFoundException e) {
        Toast.makeText(G.currentActivity, "Cant Find Your File", Toast.LENGTH_LONG).show();
    }

}
于 2016-08-04T02:10:43.393 回答