2016-10-16 11 views
0

私は、選択したファイルを開くために使用できるアプリの概要をユーザーに伝えようとしています。次のコードは正常に動作しません。ファイルを開くためにアプリリストを表示する方法

String ext = MimeTypeMap.getFileExtensionFromUrl(file2open); 

     String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext); 

     Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.parse(file2open), mime); 
     intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
     startActivity(intent); 

.txtファイルが選択されている場合は、2つのアプリケーションのリストが表示されます。しかし、彼らの誰も正しいものではありません。 .pdfファイルが選択されている場合、私の電話では、pdfリーダーが起動されますが、アプリケーションのみが起動します。ファイルが開かれていません。たとえば、ファイル名に拡張子が含まれていない場合など、デバイスにインストールされているすべてのアプリケーションの一覧を表示してユーザーに選択させるにはどうすればよいですか?

+0

だった「しかし、彼らの誰もが正しいものではありません」 - あなたは何を意味するかをより詳細に説明してください。 "ファイルが開かれていません" - おそらく他のアプリにはこのコンテンツへの読み取りアクセス権がありません。あるいは、おそらく 'file2open'が無効です。 「デバイスにインストールされているすべてのアプリケーションをリストに表示して、ファイル名に拡張子が含まれていないなど、ユーザーが選択するようにするにはどうすればよいですか? - できません。何らかの形でそのコンテンツのMIMEタイプを決定する必要があります。 – CommonsWare

答えて

0

は解決:それは

intent.setDataAndType(Uri.fromFile(f), mime); 

代わりの

intent.setDataAndType(Uri.parse(file2open), mime); 
関連する問題