Android ActivityNotFoundException无法捕获OS 4.1.2中的Intent(适用于4.0.3)?

时间:2013-10-02 21:52:28

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

谢谢你看看。我是一个非常老的程序员,但对Android / Java来说是绝对的新手。虽然我还没有找到一种方法可以使代码变得丰富多彩而又很漂亮;)。

我正在开始一个活动来打开一个伪造/假扩展(mime类型)的文件,所以我可以强制执行 ActivityNotFoundException 异常(测试)。

不知何故,这个异常从未发生在我的三星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中不断被抛出?我已经清除了我的默认设置(设置 - >应用程序管理器 - >重置)。我开始的一切活动只是在Adobe Reader上投掷。

任何想法都赞赏!谢谢!

1 个答案:

答案 0 :(得分:2)

Intent intent = new Intent();

需要成为:

Intent intent = new Intent(Intent.ACTION_VIEW);

您将数据和ActionCode放入intent中,但是您从未告诉过它是什么意图。