ここで同様の質問をすべて確認しましたが、何が間違っているのか一生わかりません。
ファイルブラウザのような、さまざまなファイルを起動しようとするアプリケーションを作成しました。ファイルがクリックされると、関連する MIME タイプに基づいてプログラムを起動しようとするか、[起動するアプリケーションを選択] ダイアログが表示されます。
起動に使用しているコードは次のとおりです。
File file = new File(app.mediaPath() + "/" +_mediaFiles.get(position));
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
myIntent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(myIntent);
これは失敗し、次のエラーが生成されます。
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }
たとえば、OI File Manager をインストールすると、このエラーがスローされる代わりに開き、その中から同じファイルをクリックすると、適切なダイアログが起動します。
その特定のファイルの MIME タイプが失敗することに気付きましたが、他の MIME タイプ.zip
は値を返します。
MIME タイプが null の場合に、ユーザーが選択できるダイアログを呼び出す何かが欠けていますか?
.setData
MIMEタイプを設定せず、成功しないだけで使用するなど、アプリを起動する他のバリエーションを試しました。
私がやりたいアクションは、アプリが起動するアプリケーションに関連付けられている場合、ユーザーがファイルをクリックすることです。そうでない場合、ユーザーはアプリのリストを含む「Complete action using」ダイアログを取得します。
アドバイスをありがとう。