2015-12-03 74 views
0

我想打开一个文件让我们说xxx.pdf在特定的查看器中。我正在使用查看器的信息使用第三方应用的软件包名称打开文件

List<ResolveInfo> resolveInfoList = activity.getPackageManager() 
              .queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 

ResolveInfo提供了支持查看器的完整信息。从那里我得到包名称,活动等。

现在我想使用包名称启动文件。我正在尝试下面的代码。

Intent supportedAppIntent = packageManager.getLaunchIntentForPackage(packageName); 
     supportedAppIntent.setAction(ACTION_VIEW); 
     supportedAppIntent.setDataAndType(Uri.fromFile(file), contentType); 
     activity.startActivity(supportedAppIntent); 

但它只打开应用程序,而不是文件。

+0

可能问题是意图 - 过滤器没有解决。所以首先检查使用IntentChooser应用程序出现或不在可用的应用程序列表,这是可以打开查看pdf文件类型 –

+0

应用程序可用,因为我从queryIntentAcitivities(),我可以得到所有的细节,应用程序也启动。但问题是,它不打开文件。理想情况下应该通过打开文件启动应用程序。 –

回答

0

我找到了答案。缺少行是intent.setClassName(packageName, className);

的className你可以从resolveInfo.activityInfo.name;

获得它下面是完整的代码。

Intent intent = new Intent(ACTION_VIEW); 
       intent.setClassName(packageName, classname); 
       intent.setDataAndType(Uri.fromFile(file), contentType); 
       activity.startActivity(supportedAppIntent); 
相关问题