ご覧いただきありがとうございます。私は非常に古いプログラマーですが、Android/Java の初心者です。ここでコードをカラフルできれいにする方法をまだ見つけていませんが;)。
偽の/偽の拡張子 (MIME タイプ) を持つファイルを開くアクティビティを開始しているので、このActivityNotFoundException例外を強制できます (テストする)。
どういうわけか、この例外は私の Samsung Galaxy S3 ( OS 4.1.2 ) では決して起こりません。Adobe Reader が開き、ファイルが PDF ではない ( it's not ) というエラーが表示されます。ただし、4.0.3 を実行している古い ASUS Transformer タブレットでは、例外が適切にキャッチされます。
問題のコードは次のようになります。
// this file exists (check omitted)..
File docFile = new File("/path/to/file.bogusextension");
// intent
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
// getting doc Uri
Uri fileUri = Uri.fromFile(docFile);
// getting doc mimeType
MimeTypeMap mime = MimeTypeMap.getSingleton();
String extension = MimeTypeMap.getFileExtensionFromUrl(fileUrl);
String mimeType = mime.getMimeTypeFromExtension(extension);
intent.setDataAndType(fileUri, mimeType);
// this is for an adobe native extension, just getting FREContext
// in the class below and mapping functions
DocLauncherExtensionContext extensionContext = (DocLauncherExtensionContext) context;
Activity activity = extensionContext.getActivity();
try
{
activity.startActivity(intent);
}
catch (ActivityNotFoundException e)
{
Toast.makeText(context.getActivity(), "This never happens!", Toast.LENGTH_LONG).show();
}
このコードには、どんな拡張子のファイルでも常に Adobe Reader にスローされるような明らかな問題はありますか? デフォルトをクリアしました ([設定] -> [アプリケーション マネージャー] -> [リセット])。私が開始したすべてのアクティビティは、Adobe Reader に投げつけられるだけです。
どんな考えでも大歓迎です!ありがとうございました!