java - Android ActivityNotFoundException 未能捕捉到 OS 4.1.2 中的 Intent(适用于 4.0.3)?

标签 java android android-intent exception-handling android-4.2-jelly-bean

感谢您的关注。我是一个非常老的程序员,但绝对是 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();                 
}

这段代码是否有任何明显的错误,会允许一个带有任何扩展名的文件不断地被扔到 Adob​​e Reader 上?我已经清除了我的默认设置(设置->应用程序管理器->重置)。我 startActivity 的所有内容都只是扔给了 Adob​​e 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/

相关文章:

java - 使用@Async调用方法与在新线程中调用方法

java - HDFS文件使用

java - "Back button"不关闭 Activity

java - 如何在一个类中使用来自不同 xml 文件的按钮

android - 在 Android M 上,如何配置 "direct-share"能力(图像、文本),以及如何查询项目?

android - 使用数据 URI 方案而不是 URL 打开浏览器

java - 无法通过Nginx反向代理在Tomcat上远程部署

java - 如何使用 Netbeans 在 JFrame 中显示文本?如何清除 JFrame 中的文本?

安卓 : How to send data to remote database without using PHP or any webservices?

java - 如何使用我的方案隐式打开我的应用程序?