3

感谢您的关注。我是一个非常老的程序员,但绝对是Android/Java的新手。虽然我还没有找到一种方法使代码在这里变得丰富多彩)。Android ActivityNotFoundException未能捕捉OS 4.1.2中的Intent(适用于4.0.3)?

我开始一个活动打开了假/假扩展(MIME类型)的文件,所以我可以强制使用ActivityNotFoundException异常(测试)。

不知何故,我的三星Galaxy S3( OS 4.1.2)从未发生过这种异常。 Adobe Reader打开并且文件不是PDF的错误(它不是)。然而,在运行4.0.3的较旧的华硕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();     
} 

这有什么错blatent这段代码,将允许任意扩展什么那么曾经在ADOBE READER不断地抛出一个文件?我清除了我的默认设置(设置 - >应用程序管理器 - >重置)。我的一切都是在Adobe Reader上投掷的。

任何想法赞赏!谢谢!

回答

2
Intent intent = new Intent(); 

需要成为:

Intent intent = new Intent(Intent.ACTION_VIEW); 

你一直在拖延的数据和ActionCode进入的意图,但是你从来没有告诉它这是什么的一个意图。

+0

下一行没有配置? (intent.setAction(Intent.ACTION_VIEW))。我试过你的建议,它的工作!我想知道为什么setAction()没有正确配置它。无论哪种方式,它现在效果很好,谢谢! – omi

+0

'setAction()'方法用于将动作代码传递给Activity。如果你有一个可以执行多个操作的自定义活动,就可以使用它,你可以告诉它你需要做什么。您需要使用“ACTION_VIEW”活动创建一个新的Intent。 –

+0

也许只是在语言上过于新颖,“知道的人”会理解这似乎是一种细微差别。重载的构造函数必须简单地以不同的方式操作,如果你选择它的一个替代版本,比如像你那样指定活动,而不是无参数的构造函数。 setActivity()显然不同于在构造函数中设置它。尽我所能说的是,它确实修复了它。谢谢! – omi

相关问题