2015-12-03 93 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); 
相關問題