Android 基于文件类型的应用程序选择对话框

Android 基于文件类型的应用程序选择对话框,android,android-dialog,Android,Android Dialog,我正在尝试创建一个对话框,它将显示一个可用应用程序列表,以打开给定的文件类型 我一直在看关于stackoverflow的一些问题,这些问题与同一个问题有关,但由于缺乏答案,我迷失了方向。我特别关注这个问题: 我的跟进问题是: 如何处理列表 如何使用名称和图标显示可用的应用程序 当用户选择应用程序时,如何根据所选项目的ResolveInfo启动它 我找到了一个解决方案,它提供了可以打开给定mimetype的应用程序的完整列表。这不是最好的,因为我希望列表更加具体,只有几个应用程序(例如,如果它

我正在尝试创建一个对话框,它将显示一个可用应用程序列表,以打开给定的文件类型

我一直在看关于stackoverflow的一些问题,这些问题与同一个问题有关,但由于缺乏答案,我迷失了方向。我特别关注这个问题:

我的跟进问题是:

  • 如何处理
    列表
  • 如何使用名称和图标显示可用的应用程序
  • 当用户选择应用程序时,如何根据所选项目的ResolveInfo启动它

我找到了一个解决方案,它提供了可以打开给定mimetype的应用程序的完整列表。这不是最好的,因为我希望列表更加具体,只有几个应用程序(例如,如果它是我想打开的URL,则只显示浏览器),但可以达到这个目的

以下是我所做的:

File file = new File( "myFileLocation.txt" );
String extension = MimeTypeMap.getFileExtensionFromUrl( file.getPath() );
String type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);

Intent intent = new Intent();
intent.setAction( Intent.ACTION_VIEW );
intent.setDataAndType( Uri.fromFile( file ), type );    
context.startActivity( intent );

在startActivity PackageManager PackageManager=getPackageManager()之前添加此代码;列表活动=packageManager.QueryInputActivities(仅适用于意图、packageManager.MATCH\u默认值);布尔值isIntentSafe=activities.size()>0;如果(!isIntentSafe)toast(“没有适用于:\n”+文件名的应用程序”);其他的