感谢您的关注。我是一个非常老的程序员,但绝对是 Android/Java 的新手。虽然我还没有找到让代码变得丰富多彩和漂亮的方法;)。
我正在启动一个 Activity 来打开一个带有伪造/伪造扩展名(mime 类型)的文件,这样我就可以强制这个 ActivityNotFoundException 异常(测试)。
不知何故,我的 Samsung Galaxy S3 (OS 4.1.2) 从未发生过这种异常。 Adobe Reader 打开并错误提示该文件不是 PDF(不是)。但是,在运行 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 上?我已经清除了我的默认设置(设置->应用程序管理器->重置)。我 startActivity 的所有内容都只是扔给了 Adobe Reader。
任何想法表示赞赏!谢谢!
最佳答案
Intent intent = new Intent();
需要成为:
Intent intent = new Intent(Intent.ACTION_VIEW);
您将数据和 ActionCode 放入 Intent 中,但是您从未告诉它 Intent 是什么。
关于java - Android ActivityNotFoundException 未能捕捉到 OS 4.1.2 中的 Intent(适用于 4.0.3)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19147464/